Dr. Dobb's Journal February 2003
Michael Swaine
editor-at-large
mike@swaine.com
About three months into the current deathmarch, it became abundantly clear to me that this was a doomed project. Repeated attempts to convey my concerns to the series of middle managers sacrificed on the altar of marketing-dictated deadlines and flavor-of-the-month requirements specifications provided good material for a thesis in abnormal psychology should I ever be so sensible as to contemplate a career change, but achieved nothing in the way of introducing a note of rationality into this farce.
Eventually, I took the advice of my one remaining acquaintance who still has something describable as a life, and rather than waste my time writing code that will never grace an end-user screen, I have spent the last two months in more productive pursuits: (1) drinking myself into a succession of stupors to ease the mental anguish, and (2) reading books on software engineering and development methodologies to acquire the facts and figures and buzzwords that I need in order to communicate with management. It may be relevant to note that these were simultaneous, not successive, pursuits. But I now believe that I can explain why this project will never be completed.
For the sources of the insights and facts used in this report, see Facts and Fallacies of Software Engineering, by Robert L. Glass (Addison-Wesley, 2003), and Mr. Boston: Official Bartender's and Party Guide (Warner Books, any edition from 1935 to the present). For starters, it is a fact that 80 percent of the errors in any software project come from 20 percent of the modules. Our project, as you know, is part of a larger project; and of the modules in the overall project, exactly those 20 percent that have 80 percent of the errors were assigned to our project. Apparently. It is a fact that the most productive programmers are 5 to 28 times as productive as the least. Guess which kind we got. It is a fact that adding programmers to a project once it is well under way increases time to completion. We added programmers to the project repeatedly once it was well under way. Guess which kind we added.
When I say that the project was well under way, I mean that we were more than halfway to the scheduled completion date. Don't read anything else into that phrase. The Titanic was well under way while they were manning the lifeboats. But I sense that you want to see more numbers.
It is a fact of software development (a Robert L. Glass fact) that increasing the complexity of the problem by 25 percent increases the complexity of the solution by 100 percent. It is also a fact of software development that the list of design requirements will increase by a factor of 50 during the development process. Also a Glass fact.
Now, I'm not sure, but I think that these new design requirements that come up during development are supposed to be refinements of the original requirements. Well, in our case, they were entirely new requirements. The result was that the complexity of the problem, as expressed in the design requirements, increased by a factor of 50. Or to put it another way, by 4975 percent.
Now, 50 is roughly 1.25 (25 percent increase) to the 17th power, and 2 (100 percent increase) to the 17th power is 262,144. So, in round figures, that 50-fold increase in problem complexity works out to a 26 million percent increase in solution complexity. Of course, this is only a theoretical figure. For it to be a real, testable figure, we'd have to actually have a solution. I'm sorry to inform you that we'd have to wait a while. If you'd like to have that 26 million percent increase in project complexity rendered in units of time, it comes to 18 million years. This is not practical.
For this project to have any hope of coming in on deadline, it should have been assigned to the earliest apes of the miocene epoch.Well, apes were involved. But I don't mean to offend. We are victims of the same disaster. After the latest deadline has passed and they replace you with the next drone, drop by the church of Mr. Boston and I'll teach you all the hymns.
Cheers,