Sunday, November 23, 2014

good and bad developers

This week a guy announced he is resigning. He gave more than two weeks notice which was classy of him. He was a good guy, he made some useful contributions.

It got me thinking a bit about software development teams. At the site where I work there are several hundred developers across many teams for different clients. At a very small number of places like Microsoft, Google, Facebook, there are no weak developers. Those firms have the advantage of a constant stream of outstanding applicants so they have the luxury of having pretty much everyone being very high performing.

In general at places where I've worked over the years, there was more of a mix. Some really outstanding developers, some solid pretty good developers, some mediocre developers, and some low performers.

Now when someone quits, it's almost always someone from one of the first two groups. They tend to have better prospects and people who worked with them in the past will keep in touch more and be agreeable to them working with them again at some new firm. The lesser developers tend to have much less mobility so they tend to rarely leave voluntarily.

Now with recruiting replacements it tends to follow the breakdown of the existing developer population. So sometimes the replacements can be as good or better than the people who quit, and sometimes you will be unlucky and bring in someone from groups 3-4. So over time on its own then what could happen is that inevitably the ratio of good and very good developers to mediocre and bad developers becomes less. Entirely due to the differing rates of attrition of good and bad developers, and natural variance in recruiting replacements.

This will cause a bad situation over time as developer skill is by far the crucial factor in the success of a software team. While most teams can and have to carry some mediocre and weak performers, there needs to be a healthy percentage of good developers to be long term sustainable and successful.

So I realized something. When a good developer quits, then the correct move for the employer is to also fire a weak developer at the same time. So instead of having to bring in one new person they recruit two. This is crucial to keep the team balanced and the proper ratio of strong developer to less strong. So when bringing in two new people ideally they will both be good. But if variance hits and only one is really strong then the overall team is still ok and the team remains well balanced.