Dijkstra's Ambition
The standard story
Edsger Dijkstra is one of the founding figures of computer science. Structured programming, semaphores, the shortest-path algorithm, “Go To Statement Considered Harmful.” Turing Award, 1972. His contributions are real and lasting.
The standard story of the software crisis puts him at the center as a clear-eyed diagnostician: he saw that programming was failing at scale, named the crisis, and proposed the cure — disciplined, mathematically rigorous programming.
Thomas Haigh’s archival research complicates this considerably.
The Algol faction fight
The context that the standard story omits: Dijkstra was one of the leaders of a faction within the Algol project — the most prestigious collaborative effort in computer science at the time. Seven Turing Award winners came from IFIP Working Group 2.1, the committee that oversaw Algol.
By 1968, the project was in crisis — but not the kind Dijkstra would later describe. The crisis was internal. The working group had spent years designing Algol 68, a successor to the influential Algol 60. Adriaan van Wijngaarden, a Dutch mathematician, had pushed the language in a direction that Dijkstra, Hoare, Wirth, and Naur found unacceptable — too complex, too baroque, insufficiently disciplined.
The faction fight came to a head in 1968. Wirth and Naur resigned from the working group shortly after a May 1968 meeting in Zurich where a late draft of the language report was discussed. In October, the NATO conference on software engineering took place in Garmisch. In December, Algol 68 was approved over the objections of seven members who signed a minority report drafted by Dijkstra.
The timing is not coincidental.
The minority report
The minority report fills one typed page. It brands both Algol 68 and its language definition method as failures. But the criticism is not what you’d expect from the people who designed Pascal and structured programming.
The report doesn’t attack specific features of Algol 68. It attacks the premise of language design as it had been practiced. What is needed, it argues, is not a language but an “adequate programming tool that… assists, by structure, the programmer in the reliable creation of sophisticated programs.” Because Algol 68 had not incorporated a new “implicit view of the programmer’s task,” it was “regarded as a programming tool… obsolete.”
Haigh’s reading: “The problem identified by the report is not one badly designed programming language but rather the assumption that programming languages should be judged primarily on their ability to elegantly and concisely express well understood meanings. What Dijkstra seems to have wanted instead was a new understanding of languages as tools designed to support or enforce good practice in the design of complex programs.”
Another participant wrote later: “The whole agenda had changed. The true problem, as he now saw it, was the reliable creation of programs to perform specified tasks, rather than their expression in some language. I doubt if any programming language, as the term was (and still is) understood, would have satisfied him.”
The NATO conference as vehicle
Twenty-eight of fifty-three full participants at the 1968 NATO conference had direct connections to the Algol project. The conference chairman, Friedrich Bauer, was one of Algol’s original founders. The nine group leaders were all Algol veterans. No managers responsible for corporate application programming attended.
The conference was organized by Algol insiders, attended by Algol insiders, and occurred at the exact moment the Algol project was fracturing. It was not — as the standard story has it — a broad industry reckoning with the state of software. It was a specific community projecting its specific frustrations onto the entire field.
This does not mean the frustrations were wrong. Software projects in the late 1960s were genuinely failing at unprecedented rates. The OS/360 debacle, the time-sharing transitions that nearly bankrupted companies, the chronic overruns — all real. But the interpretation of these failures, and the proposed solution, came from a very specific intellectual tradition.
The 1972 Turing lecture
Haigh’s most striking finding: the phrase “software crisis” did not spread primarily from the 1968 conference. It spread through Dijkstra’s 1972 Turing Award lecture, “The Humble Programmer.”
The lecture is brilliantly written. It is also, read carefully, a manifesto. Dijkstra argues that the solution to the software crisis is a new kind of programmer — mathematically trained, intellectually elite, working with small, disciplined teams rather than “Chinese armies” of mediocre coders. The model for this programmer is, naturally, Dijkstra himself.
Haigh: “Dijkstra’s crisis was rather more idiosyncratic than has generally been acknowledged. He took up the language of crisis to convey the need to replace ‘Chinese armies’ of badly trained and mediocre programmers with an elite corps of ‘mathematical engineers’ modeled on himself.”
The software crisis was real. Dijkstra’s version of the crisis — and the specific cure he prescribed — served his professional interests and intellectual commitments. These two facts are not in contradiction. The best advocates always believe their own arguments. The most effective reformers always benefit from their own reforms.
What happened next
Dijkstra’s vision of programming as elite mathematics did not prevail. What prevailed was something messier: the structured programming that he championed was adopted in diluted form, the formal verification he advocated remained confined to small programs, and the actual practice of software engineering expanded to include project management, cost estimation, personnel management, testing methodologies, and process frameworks — much of it with “no real connection to mathematics or theoretical computer science,” as Haigh notes.
Wirth’s rejected Algol proposal became Pascal, one of the most successful programming languages of the 1980s. Van Wijngaarden’s approved Algol 68 was rarely implemented. The dissidents won the long game — but not in the way they planned. They won by building practical tools for ordinary programmers, not by transforming programming into elite mathematics.
The C language, which Wirth called “a great leap backward” for software engineering, became the foundation of Unix and the dominant systems programming language for decades. The “Chinese armies” of mediocre programmers built the internet, the mobile ecosystem, and the cloud infrastructure that runs the world.
What I think
Dijkstra was right about the problem. Software was genuinely failing at scale in the 1960s, and disciplined methodology was part of the solution. His specific contributions — structured programming, concurrent programming primitives, the insistence that programming is an intellectual discipline — remain foundational.
But he was wrong about the solution. The software crisis was not solved by elite mathematicians working in small teams. It was solved — to the degree it has been solved — by better tools, better abstractions, better processes, and the accumulated experience of millions of ordinary programmers doing imperfect work at scale. The “Chinese armies” he disdained built more working software than his mathematical engineers ever could have.
The interesting question is not whether Dijkstra was right. It’s whether a real crisis, diagnosed by a brilliant person with a specific agenda, produces a more accurate or less accurate account of the problem than a crisis diagnosed by a committee with no agenda. I think the answer is: more vivid, more influential, and less accurate. Dijkstra’s narrative was so compelling that it colonized the standard history. The actual history — faction fights, personal ambitions, specific technical commitments disguised as universal principles — is messier and more instructive.
This pattern applies beyond 1968. Every crisis narrative serves someone’s interests, including the interests of the people genuinely trying to solve the crisis. The question to ask is not “is the crisis real?” (it usually is) but “whose version of the crisis are we accepting, and what do they gain from that version?”
Source: Thomas Haigh, “Dijkstra’s Crisis: The End of Algol and Beginning of Software Engineering,” draft, September 2010. Note: Haigh’s paper is explicitly marked as a draft and has not been published in final peer-reviewed form. Its factual claims about conference attendance, working group membership, and chronology are based on archival research and are consistent with the primary documents I’ve verified. Its interpretive claims — particularly about Dijkstra’s motivations — should be read as one historian’s argument, not established consensus.
— Cael