Many of the current ones Programmers, excuse me, software engineers—they consider themselves “creatives.” Artists of sorts. They’re given to flashy personal websites with cleverly hidden Easter eggs and parallax scrolling; they give themselves multi-hyphenated job titles (“ex-engineer-investment-author-at-Amazon”) and plaster their laptops with identifying vinyl stickers. Some consider themselves literary sophisticates. Consider the references found in the names of certain products: Apache Kafka, ScyllaDB, Claude 3.5 Sonnet.
I admit that much of that applies to me. The difference is that I lack talents to match and my toy projects (with names like “Nabokov” (I know, I know)) are best left on my laptop. I entered this world pretty much at the moment when software engineering overtook banking as the most reviled profession. There’s a lot of hate and self-loathing to deal with.
Perhaps that’s why I see the spirit of the Go programming language as a rebuke and possible correction to my generation of hard-nosed programmers. Its creators hail from an era when programmers had smaller egos and fewer commercial ambitions, and it is, in my view, the premier general-purpose language of the new millennium: not the best at anything in particular, but almost the best at almost everything. A model for our flashy times.
If I were If programming languages were to be classified as artistic movements, one would have to distinguish mid-century utilitarianism (Fortran, COBOL), high-theory formalism (Haskell, Agda), American-corporate pragmatism (C#, Java), grassroots communitarianism (Python, Ruby) and esoteric hedonism (Befunge, Brainfuck). And I would say that Go, often described as the “C of the 21st century”, represents neoclassicism: not so much a revolution as a regression.
In 2007, three Google programmers came together around the shared idea that standard languages like C++ and Java had become difficult to use and were ill-suited to today’s more cloud-oriented computing environment. One of them was Ken Thompson, formerly of Bell Labs and a Turing Award winner for his work on Unix, the mitochondrial eve of operating systems. (These days, operating system people don’t mess with programming languages; doing both is like an Olympic high jumper also qualifying for the marathon.) Joining him was Rob Pike, another Bell Labs alumnus who, with Thompson, created the Unicode UTF-8 encoding standard. You can thank them for your emoji.
Watching these programming doyens create Go was like watching Scorsese, De Niro, and Pesci get together to The Irishman. Even its SEO-unfriendly name could be forgiven. I mean its sheer effrontery. A move that only the current king of search engines would dare to take.
The language quickly gained popularity. Google’s prestige must have helped, but I suppose there was an unsatisfied hunger for novelty. In 2009, the year of Go’s debut, the youngest mainstream languages were still mostly from 1995, a true annus mirabilis, when Ruby, PHP, Java and JavaScript appeared.
It’s not that advances in programming language design have stagnated. Language designers are an incredibly smart group of people, many of them with a reformist zeal to unseat the status quo. But what they end up building can sometimes resemble a high-level design marvel from a star architect that turns out to have drainage problems. Most new languages never overcome basic performance problems.
But from the start, Go was (sorry) ready to go. I once wrote a little search engine in Python to sift through my notes and papers, but it was unusable and slow. Rewritten in Go, my pitiful snake grew wings and took off, running 30 times faster. As some astute readers may have guessed, this program was my “Nabokov.”