After working at several software companies I’ve noticed most have no way to measure developer productivity. Yet they have a way to measure sales (bookings), marketing (mqls/trials), customer success (churn/upsell), and product (nps/product analytics).
As an experiment we’ve starred building an app that measures things like PRs and commits for each developer. I’m not sure this is the best way to solve this problem. I’m curious how engineering managers philosophically think about measuring the performance of their team and if engineering managers are using any quantitative measures how do they do it? How do high performing software teams measure performance?
That it’s linear or at least can be approximated with some linear formula, even if multidimensional.
The question itself implies that there’s some linear “productivity” scale where you can put all your developers and see who’s more and who’s less productive.
Because of this fallacy still dominating management minds - we developers can for example hardly justify 2x, 3x salary raise, even though we realize sometimes that our impact and value is as much higher relative to some peers.
The brutal truth is that the contribution of a developer to any complex and big enough project is rarely proportional to any measurable metrics. And barely ever can be reliably connected to such a metrics.
developer A can just sit around few days and invent simple yet scalable decision with just 1 PR, while developer B would be writing thousands of lines of a good looking code.
But this great looking and even well documented code might kill the whole product at some point in near future, even because of some new requirements that nobody could expect (except that developer A, who wasnt promoted for bad “productivity” and quit).
Add to this the fact that often you can’t really know who was good and who was the bad developer - at the moment both had good arguments.
So, my point is that big software products are essentially non linear, dynamic and poorly predictable beasts.
I don’t have ready answers on “how to decide who’s gonna be promoted”.
But i feel the farther you go from trying to “engineer” and “deeplearn” this issue and closer to trusting intuitions of experienced dev leaders, to treating developers as people not machines, considering each project as a unique thing, with unique approaches — the closer you to the truth and to real improvements.