The Space of Developer Productivity
queue.acm.org
queue.acm.org
https://en.wikipedia.org/wiki/Productivity
There's no implication that the worker is producing the same physical objects every day.
For example, if a group of developers start using a new framework that allows them to create the same software in less time (thus costing less to produce), their productivity increases.
Do you have any information on “ the Harvard professor” and how JIT interacted with domestic lean manufacturing?
Companies utterly don’t care. The degree to which they don’t care is so exceedingly flagrant that they use open-plan offices.
What more can there possibly be to discuss?
It strikes me as the kind of thing you'd expect to see in a boilerplate programmers union contract.
My last W-2 job had a performance review system where all the metrics flowed upwards to the goals from management that flowed downward, sort of a countercurrent system. In that way this framework seems more like procedures how to do it well, than metrics you could actually use to meet higher level goals.
I don't think there's anything wrong with this framework and following it would likely result in maximal revenue generated per developer employee, but selling it to the suits will be hard.
The more elaborate the system the more easy it is to manipulate it and stretch the truth; its not a simplicate and add lightness design. And the suits know that, the more fine print the more likely someone is going to manipulate the fine print rather than execute core goals. So there would have to be a lot of trust either voluntarily (unlikely? only last until the first missed deadline or first bug report?) or involuntarily forced (again the union contract idea)
I think solutions like GitPrime (now Pluralsight Flow), GitHub Insights (formerly Gitalytics), Waydev, etc. really gives the impression that you can easily rollup metrics for management, to help them understand developer productivity, but the simple fact is, there are so many variables, as this article alludes to.
Take the microsoft/vscode project, which is being developed at an incredible pace. If you look at the raw numbers like commits, files changed, churn, etc. with the "Velocity" metrics in the following:
https://public-001.gitsense.com/insights/github/repos?r=gith...
you can see that it swings quite wildly at one point of time. And if you only look at typescript file changes in the following:
https://public-001.gitsense.com/insights/github/repos?q=lang...
you can see the patterns are much more consistent. Based on these wild swings, I really don't know how GitPrime and similar solutions are not generating metrics with big banners that says "these numbers may not be very useful".
In the business world, business intelligence is widely accepted and management fully understands that you still have to work at it, to get meaningful insights from BI and I'm hoping this attitude is adopted for developer insights.
I'm still early in my research, but I believe the metrics that both management and developers can get behind are impact based metrics. Impact really can't tell you if somebody is more productive than another person, it just says they are having a greater impact to the code base.
For example, with impact analysis, you can quickly identify busfactor that can tell management, if this developer leaves, we are probably going to experience delays in development. Impact analysis will also make it easier for developers to fight for raises as they will be better able to tell leaders how they are having an impact, compared to say a colleague. Impact analysis will also tell you if a developer is not stepping out of their comfort zone or confirm that you are not giving them a chance to expand, and so forth.
I personally think, trying to optimize developers for speed is a loss cause, and we should be focusing on metrics that can help reduce project risk, which I think everybody can get behind.
Sounds good to me but there is no statistics nor review from other developers/managers trying the metric...
Every team, every project, every individual is different, and may need productivity measured in different ways. We've captured a bunch of different ways to measure into several paragraphs, and think you should use this information to capture all those different measures of productivity while accounting for each unique circumstance you have.
In my opinion:
OK, I'm not management. I'm a developer who wants to "get in flow" and be productive. To contribute while improving my skills. Some of us are "engineers" in mindset, that is, we seek efficiency and optimization. Humans are, of course, notoriously difficult to optimize for. As a team with a project, you should have meaningful goals - this project saves time/money, reduces mistakes/friction/churn, uses up valuable resources in less quantity than the other valuable resources it ends up generating. At some level you want to dig in and optimize; that is, make sure your team has the clarity, tools and ideally, motivation to accomplish the goals you set for your project. And as human resources manager, you might see developers as tiny ROI projects where you want to pinpoint how much Return that particular Investment is giving you. It's at this point that I might say "good luck." I mean, yes, having bad members on a team isn't great, so don't throw your hands in the air and do nothing.
On a sufficiently small team, where leadership understands enough about the work being done (productivity) and how the team works together and contributes, shouldn't it be reasonably apparent who is and who is not a solid contributor? As an individual contributor, I usually believe I end up with a pretty insightful view into who contributes well, and who blows smoke at each meeting while contributing poorly.
Of course, at small organizations, no one dares promote me beyond my level of competence, because my contributions are too valuable. At a larger organization, I would likely be promoted, and maybe for a brief moment, I'd retain my grasp on the contributions of the team I manage, but before long, I'd be swept away into an endless stream of meetings with basically everyone except my team, and I'd have lost my ability to see into that world quite so well. I'd start to hate it and only seek higher titles and compensation but I'd have lost the will to meaningfully contribute.
If I have any point in this, I think teams succeed when individuals succeed, and that happens when you remember they are humans, they want to succeed, and if you listen to their requests, make sure they know what they need to and are not resource-restrained to the point of being unable to succeed, they will probably be happy to contribute. You can always have bad seeds, but going into it with a mindset of measuring, managing and optimizing humans is probably setting yourself up for failure.