A magazine about programmers, code, and society. Written by and for humans since 2018.

Harmfully Considered

We, the authors of the magazine you are reading right now, sometimes joke that the true legacy of these articles would be realized if someone presented a paper titled “De Programmatica Ipsum Considered Harmful”. Alas (or not), we do not think this is ever going to happen, although I know that some members of academia follow our ramblings month after month, so who knows; if you ever publish such a contraption, we would love to print and frame a copy for the sake of bragging rights.

Speaking about jokes, “Considered Harmful” is one of the most recurring ones in the history of programming. Not that the countless papers, blog posts, videos, podcast episodes, and conference talks that featured these two words as a suffix were funny, but because it is a trigger: one that fires up specific alarms in the systems of software developers, immediately commanding our utmost attention.

Again, for good or for worse.

In his excellent 2012 book “The Dawn of Software Engineering: From Turing to Dijkstra”, one that truthfully deserves its own article on the Library section of this magazine, Edgar G. Daylight provides a surprising and well-researched chronicle of the birth of Structured Programming (with leading capitals, thankyousomuch): a now legendary paper that, if you have not read it, you must most probably know about thanks to previous articles of this magazine.

We thus read between pages 33 and 35 of Daylight’s opus that

In 1962, after his IFIP address in Munich, Dijkstra became Professor of Mathematics in Eindhoven and started working on the THE operating system (…) It is in this setting that Dijkstra conceived of the idea of writing his 1968 letter ‘Go To Statement Considered Harmful’. (…)

At the end of his letter, Dijkstra acknowledged that Zemanek had expressed doubts about the goto statement as early as 1959, and also mentioned Landin, Strachey, and Hoare as inspirators. (…)

Nevertheless, it was Dijkstra’s letter which created the most waves. Besides attracting immediate attention, Dijkstra’s letter polarized the computer community. (…)

Dijkstra said he received “a torrent of abusive letters” after his letter was published. In subsequent years, articles titled “X considered harmful” were published with in one case even “Dijkstra considered harmful”. (…)

(Kids, this was decades before social media.)

Daylight, however, blows the whistle and points to the true culprit of the flame wars that ensued, and you would never believe who that was.

Dijkstra’s letter was not in accord with his original intentions, however. Initially, Dijkstra had submitted a paper to the editor of the Communications of the ACM, Niklaus Wirth, under the moderate title ‘A case against the goto statement’. It was the editor who, in the interest of speeding up publication, single handedly decided to publish the paper as a letter under the far more provocative title ‘Go To Statement Considered Harmful’.

Ahahah! So it was our most dear Mr. Wirth who was behind this snowclone all the time.

Two decades later, Frank Rubin started a long and heated debate, held over reader letters published on the Communications of the ACM magazine. The starting point of the debate was a letter titled “‘GOTO Considered Harmful’ Considered Harmful”, a self-referential title akin to the meaning of the GNU acronym.

It is like butchers banning knives because workers sometimes cut themselves. Programmers must devise elaborate workarounds, use extra flags, nest statements excessively, or use gratuitous subroutines. The result is that GOTO-less programs are harder and costlier to create, test, and modify.

A few months later, Dijkstra lamented the tone and content of the debate.

The whole correspondence was carried out at a level that vividly reminded me of the intellectual climate of twenty years ago, as if stagnation were the major characteristic of the computing profession, and that was a disappointment.

The debate continued during the 1990s and 2000s. Ward Cunningham’s original “WikiWikiWeb” features a page about it. Jeff Atwood and Mark Liberman poured virtual ink about the subject. There is a Wikipedia page titled “Considered harmful”, filled with crunchy details and references.

Last but not least, Eric Meyer wrote (in 2002!) an essay called “Considered Harmful” Essays Considered Harmful, which summarizes a lot of our thoughts about the subject, pointing out that

The controversy resulting from the article’s publication became so heated that the CACM subsequently decided to never again publish pieces with such assertive positions.

Ouch.

“Considered harmful” essays are not only a sad cliché at this stage of the game, they are counter-productive to reasoned debate and most often do far more harm than good to whatever cause they promote.

2025 is about to end as I write these words, that is, 23 years after Eric Meyer wrote this, and well, clearly nobody paid attention. Content whose titles end with the words “Considered Harmful” keep on being featured on Hacker News and Reddit every so often.

In a more sarcastic tone, Pastor Manul Laphroaig claimed in a sermon that:

Pouring myself another, I say “Dijkstra’s advice goes well enough if you wish to program software. It is true that BASIC is a horrid language for writing complex software, but consider again the educational value of spaghetti code.

“Dijkstra says that a mind exposed to BASIC can never become a good programmer. While I trust his opinion on algorithms, his thoughts on BASIC are racist horse shit.

Amen.

There are, however, two things we would like to say about “Considered Harmful”. Spoiler alert: neither of them is positive.

First, there is an inherently abhorrent philosophical aspect that permeates the concept of “X Considered Harmful” in the minds of developers (in particular, younger generations thereof). By cataloging subject X as dangerous, it institutionalizes a rhetorical violence around it, automatically signaling a tribal feeling of belonging.

Acknowledging the (supposed) evil described in a “Considered Harmful” piece, automatically place consumers as part of an enlightened group, all wearing the same imaginary rallying symbol around their necks, perpetuating a (potentially toxic) shibboleth across time and space. Taken without context, such “ethical imperatives” imply moral and/or professional neglect from practitioners. Harassment, exclusion, and distress ensues.

Second, we think of it as a shortcut to intellectual laziness; “Considered Harmful” stuff is often used to shut down debate, to force an “objective” truth upon the minds of others, and to avoid all nuance in favor of a binary narrative.

The death of “it depends”, if you will. The altar where contextual awareness is sacrificed.

Being human means, to a large degree, spending our younger years mindlessly identifying the enemy of our friend as our own enemy. On the other hand, growth means learning to spot the occasions when such thought patterns arise, and consciously elaborating on them, leaving dogma and hormones aside.

Software developers and programmers pride themselves (and rightfully so!) of the cognitive abilities they possess, allowing them to solve the most intricate problems with code. It is the fervent wish of the authors of this magazine, and a common thread across all of our writing, to see all of us use some of that CPU power to identify our own shortcomings and biases.

Cover photo by Bernd 📷 Dittrich on Unsplash.

Back to top