In the software world there is a strong idea of finding rockstars and ninjas - the so-called 10x developers. These are the near legendary developers so powerful they accomplish ten times as much as a regular developer.
The problem is, many of these 10x developers tend to also be cowboy coders:
Cowboy coding is software development where programmers have autonomy over the development process. This includes control of the project's schedule, languages, algorithms, tools, frameworks and coding style.
A cowboy coder can be a lone developer or part of a group of developers working with minimal process or discipline.
source: wikipedia
Because they work so fast, quality, documentation and cross-training often take a backseat to their late-night, caffeine-fueled programming sessions. It can really hurt the development process.
As Andy Hunt tweeted:
A “10X” developer refers to the amount of technical debt they generate vs. a 1X developer.
— Andy Hunt (@PragmaticAndy) June 17, 2020
and Nina agrees:
every "10x developer" I worked with left behind a wake of 10x destruction behind them
— Nina Zakharenko 💜🐍 (@nnja) August 11, 2020
Instead, we should focus on building a 10x team. While the 10x developer is optimized for the results she can produce on her own, that is not the mission of an engineering team. Good leaders know that the efficiency of the individual is not to be maximized, but the efficiency of the organization. That also means the team.
There are four primary non-coding skills developers on a 10x team need to develop:
A strong 10x developer knows how to learn, and loves to. This doesn't necessarily mean that he needs to spend his evenings and weekends programming for fun. It does mean, however, that he needs to be open to learning new things, especially from others on the team.
If there's something the dev needs to know, they'll also need to be humble enough to ask another teammate who knows the information already.
The 10x team member knows how to listen. She should be able to understand requirements because she seeks to understand what the user needs. She listens to her team and is able to understand where the gabs in understanding are.
The 10x team member must be able to teach. No one on a team can know everything about the product, but those in the know on any given subject have to have the ability to share their knowledge with the rest of the team. There will be sick days, vacation days, or a time where a team member has moved on, and others need to know what to do in that case.
Teaching goes beyond a verbal or email knowledge transfer. It includes documentation, clean code, and understandable architecture.
The 10x team member must have a sense of ownership of the team's product. They can't have the though that something "is not their job". The team's mission needs to come first, and everyone has to feel like their contribution is important.