Professional Software Development: Shorter Schedules, Better Projects, Superior Products, Enhanced Careers . 241 pages, Boston, MA: Addison-Wesley, 2004. Retail price: $29.99. ISBN: 0321193679.

Buy PSD  from

Chapter 1
Wrestling with Dinosaurs

He that will not apply new remedies must expect new evils for time is the greatest innovator.
            — Francis Bacon

In 1975, Fred Brooks compared the development of large software systems to dinosaurs, woolly mammoths, and saber-toothed tigers fighting the glutinous grip of the tar pit.[1] Brooks predicted that the software engineering tar pit would continue to be sticky for a long time to come.

The problems that Brooks described more than twenty-five years ago were not new when he described them, and the software community has now had another quarter century to work on them. How much progress has been made?

Many of the problems plaguing the typical software project today haven’t changed much. For example, schedule pressure is a common feature of today’s projects. According to some estimates, excessive schedule pressure occurs in about 75 percent of all medium-sized projects and in 90 percent or more of all large projects.[2] Overtime is more the norm than the exception.[3] Modern startup companies are known for the long hours they expect from their employees and stories of programmers sleeping under their desks abound,[4] but as long ago as the mid-1960s one report stated that, “In many companies, programmers faced with deadlines have been known to spend nights in the offices.”[5] In 1975, Fred Brooks pointed out that “more software projects have gone awry for lack of calendar time than all other causes combined.”[6] Schedule overruns have been around for at least 30 years and—people’s impatience being what it is—probably since time immemorial.

The scope of today’s large software projects seems daunting, and a natural tendency is to think that no one ever attempted projects of the scope we now face. Yet even a huge project such as the development of Windows NT has historical precedents. The initial Windows NT project required about 1,500 staff-years of effort,[7] but the development of IBM’s OS/360, which was completed in 1966, required more than three times as much effort.[8]

Recent surveys have found that the most frequent causes of software project failure have to do with requirements problems—requirements that define the wrong system, that are too ambiguous to support detailed implementation, or that change frequently and wreak havoc on the system design.[9] But requirements problems are not new. Back in 1969, Robert Frosch observed that a system could “satisfy the letter of the specification and still not be very satisfactory.”[10]

Modern developers rack their brains trying to keep up with the frenetic pace of change brought on by Web development. How do you keep up with new languages, shifting standards, and vendors that release new products every few months? To those of us who have been in the industry for a couple of decades, this sounds an awful lot like the mid-1980s when the IBM PC began to revolutionize corporate computing.

When the Fortran programming language was developed in 1954–58, it was supposed to eliminate the need for computer programming—scientists and engineers could simply enter their formulas into the computer, and the computer would translate the formulas for them, thus the name FORmula TRANslation. Of course, Fortran didn’t eliminate programming; it just reduced the need for machine-language programming. From time to time we still hear about the promise of automatic programming.[11] Computers will become so advanced that the need for computer programmers will disappear. But this was already a well-worn chestnut more than thirty-five years ago when Gene Bylinsky reported that, “Predictions of businessmen blithely conversing with their omnipotent machines in plain English still get played up regularly in the press.”[12] The reality is that defining problems in painstaking detail is difficult work. That aspect of computer programming will not go away. New tools are useful, but not a substitute for clear thinking. I made that point in my 1996 book Rapid Development, but Robert Frosch had already made the same point in IEEE Spectrum 30 years earlier.

Internet developers talk about development in Internet time. The Internet makes it possible for developers to roll out revisions to their programs with unprecedented ease. Users can download upgrades electronically, without requiring duplication of CDs or DVDs, which makes delivery of upgrades quick and inexpensive. This contributes to pressure to release upgrades frequently in response to user requests. Internet developers say that users would rather get the software quickly than have it be perfect. They will tolerate low reliability. Internet developers say, “It’s better to be first than right.”

How unprecedented is this really? Some Internet developers think these dynamics are unique to Web projects, but industry old‑timers know better: low rollout cost, easy corrections, low cost of failure—this sounds like a good old-fashioned in-house mainframe production environment.

These common threads tying together 25 years of software development are a source of both comfort and despair. The despair arises from the fact that some problems have been with us for a quarter century or more and are still common. We truly have been stuck in the tar pit a long time. The comfort arises from the same source: we’ve been staring at the same problems long enough to recognize the patterns, and—as I intend to explore throughout the rest of this book—we seem to be the brink of fixing them.


[1] Brooks, Frederick P., Jr., 1995. The Mythical Man-Month, Anniversary Edition, Reading, Massachusetts: Addison-Wesley, 1995. The original edition was published in 1975.

[2] Data on frequency of schedule pressure comes from Capers Jones, Assessment and Control of Software Risks. Englewood Cliffs, N.J.: Yourdon Press, 1994. For information on common schedule performance, see The Standish Group “Charting the Seas of Information Technology,” Dennis, MA: The Standish Group, 1994; and Capers Jones, Patterns of Software Systems Failure and Success. Boston: International Thomson Computer Press, 1996.

[3] I discuss this in detail in Rapid Development (Redmond, WA: Microsoft Press, 1996).

[4] Bronson, Po. “Manager’s Journal,” Wall Street Journal, February 9, 1998.

[5] Bylinsky, Gene. “Help Wanted: 50,000 programmers,” Fortune, March 1967, pp. 141ff.

[6] Brooks, Frederick P., Jr., 1975. The Mythical Man-Month, Reading, Massachusetts: Addison-Wesley, 1975.

[7] This number is estimated. It is based on the reported cost for Windows NT being $150 million (Pascal Zachary, Showstopper! The Breakneck Race to Create Windows NT and the Next Generation at Microsoft, New York: Free Press, 1994) and a fully burdened labor cost of $100,000/staff-year. 

[8] Effort was approximately 5,000 staff months. Brooks, Frederick P., Jr., The Mythical Man-Month, Reading, Massachusetts: Addison-Wesley, 1975.

[9] Cole, Andy, 1995. “Runaway Projects—Cause and Effects,” Software World, Vol. 26, no. 3, pp. 3-5; The Standish Group, “Charting the Seas of Information Technology,” Dennis, MA: The Standish Group, 1994.

[10] Frosch, Robert A. “A New Look at Systems Engineering,” IEEE Spectrum, September 1969.

[11] Rich, Charles, and Richard C. Waters. “Automatic Programming: Myths and Prospects,” IEEE Computer, August 1988.

[12] Bylinsky, Gene. “Help Wanted: 50,000 programmers,” Fortune, March 1967, pp. 141ff.

This material is (c) 2004 by Steven C. McConnell. All Rights Reserved.

Email me at