Enjoyed this book a lot. The top down globalization section really stood out to me. Feel like I have always worked in those environments, where performance was assessed at the individual level and then high performing individuals are moved around to lower performing teams to try and remediate. Viewing performance at the team level and trying to optimize for that (and then not messing with it) would take a lot of discipline but seems rewarding.
Assorted notes below.
Organizations
Team Sizing
- managers should support 6-8 engineers
- managers supporting fewer than 4 engineers tend to function as TLMs
- managers of managers should support 4-6 managers
- two-tier 24/7 support requires 8 engineers
- small teams less than 4 people are not teams
- keep innovation and maintenace together
- to create a new team, grow an existing team to 8-10, then split to two teams of 4-5
- add people all at once if possible, to reduce total amount of time teams need to “jell”
- Avoid
Team States
State: Falling behind. Solution: Add people
State: Treading water. Solution: Reduce WIP
State: Repaying debt. Solution: Add time
State: Innovating. Solution: Add slack
Against Top Down Global Optimization
- Teams take a long time to jell and become productive
- Moving people off a productive team to a less productive team now leaves you with two unproductive teams. Moving people resets the jelling clock
- Fixed costs are high (standup, on call, planning, slack)
Productivity
Developer Feedback Loop
- Pull requests become ready commits based on code review rate
- Ready commits become deployed commits based on deployment rate
- Deployed commits become incidents based on incident rate
- Incidents become reverted commits at recovery rate
- reverted commits become new pull requests at debug rate
Setting Goals
- Target
- Baseline
- Trend
- Time frame
Example: In Q3, we will reduce rendering time from 600ms to 300ms. In Q2, rendering time increased from 500ms to 600ms.
Culture
Distributing Opportunity
- Have rubrics everywhere
- Wisely selecting project leaders
- Have xplicit budgets
- Nudge involvement
- Education programs
Useful Metrics
- Retention
- Usage rate
- Level distribution
- Time at level
Selecting Project Leads
The more people capable of leading a project at your organization is a signal of health. To make it so more people can lead, there are many strategies outlined.
The Hero Programmer
When projects are behind, the temptation is just to “work harder”. But lack of hard work is not often the problem. Creating the hero programmer doesn’t work because it leads to burnout and they eventually quit or get frustrated and stop being productive. Meanwhile you alienated your other programmers.
Projects fall behind one sprint at a time. Fixing that takes time too.