Many of today’s programmers – sorry, software engineers—think of themselves as “creatives.” Artists, of sorts. They’re devoted to ostentatious personal websites with cleverly hidden Easter eggs and parallax scrolling; they give themselves ambiguous job titles (“former Amazon engineer-investor-author”) and plaster their laptops with vinyl stickers signaling identity. Some consider themselves literary sophisticates. Consider the references squeezed into some product names: Apache Kafka, ScyllaDB, Claude 3.5 Sonnet.
I admit that much of this is about me. The difference is that I’m a bit less skilled at stringing words together, and my toy projects—with names like “Nabokov” (I know, I know)—are better off staying on my laptop. I entered this world right around the time software engineering overtook banking as the most hated profession. There’s a lot of self-loathing and self-loathing to contend with.
Perhaps that’s why I see the ethos of the Go programming language as both a rebuke and a potential corrective to my generation of ambitious people. Its creators come from an era when programmers had smaller egos and fewer commercial ambitions, and in my opinion it’s the best general-purpose language of the recent millennium—not the best at any one thing, but the best at almost everything. A model for our riotous times.
If I were to classify programming languages as artistic movements, one would have to distinguish between mid-century utilitarianism (Fortran, COBOL), higher theory formalism (Haskell, Agda), American corporate pragmatism (C#, Java), grassroots communitarianism (Python, Ruby), and esoteric hedonism (Befunge, Brainfuck). I would say that Go, often referred to as “C for the 21st century,” represents neoclassicism: not so much a revolution as a throwback.
In 2007, three Google programmers came together around a shared feeling that standard languages like C++ and Java were becoming challenging to utilize and poorly suited to today’s more cloud-centric computing environment. One of them was Ken Thompson, a former Bell Labs employee and Turing Award winner for his work on Unix, the mitochondrial Eve of operating systems. (These days, operating system people don’t mess around with programming languages—doing both is like an Olympic high jumper who also qualifies for a marathon.) He was joined by Rob Pike, another Bell Labs graduate, who, with Thompson, created the Unicode encoding standard UTF-8. You can thank them for your emojis.
Watching these doyens of programming create Go was like a reunion between Scorsese, De Niro and Pesci. Irishman. Even its dismissively SEO-unfriendly name could be forgiven. I mean, sheer audacity. A move only the reigning king of search engines would dare to make.
The language quickly gained popularity. Google’s prestige must have helped, but I assume there was an insatiable hunger for recent things. In 2009, the year Go debuted, the youngest popular languages were mostly from 1995—the veritable annus mirabilis, when Ruby, PHP, Java, and JavaScript appeared.
It’s not that progress in programming language design has stagnated. Language designers are an incredibly wise bunch, many of them with a reformist zeal to overturn the status quo. But what they end up building can sometimes resemble the high-design marvels of a star architect that turn out to have drainage problems. Most recent languages never overcome fundamental performance problems.
But from the very beginning, Go was (sorry) ready to go. I once wrote a little Python search engine to search my notes and documents, but it was unusably sluggish. Rewritten in Go, my pathetic snake sprouted wings and took off, running 30 times faster. As some astute readers might have guessed, this program was my “Nabokov.”