This week I've decided to tackle a topic which has been in the back burner of my mind for awhile: Whether or not development teams are a help or a hindrance. Why now? I was asked some questions which revolved around this as part of a job interview I had this week and wanted to provide a more fleshed out answer here than I was able to there.
The reality is that when it comes to developers/engineers there are really only three kinds that matter in the context of this discussion:
Developers capable of working without the team who don't want to mentor others
For these developers working within the context of the team is obviously optional. Depending on the makeup of the team however, those developers may or may not find the experience to be worth their while. In my experience whether or not they do entirely depends on whether or not the team has other Ones and Twos whom they are able to get along with. Ones and Twos who can work together can and will elevate each other's output in ways that are truly wondrous.
Developers capable of working without the team who want to mentor others
When it comes to Twos the situation is very similar with the added caveat that Twos can also thrive in a situation without other Ones and Twos if they feel they are effectively mentoring at least one of the the Threes on the team.
Developers incapable of working without the team who need mentoring
This group of developers are a hard nut to crack which is a little concerning because in my experience, most developers fall into this group. Obviously these Developers need mentoring but whether or not they get the type of mentoring doesn't solely depend upon the Ones and Twos they have access to. If they don't have access to any, they are likely going to have a bad time.
However they also need to be in a mental place where they are willing to be mentored. The biggest problem with Threes in my experience is that most of them don't realize that they are Threes and therefore don't feel like they need to be mentored. These developers tend to fail to produce working solutions on a regular basis and they always tend to have a plethora of excuses to fall back on when it comes to explaining why.
Threes will become Ones or Twos if they are able to mentored and willing to be mentored. If they are not willing, then without a high degree of self awareness and natural humility they are unlikely to make real progress.
In my opinion, one of the biggest problems in our industry is that due to high demand and a general lack of warm bodies, we are currently awash in Threes. When you combine that with the huge variety of boot camp programs currently pumping out unskilled developers while telling them how capable they are and the lack of a viable method for measuring and evaluating developers, I could easily argue that we might be on the verge of a reckoning of sorts. But this isn't the post for that.
So I already know what you all are wondering, "What type of developer are you Jay?" If you are a frequent reader that should be obvious. I'm a Type One. That's why it's first on the list because the first type I came up while brainstorming was the one that best describes me. Personally I tend to only find team situations rewarding when the team has other Ones and Twos that I get along with. At the end of the day I have found that having access to the constructive criticism of competent colleagues with a variety of skill sets, knowledge and opinions tends to improve my work.
However these situations are exceedingly rare. Most teams I've worked on are really just sets of randomly selected developers. I don't blame hiring managers for this because like I said before: We don't have a good way to measure and evaluate developers. I am self aware enough to know what group I belong to and there are other developers who can do the same. However the vast majority of Threes do not know that they are Threes.
The only thing worse than a Three who believes they are a One is a Three who believes they are a Two. At least while fronting as a One, the damage the Three in question does will be largely limited to the code that they write. Whereas if they front as a Two, the real possibility arises that they will pass on a variety of bad habits and misconceptions to their proteges.
Regardless of all of that, I wholeheartedly believe that with the appropriate mix of developers and the appropriate attitudes, development teams can enhance the quality, the productivity and ultimately the career satisfaction of all the developers within it, regardless of what type they are. Perhaps one day somebody will figure that part of it out.