“Wanna understand developer productivity? Look at this set of numbers!”
“No, no, those numbers can be gamed. Look at this set of numbers! They are based on a survey!”
“No, those micro-optimize. Look at these numbers over here!”
I’m getting tired of this dance. If you want to lead geeks effectively, at whatever scale, you need to be a person & interact with them as people. You need to build, maintain, & repair relationships. You need to be vulnerable while setting boundaries. You need to pay attention & exercise judgement. The foundation is person-to-person, in spite of the power differential.
Looking at numbers is one way to pay attention, but it’s a limited, biased, & temporary way. There is no perfectly balanced set of metrics that will “drive” better behavior. As soon as such a set is introduced, clever folks will begin to subvert the numbers to their own benefit (they aren’t trying to make things worse for their colleagues, users, & investors—that’s just how it works out).
Productivity
Back to first principles. Productivity is the ratio of output to input. If we put $1 in & get $2 out, then productivity is 200%.
If we spent $100m on engineering and we get $200m in sales, then engineering productivity is 200%. But wait, I hear you say, there’s a lot more going on than programming. Product, design, customer support, marketing—we don’t get the $200m if they don’t also do their jobs.
Kinda my point. As soon as we zoom in to “just” engineering, we’re no longer measuring productivity, we’re measuring something else. And all the something elses we can measure have the potential to distort development.
Reward more deploys, you’ll get more deploys. Punish more incidents, you get fewer incidents. Users unhappy, profits down, employees bailing? At least it’s not engineering’s fault. We made our numbers.
Conclusion
What’s a leader to do, if you can’t “hold them accountable”? As I said above, be a person. Tell stories. Listen, empathetically but critically. Set an example. Read the room. Create skin-in-the-game situations, not by giving cash (another distorting move) but by making sure, for example, that folks play the game they’re writing or their kids do or their parents do.
People suck at being machines. Treat them as you would a machine & they are going to suck.
Wonderful! You have such a talent for cutting to the heart of the issue. Productivity is dollars in divided by dollars out -- full stop. Every group at the company has a right to a peice of that metric, they all contribute their part. Any other productivity metric is likely to be a poor proxy for that, and suspectable to abuse.
The book Drive by Dan Punk really highlights how important intrinsic motivation is for developers.
Programming is generally a creative art 🎨
It's better rewarded using autonomy, mastery and purpose.