Five Principles of High-Performing Teams

High-performing software teams often have many things in common, but over the years there are five things in particular I’ve come to value:

  1. Focus—a team that tries to do everything will find their progress towards any one thing is slow and painful. Teams are more effective when everyone is working towards a few common goals.

  2. Slack—a team that over-commits will find themselves slipping on timeline expectations with stakeholders when “unexpected” things inevitably come up. E.g., if a team plans to spend 100% of their capacity in a given development cycle working on new features, that is sure to meet friction when another team needs support or something breaks in production.

  3. Psychological safety—team members need to feel comfortable expressing constructive feedback and healthy disagreement without repercussions. Good ideas can from anyone, and it’s important that everyone feels heard and part of the team.

  4. Proactive, not reactive—unexpected issues will always happen, but high-performing teams tend to find ways to spend more of their time being proactive rather than reactive. This is especially important when it comes to learning and knowledge sharing as teams need to be intentional about making time to “sharpen the axe”.

  5. Culture of “continuous”—instead of attempting to “boil the ocean” with large, unwieldy changesets that are painful to review and slow to get merged, high-performing teams focus on continuously shipping small, yet meaningful increments to production. This may feel slower at first since less work is being shipped at once, but as the saying goes, “slow is smooth, and smooth is fast”.