Many of today's programmers – pardon, software engineers—consider themselves “creatives.” Artists of a sort. They delight in ostentatious personal websites with cleverly hidden Easter eggs and parallax scrolling; they give themselves multihyphenate job titles (“ex-Amazon engineer-investor-author”) and fill their laptops with identity-signaling vinyl stickers. Some consider themselves literary sophisticates. Think of the references crammed into certain product names: Apache Kafka, ScyllaDB, Claude 3.5 Sonnet.
Much of that, I admit, is true for me. The difference is that I’m a little short on talent for linking, and my toy projects — with names like “Nabokov” (I know, I know) — are better left on my laptop. I came into this world at a time when software engineering was overtaking banking as the most reviled profession. There’s a lot of hate, and self-loathing, to deal with.
Perhaps this is why I see the ethos behind the Go programming language as both a rebuke and a potential corrective to my generation of strivers. Its creators come from an era when programmers had smaller egos and fewer commercial ambitions, and it is, in my opinion, the most important general-purpose language of the new millennium: not the best at one thing, but almost the best at almost everything. A model for our fast-paced times.
If I were To categorize programming languages as art movements, there would be mid-century utilitarianism (Fortran, COBOL), high-theory formalism (Haskell, Agda), Americorporate pragmatism (C#, Java), grassroots communitarianism (Python, Ruby), and esoteric hedonism (Befunge, Brainfuck). And I would argue that Go, often described as “C for the 21st century,” represents neoclassicism: not so much a revolution as a regression.
In 2007, three programmers at Google got together with the shared feeling that standard languages like C++ and Java had become hard to use and ill-suited to today’s more cloud-oriented computing environment. One of them was Ken Thompson, formerly of Bell Labs and recipient of the Turing Award for his work on Unix, the mitochondrial eve of operating systems. (These days, OS folks don’t bother with programming languages: doing both is like an Olympic high jumper also qualifying for the marathon.) With him was Rob Pike, another Bell Labs alumnus who, with Thompson, created the Unicode encoding standard, UTF-8. You can thank them for your emoji.
It was like Scorsese, De Niro and Pesci getting back together when I saw these programmers creating Go. The Irishman. Even the lightheartedly SEO-unfriendly name could be forgiven. I mean, the sheer chutzpah of it. A move only the reigning search engine king would dare.
The language quickly gained popularity. Google's prestige must have helped, but I suppose there was an unfulfilled hunger for novelty. In 2009, the year Go debuted, most of the youngest mainstream languages were still from 1995—a veritable annus mirabilis, when Ruby, PHP, Java, and JavaScript all came out.
It wasn’t that progress in programming language design had stalled. Language designers are a wonderfully clever bunch, many of whom have a reformist zeal to disrupt the status quo. But what they end up building can sometimes look like a starchitect’s high-design wonder that turns out to have drainage problems. Most new languages never overcome fundamental 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 documents, but it was unusably slow. Rewritten in Go, my poor snake grew wings and flew away, 30 times faster. As some astute readers may have guessed, this program was my “Nabokov.”