I’m sure that if you read this contemporarily, you’ll recognize that the headline is a reflection on the Twitter thread about 10x engineers. No need to review that now — I’m simply linking it for posterity. While it is relevant to ask what kind of cultural background and selection bias could lead to such a bad misunderstanding of software development, that’s not what I want to write about. Instead, it prompted the headline. Great software is created by great teams. But how do you recognize that team? Better yet, how do you intentionally build such a team? Can a team be a 10x team? Yes!
I’ve had the good fortune to work in and with more than my fair share of excellent software teams, and have spent a very large part of my professional life in developing such teams — as a team member, leader, and as an advisor. In that time, several features have stood out. This list is obviously from the point of view of effective performance in building software products — groups of people can be great in many other respects, but those are other conversations to be had.
Great teams are small. Despite the individuals, it’s simply not possible to create a highly performing, cohesive and large team, because the communication overheads of large teams rapidly dissipate the performance advantage they may have. I’ve never seen a great team larger than 10 people. On the other hand, 10 people can easily make two great 5-person teams, with combined productivity far exceeding expectations.
Great teams are also focused, as well as supported to maintain that focus. It’s extremely difficult to maintain multiple unrelated goals at once, and neither teams nor individuals should be expected to be dividing their attention in such a way. Most products and business do have such goals, and until the time when the business can support having several teams each owning their own area of focus, leadership is needed to set one priority at a time. Lack of focus is an easy trap to fall into, and something which should be a regular review item.
On the contrary, great teams are able to consider several related but conflicting goals and metrics in their work. Everything is a matter of balance — and so is engineering contributions. While experience builds the capability for individuals to do this independently, great teams have diversity precisely so that the perspectives could bring those conflicting goals into light early.
Great teams are autonomous. Not entirely self-reliant, nor independent from the rest of the company, but capable and authorized to form their own objectives, make and execute decisions, and to carry the responsibility for their area of focus. Great companies trust teams with this autonomy, because without the trust, even a good team will never become great.
Great teams don’t simply accept or welcome diversity — they seek it in both themselves as well as external feedback. Don’t get confused by surface only. A great team may look different, or the same, what matters is how they think and how do they respond to data which challenges their earlier understanding. Great companies help their teams collect and process diverse input.
Great teams support each other, both between team members, and towards their adjacent teams and the wider company. Fundamentally it is this support, which builds the organizational culture to create more great teams. If you have the chance to do so, also look at the incentive structure of the company. How does the company reward teams going above and beyond not in individual “heroic work”, but in supporting others?
Great teams teach. They’re good at onboarding new team members, want to communicate about their work in both written and personal communications, and eager to share their learning with others. Great companies give opportunities for teams to teach.
Great teams learn. This takes many forms. Learning new technologies, when current ones don’t really seem to work for the task, learning about their business domain from customer feedback, learning of their product via the metrics they apply to it, and learning methodologies to make them better as a team. Great companies enable and expect their teams to learn.
Great teams trust each other. Especially when meeting inexperienced teams, I come across the misunderstanding that team members need to be friends, or spend a lot of time together, even outside work. That’s not at all necessary or even helpful. Certainly, team members should know each other well enough to understand their perspective and life situation. That’s necessary for interpersonal trust. Beyond that, friendship is an optional extra, but trust is mandatory. Can I rely on my team member to have my back in a difficult situation? Will I get support from them when needed? Those are the questions every great team answers with an across-the-board “of course”.
Great teams innovate. Let me spell it out: they do things which have not been done before, taking on a risk of failure. Try for goals often too big to reach, on the first try, at least. Set expectations for themselves that will be difficult to meet. But because they are great teams, they also learn while doing so. Great companies understand their great teams are taking those risks, help teams choose their risks appropriate for the company’s needs, and leverage the learning to move the company forward.