Hacker News new | ask | show | jobs
by alxmng 1059 days ago
Why do you want to measure productivity?

You already know where you are. A measurement doesn’t help your team ship better or faster.

If you’re shipping product improvements at a regular cadence, and the customers are happy, then there’s no problem with productivity.

If you’re shipping poor quality, identify why and improve that.

If you’re shipping so slow that it’s negatively impacting customers, identify why and improve that.

Shoot me an email, I’d be happy to offer more perspective or advice.

1 comments

Interesting to note that two of your decision points are on "shipping product improvements at a regular cadence" or "shipping so slow that it's negatively impacting customers". Both relate to a productivity discussion, ie "how to define what it means to 'ship' as an engineering team". In that sense, we're aligned on why it's important to measure productivity. It would however be a mistake to try to optimize for maximum productivity in a vacuum, but note that this is not what this thread is about. This thread is about the unit of measurement that people use in their teams. In that sense it's purely a research / curiosity question
The material output of programmers is code. In that sense, programmer productivity is (|additions| + |deletions|) / time. Economically, it’s (|additions| + |deletions|) / wages paid.

This is how I would quantitatively measure the productivity of members on the teams I work with. If you look at this measure across your team, I think you’ll find it roughly matches your intuitive notion of who the most productive programmers are. I also think you’ll find story size positively correlated with the magnitude of code change or time.

The thing is, measuring how fast programmers output software isn’t all that useful.

This feels like you're measuring lines of code as productivity, but most experienced engineers would disagree that lines of code is a good metric. Am I misunderstanding your assertion?
Productivity is the ratio of output to input.

Code is the output of a programmer. Time (or wages) is the primary economic input to software development.

Productivity is not a measure of whether something is worth doing. It says nothing about whether the code is valuable or worth writing. A factory has increased productivity if it has produced more widgets with the same inputs, even if nobody wants those widgets or those widgets pollute the environment.

Similarly, programmers do not choose what software to write. They are employed to write software someone else decides is valuable to the business. Their productivity is independent of whether the software has business value.

Consider a one line program. A programmer that produces that program in 5 minutes is more productive than one who produces it in 1 hour.

Stories with sizes are proxies for magnitude of code change or time. A larger project is larger because it takes more time or more code change, or both. Story size/points is an attempt to estimate this. So it is more accurate to measure the actual code change and time taken.

It’s true that the same program can be written with different amounts of code. But this is largely irrelevant at the organization level, where programmers are not writing multiple versions of same program in different languages and toolsets. A team is typically writing software within the context of a particular toolchain and runtime environment.