Many of today’s programmers – or, excuse me, software engineers – consider themselves “creative” – artists of a sort. They favor flashy personal websites with cleverly hidden Easter eggs and parallax scrolling, they give themselves multi-hyphenated professional titles (“Former Amazon Engineer, Investor, Author”), and they plaster their laptops with vinyl stickers proclaiming their identities. Some even consider themselves literary gurus – think of the references crammed into certain product names, like Apache Kafka, ScyllaDB, and Claude 3.5 Sonnet.
I’ll admit that a lot of that applies to me, except that I lack a bit of hyphenation talent and prefer to leave my toy projects (with names like “Nabokov” (I know, I know)) on my laptop. I came into this world right around the time that software engineering overtook banking as the most hated 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 its striving generation. Its developers come from an era when programmers had smaller egos and fewer commercial ambitions, and to me, Go is the best general-purpose language of the new century. Not the best at any one thing, but close to the best at almost everything. A model for our glamorous age.
If we were to classify programming languages like art movements, we’d have mid-20th century utilitarianism (Fortran, COBOL), high-theoretic formalism (Haskell, Agda), corporate US pragmatism (C#, Java), grassroots communitarianism (Python, Ruby), esoteric hedonism (Befunge, Brainfuck), etc. And Go, often touted as the “21st century C,” represents neoclassicism: more of a throwback than a revolution.
In 2007, three Google programmers came together with the shared realization that standard languages like C++ and Java had become hard to use and weren’t well suited to today’s cloud-oriented computing environment. One of them was Ken Thompson, a former Bell Labs employee who had won a Turing Award for his work on Unix, the mitochondrial Eve of operating systems. (Today, OS people don’t dabble in programming languages; doing both is like an Olympic high jumper also qualifying for the marathon.) He was joined by another Bell Labs alumnus, Rob Pike, who, together with Thompson, created the Unicode encoding standard UTF-8. Thank them for the emojis.
Watching some of the programming heavyweights developing Go was like watching Scorsese, De Niro, and Pesci reunite for The Irishman. You’d be forgiven for thoughtlessly giving SEO an unfriendly name. It would be sheer brazenness. Only the kings of search engines dare do this.
The language quickly gained popularity, and while Google’s cachet no doubt helped, I think the hunger for novelty was insatiable. By 2009, when Go debuted, most of the newest mainstream languages were still dating back to 1995. It was a truly magical year, with Ruby, PHP, Java, and JavaScript all emerging.
It’s not that progress in programming language design has been stagnant. Language designers are a very bright bunch, and many of them have a revolutionary zeal for challenging the status quo. But what they end up building sometimes resembles a master architect’s high-design masterpiece, only to end up with drainage problems. Most new languages fail to overcome fundamental performance problems.
But Go was ready (sorry) from the start. I once wrote a little search engine in Python to sift through notes and documents, but it was so slow it was unusable. When I rewrote it in Go, my poor snake sprouted wings and took flight, running 30 times faster. As the astute reader may have guessed, this program was my “Nabokov.”