The key to effective software development is collaboration.
No group of individuals can accomplish as much as a team that’s able to truly work together.
This means learning to navigate different personality types, understanding your own personal strengths (and weaknesses), and setting aside disagreements to work toward a common goal.
But in order to do that, you need to have some insight into the types of people that you work alongside. You need empathy for their experiences–and practical knowledge of how they fit into the overall team dynamic.
In the world of software development, there are some common types of developers that you’re almost certain to run into (if you haven’t already). While no individual is a caricature in reality, having an understanding of the thoughts and motivations of those on your team can help you learn how to work together more effectively.
For engineering managers, it’s also critical to identify your team members’ relative strengths, abilities, and tendencies. This allows you to more effectively manage individuals and also think strategically about how to put people in a position to succeed.
Digging into each of these developer archetypes, we can get a strong understanding for the role that they’re best suited to play within the team.
The Wizard – or the knowledgeable veteran of the team–is likely best suited for leading core projects and providing guidance to younger developers. Although they’re usually very talented and knowledgeable, their years of experience are likely to lead them to default to long-held practices and avoid change or “innovation”.
On the other end of the spectrum, The Infinite Optimizer is likely to be in constant pursuit of the newest and best way to do things. These discoveries can help the team become more efficient and effective, but the drive for continuous improvement may make them less reliable in the interim.
The majority of the development team is likely made up of Diligent Coders. These engineers are reliable and consistent, but they’re unlikely to introduce new ideas or go the extra mile to make sure the project is a success.
Developers known as The Superheroes contrast with Diligent Coders in that they’re characterized by intense bursts of productivity. Unfortunately, no one can sustain superhero-level output indefinitely, which means it’s important to manage their time and energy. The key is to deploy their extreme tendencies at only a critical point when it’s most needed and least likely to jeopardize the quality and consistency of team’s work.
Some developers work best in isolation and without much oversight or management. We consider these developers to be The Isolated Artists. They are often associated with genius-level mastery, but can overthink or complicate projects that don’t require intense, focused thought.
Most teams come to rely on certain developers who have an uncanny ability to find the perfect solution and exactly the right time – The Clutch. These developers tend to be incredibly reliable at crunch time, but may only really thrive under a high level of pressure. Like Superheroes, it’s critical that they’re involved in the projects where they can bring the most value.
Lastly, we have developers that are considered The Headache. These are usually junior engineers who can sometimes make mistakes or slow down projects. But, all is not lost. With the right management and guidance, developers that begin as problematic can often improve and grow to become critical and reliable members of the team.
None of these archetypes is necessarily “best”. In fact, most teams will – and probably should – consist of a fairly even mix across the board. This means that teams will have developers that offer a range of complimentary strengths and weaknesses that can be pieced together by effective leadership.
The key is to understand each developer’s individual styles and habits so that their contributions can be maximized and the team–as a whole–can do the best possible work.
The best managers know and understand this.
Rather than enforcing strict, unilateral expectations on every type of developer, a great leader will assess each person as an individual to determine what conditions they need to thrive.
With the right people in the right roles, everyone will be able to perform better.