The great thing about measuring developer productivity is that you can quickly identify the bad programmers. I want to tell you about the worst programmer I know, and why I fought to keep him in the team.
I don't like this story. The outcome is only accidentally good and what the author seems to miss entirely is the elephant in the room: A crass failure to communicate with the developers. If you try to establish something like KPIs (not commenting on if that is good or bad here) you need to talk to the team and get them on board. If you treat them like lab rats and try to measure individual performance from the outside that is an obvious fail. In the end, where they state that they "quietly" dropped it, indicates that the real lesson was not learned.
Darn. I went into that article hoping to hear a hillarious article about some coder who insisted on using only his self-written buggy bubble sort implementation rather than the sort methods in the standard library or who they couldn't get to quit deleting necessary features from the codebase.
Not sure why this post doesn't have a ton of comments. It illustrates the fundamental problem with KPIs and performance measurement. When it comes to measuring human production with digital tools, because the binary measure is so restrictive, it leaves out a universe of values and information that is just ignored as a result. And this very often has dramatic consequences.
Myopic decision-making is a standard human fault. The problem is that some Deciders have wildly disproportionate effects on everyone else. (i.e. leadership roles across business and government)
We can’t fix individual ignorance and prejudice to a level that will resolve the issue, so maybe we need to invest our efforts in forcibly distributing power to make sure one person (or a small group) can’t unilaterally ruin thousands or millions of lives.
You misread that entire thing. It's not that the team was bad, or that there was any significant turnover. Nor is Tim unable to transfer his knowledge, since that's not the point of what he does.
He's a sounding board. A sober voice asking the right questions when you've got your head down hyperfocused on a problem. Someone to talk to just to make sure you're on the right track, even though you were pretty sure anyways. The team would still perform without him, but he improves their quality and performance just by standing in for the duck and actually asking the right questions. It's a very subtle, very delicate job. Not everyone can do it. That's why they keep Tim on the team.
There is zero evidence that the team performs better or worse since at no point did Tim stop being Tim. There is no base line.
If Tim had tried to pick up some points and the result was the rest of the team stumbling, that would be one thing. Tim didn't, he kept doing his own thing because his team lead is afraid of Tim.
It just sounds like Tim was no longer a developer and should have a manager title, as he was training and teaching and on boarding all the time.
If his title was no longer developer, because he wasn't doing any development on his own, said metrics wouldn't apply to him anymore, and the issue would be resolved in a reasonable way.
With juniors Tim would pretty much be training them and nudging them on to write better code.
With seniors, like the short article says, it's more a sparring match, trying to find the best solution. You also find a lot of edge cases when someone else works with you together.
I haven't been in a company yet where they have a full time floating position for pair programming, but if it's a senior doing it I can see how it's very beneficial for product quality.