When it comes to building exceptional software development teams, there are many theories out there. A commonly accepted one being the “two pizza rule” frequently attributed to Jeff Bezos. The thought is that the ideal team size is no larger than can be fed by two pizzas.
One of the main arguments for this is Metcalfe’s Law, effectively stating that the complexity of communication within a team is proportional to the square of the number of members of the team. This complexity directly impacts the speed of every aspect of collaboration within a team.
Another commonly accepted principle for software teams is the idea of the self-organizing team, whereby teams are given a high amount of autonomy to decide as a group how they will work together – including distribution of responsibilities, managing and monitoring progress, and even prioritizing work. There are numerous benefits attributed to this approach including agility and efficiency, better outcomes due to a higher level of ownership and satisfaction of team members, and even higher quality.
It’s hard to disagree with either of these ideas; but I’d argue that the single biggest success factor in most projects (software or otherwise) isn’t the size of the team or how it is organized. It really comes down to the people on the team.
Success isn’t as simple as choosing a small team and empowering them. The individuals on the team are what matters most.
While characteristics such as experience and skill set immediately come to mind when you think of who should be on a team, there’s more to it than the bullets you can read on a resume.
We’ve all worked with those individual contributors who are simply 10x more productive than the rest of the team. These “rockstars” tend to have a multiplier effect, raising the level of everyone on the team via mentorship, clear communication, introducing new tools/best practices, or even just bringing a contagious energy to the group.
It’s important to note that these traits don’t necessarily correlate with the seniority of the individual. I’ve worked with plenty of “junior” team members who do a phenomenal job at knocking down barriers and simply getting things done. I’ve also worked with many more senior individuals who find themselves dead in the water when a novel challenge comes up.
While optimal size and organization of a team are important, it’s critical to recognize that these can only serve to amplify (or constrain) the capabilities of the individuals on the team. If a team isn’t equipped to solve the problems in front of them, all of the organization and empowerment in the world aren’t going to make them successful. Even the best recipes fall flat without good ingredients. As Jim Collins argues in his book Good To Great, “First begin with the who, and then worry about the what”.
So how do you identify those individuals that are the real needle movers? The ones who raise everyone’s game? Here are a few key traits to look for:
- The person you always go to solve a time-sensitive or mission critical issue.
- The person who never seems to be “blocked.” These people suggest solutions along with every problem that they raise. They can solve most issues themselves (and quickly) but are also resourceful and know when to seek help and where to go.
- The person who tends to clarify things and bring focus in group settings. These people tend to have a great sense of the big picture and are great communicators. They understand the “why” behind the work as well as the interdependencies between workstreams. They help the team organize work in the most efficient way.
- The person who comes up to speed quickly. Whether it’s working in an unfamiliar codebase, troubleshooting a new issue, or consuming a new requirement.