Under Non-Value-Added Work:<p>> Here are a few things that we do that are waste...<p>> Teasing apart code to understand how it works, especially when this effort is repeated whenever a team member confronts that code<p>I can't think of a circumstance where close inspection of the code is not a <i>necessary</i> step toward understanding it. The author does not seem to indicate that he means rewriting, but even if he does, there is typically value in that exercise in the form of greater understanding, continuous improvement, elegance of design, and re-readability of the code.<p>> Creating development infrastructure, tools, or automation that is only readily-understood by people who have had extensive experience with them<p>The reality of this matter is that running custom software, especially cloud software, is tightly bound to infrastructure and operations, and there are no absolute standards. There are popular tools--make, Maven, Jenkins, etc.--but they serve to implement a very specific process. Even on a full lifecycle stack like JavaEE that has specific parameters for deployment and management, it's really not the whole story.<p>I'd rather have a development infrastructure that I can rely on and risk it being a bit opaque than not have any.
Summary: Measure productivity as the time you spend working minus the time you spend working on stuff that's not useful.<p>This definition of productivity doesn't even have the right units (time belongs in the denominator, not the numerator), and the analysis in the blog is muddled (why exactly does it matter whether or not I count lunch as 'non-value-added' since I'm going to subtract it anyway?)
To argue against this metric, I will use <i>Reductio Ad Absurdum</i>.<p>Look at the finished software. Count the characters in the source code. All of the source code, tests, comments, configuration files, whitespace, everything in the project's source.<p>Divide by five. That's the number of words. An average professional typist can type at 50-70 wpm. we're professionals, so we'll take sixty. Divide the number of words by sixty to get the number of minutes.<p>Perfect productivity for a professional-grade typist consists of spending that number of minutes typing out the finished software. Take the number of minutes actually logged by the entire team and divide by the perfect productivity number.<p>If the team took twenty times as long, they have a productivity of 5%. If it took 1,000 times as long, they have a productivity of 0.1%.<p>This is the same thing the author advocates, only I am suggesting that any activity except typing code that appears in the finished product is what the author calls a waste.<p>Something stinks here.
This level of micro-management is something that can go a good ways to killing a developer's energy and motivation. Micro-measuring productivity by writing down the time that is diverted from productive tasks would be a nightmare.