The Fallacy of Local Optimization
Scoble has an interview with the founders of Fog Creek. I smiled at this quote from Joel Spolsky:
That’s the big joke inside of Microsoft. Developers are rewarded for writing a lot of code and fixing a lot of bugs. So the incentive is to write a lot of code and write it very quickly.. Churn it..piles of code… buggy as all hell and then you get a bunch of bug reports and you fix them all and you will look a lot better than a slow methodical developer that gets from point A to point B in the same amount of time or even in less time because of the funny way that that metric might be used.
This is an example of “the fallacy of local optimization” which I first came across as a concept in the Poppendieck’s Lean Software Development book. Basically if you try and optimize locally (increase software development and reduce software faults/bugs) then you are likely to be far less effective and even introduce unwanted second order effects than if you optimized the whole. Lean principals are based on optimizing the whole and not optimizing a portion of your system (whatever it is). So basing incentives and on measuring some aspect of your business/process one level higher than you would expect is more effective for the business as a whole. Providing incentives or penalizing developers based on source code output and bug fix counts can potentially move developers to produce much more buggy code rather than the end goal of better quality software at an acceptable development cost. What I love about the lean principals is that they are “truisms” that apply to more than just software development.