Assuming we had some agreement in our business as to how exactly one should measure the productivity of a programmer (we don’t), what good would it do us?
Let’s say we discovered that he most productive programmer is 6.7 times more productive than, wait, than who? Than the average programmer? Than the worst programmer? I don’t know, but let’s pretend we did know, and had learned that 6.7 was the magic number. What would we do with that number?
Could we use it to find and hire the most productive programmers? How would we go about that? Should programmers add their productivity factor into their resumés? How often should they update it? When should they measure it? On their best day? On a day when they’re performing at their average level? Maybe going for an average over the last 12 months would be most useful? Seems a bit convoluted, doesn’t it?
How about using it to evaluate employees? What would that be like? Should an average programmer that happens to be in a stellar team get to reduce his factor, so he doesn’t look better than he really is? What about a star programmer in a mediocre team? How would we calculate his adjustment factor? After all, it wouldn’t be fair if his productivity score was harmed because he had to work with programmers worse than him.
Seriously, folks. We know the answer to this silly riddle by now. Productivity in software development isn’t controlled just by the individual, it is controlled by how several individuals interact with each other.
If you are, or have been, a programmer, you might recognize this situation: there’s a tight deadline, but nothing’s getting finished, because you’re spending all your time training the new hires that were brought in to help you hit the deadline. If that’s never happened to you or someone you know, maybe this situation is familiar. You have several really great programmers on your team, but nothing’s getting finished, because they’re all busy either quarreling or not speaking to each other at all. Yes, individual programming skill matters greatly. So does the ability to work effectively with others. It’s not either or, it’s both. And that’s still not enough. To be productive, programmers need a supportive environment, and I don’t mean (just) nice colleagues. I’m talking about being in an organization designed to maximize the effectiveness of those who work in it. My guess is that’s not an organization obsessed with measuring the productivity of individual programmers. It’s an organization obsessed with delivering great results, and having a
great time while doing it.