I stumbled upon an interesting article this morning about the thing the best (and worst) programmers all have in common: their work environments. The study was conducted by giving an assignment to over 600 developers across 92 different companies. Each participant had a partner from the same organization, but they were not allowed to speak to each other about their assignments.
Here’s a summary of the results:
- The best participants outperformed the worst by a ratio of 10:1
- The top performers were 2.5 times better than the median
- Experience, salary, and time spent completing the assignment had little correlation to outcome
- Programmers who turned in “zero-defect” work took slightly less time than those who made mistakes
The interesting part of the study is that “programmers from the same companies performed at more or less the same level, even though they hadn’t worked together.” I found that to be fascinating. It makes sense, though. Essentially, developers are a product of their environment. A low-performing environment will produce low-performing developers. Good developers on bad teams will either improve their team or move on to a better team. Bad developers on good teams will not be tolerated and will be bumped (fired/transferred) to a lower-performing team that’s more tolerant of or suited to their lesser ability.
The message I got out of this is to not accept being a member of a poor performing team, or you fill find that you’ve become a poor performing developer. Steps must be taken to improve the team. This can really be done in one of two ways: help the team overcome its shortcomings or find a new team.