Fast, Accurate, and Cheap: Choose Any Two
“You cannot have a baby in one month by getting nine women pregnant.” — Frisch’s Law
Software projects are perhaps the most intricate and complex (in terms of the number of distinct kinds of parts) of the things humanity makes. Once built and deployed, system entropy (the steady degradation or decay of any system) rises over a lifetime; that is, repairs tend to destroy structures and increase disorder.
According to Frederick Brooks, “the hardest single part of building a software system is deciding precisely what to build.” From that, plan to build any system more than once because the only way you can know how to build a software system that meets the design specs is to actually build one. And make sure you take the time to do it right; more projects have gone awry for lack of calendar time than for all other reasons combined.
According to the Standish Group, in 2000, U.S. government and businesses…
…spent approximately $80 billion on canceled software projects;
…spent another $60 billion for budget overruns;
…completed only one-sixth of all projects on time and within budget;
…canceled nearly one third of all projects outright;
…considered well over half of all projects “challenged”;
…saw the average challenged or canceled project go over budget by 189 percent;
…saw the average challenged or canceled project get 222 percent behind schedule;
…and saw the average challenged or canceled project reduced to 61 percent of the originally specified features.
“Adding programmers to a project that is late makes the project later.” — Frederick Brooks