nus-cs3281 / 2024

1 stars 2 forks source link

Book: SE@Google Ch: 7 Knowledge Sharing #30

Open kaixin-hc opened 9 months ago

kaixin-hc commented 9 months ago

Book: SE@Google Chapter: 7 Knowledge Sharing

Summary:

Challenges to learning

  1. Lack of psychological safety - People are afraid to take risks or admit mistakes
  2. Information islands - Knowledge fragmentation between different parts of an organisation, resulting in duplicated effort, potential clashes, and incomplete knowledge of the bigger picture
  3. Single points of failure, and...
  4. All or nothing expertise - some people know everything and some people know nothing
  5. Mimicry without understanding (Not stated, but perhaps because of 1 and 4)
  6. "Haunted Graveyards" - code no one will touch in case something goes wrong.

Philosophy / principles

A mix of knowledge sharing is likely necessary

Psychological safety is the "most important part of an effective team" - making people feel comfortable asking questions, being wrong, and learning new things. Honesty about what you don't understand should be encouraged. Always be asking new questions.

Mentors at Google are assigned to new googlers who are not on the same team, to allow the new joiner to ask for help in tricky situations. It is a way to formalize and facillitate learning, but learning should be done from everyone in a healthy team

The need for psychological safety is amplified in group / public settings, so the way to respond should strive to be helpful, patient and kind, with everyone working to find a soln together and the asker is not chastised but guided in the correct direction. Some don'ts...

  1. No feigned surprise (makes people feel bad for not knowing
  2. No "well actuallys" (pedantic corrections about grandstanding)
  3. No back-seat driving (commit to the conversation
  4. No 'isms' ("It's so easy my grandmother could do it!")

Sharing knowledge...

Office Hours

Tech talks and Classes

Documentation

WRT promoting documentation / and in general knowledge sharing, take note of incentives -- what sort of behavior is being rewarded? For example, is making noncode contributions going to get me a better grade in this class?

Another avenue: peer acknowledgement.

Some cool google specific tools:

Readability

Google has a culture of code review where there are "Readability Reviewers" who comment on style and best practices. This allows google to standardise the code accross their organisation and ensure it is readable and easy to learn from across all teams, and new hires and all googlers learn from this personalised code review. However, since readability reviewers are all volunteers mentoring at google, about 1-2% at most, the scale does slow down code pace and some engineers feel it is not worthwhile. But the Engineering Productivity research team found...

The EPR team performed in-depth studies of readability, including but not limited to whether people were hindered by the process, learned anything, or changed their behavior after graduating. These studies showed that readability has a net positive impact on engineering velocity. CLs by authors with readability take statistically significantly less time to review and submit than CLs by authors who do not have readability.22 Self-reported engineer satisfaction with their code quality—lacking more objective measures for code quality—is higher among engineers who have readability versus those who do not. A significant majority of engineers who complete the program report satisfaction with the process and find it worthwhile. They report learning from reviewers and changing their own behavior to avoid readability issues when writing and reviewing code.

CONCLUSION / SUMMARY THOUGHTS