The Software Crisis

The “software crisis” is the name given to a problem that became widely recognized in the late 1960s: as computers grew far more powerful, the software written for them grew far more complex, and projects routinely ran over budget, slipped their schedules, and delivered code that was buggy and difficult to maintain.

The term was popularized at the 1968 NATO Software Engineering Conference in Garmisch, Germany, where participants spoke candidly about projects that had failed or nearly failed. The conference report records these discussions in detail.

Edsger Dijkstra described the crisis from the inside in his 1972 Turing Award lecture, “The Humble Programmer.” He argued that the trouble grew directly out of hardware progress: “as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming had become an equally gigantic problem.” As machines became more capable, ambitions grew faster than programmers’ ability to deliver reliably.

The crisis was the motivating problem that gave rise to software engineering as a field. The proposed remedies, such as discipline, modular design, and an emphasis on correctness, were attempts to bring software production under control.