Many of today’s programmers—excuse me, software engineers—consider themselves “creatives.” Artists of a sort. They are given to ostentatious personal websites with cleverly hidden Easter eggs and parallax scrolling; they confer upon themselves multihyphenate job titles (“ex-Amazon-engineer-investor-author”) and crowd their laptops with identity-signaling vinyl stickers. Some regard themselves as literary sophisticates. Consider the references smashed into certain product names: Apache Kafka, ScyllaDB, Claude 3.5 Sonnet.
Much of that, I admit, applies to me. The difference is I’m a tad short on talents to hyphenate, and my toy projects—with names like “Nabokov” (I know, I know)—are better off staying on my laptop. I entered this world pretty much the moment software engineering overtook banking as the most reviled profession. There’s a lot of hatred, and self-hatred, to contend with.
Perhaps this is why I see the ethos behind the programming language Go as both a rebuke and a potential corrective to my generation of strivers. Its creators hail from an era when programmers had smaller egos and fewer commercial ambitions, and it is, for my money, the premier general-purpose language of the new millennium—not the best at any one thing, but nearly the best at nearly everything. A model for our flashy times.
If I were to categorize programming languages like 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’d say Go, often described as “C for the 21st century,” represents neoclassicism: not so much a revolution as a throwback.
Back in 2007, three programmers at Google came together around the shared sense that standard languages like C++ and Java had become hard to use and poorly adapted to the current, more cloud-oriented computing environment. One was Ken Thompson, formerly of Bell Labs and a recipient of the Turing Award for his work on Unix, the mitochondrial Eve of operating systems. (These days, OS people don’t mess with programming languages—doing both is akin to an Olympic high jumper also qualifying for the marathon.) Joining him was Rob Pike, another Bell Labs alum who, along with Thompson, created the Unicode encoding standard UTF-8. You can thank them for your emoji.
Watching these doyens of programming create Go was like seeing Scorsese, De Niro, and Pesci reunite for The Irishman. Even its flippantly 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 traction. The prestige of Google must’ve helped, but I assume there was an unmet hunger for novelty. By 2009, the year of Go’s debut, the youngest of mainstream languages were mostly still from 1995—a true annus mirabilis, when Ruby, PHP, Java, and JavaScript all came out.
It wasn’t that advancements in programming language design had stalled. Language designers are a magnificently brainy bunch, many with a reformist zeal for dislodging the status quo. But what they end up building can sometimes resemble a starchitect’s high-design marvel that turns out to have drainage problems. Most new languages never overcome basic performance issues.
But from the get-go, Go was (sorry) ready to go. I once wrote a small search engine in Python for sifting through my notes and documents, but it was unusably sluggish. Rewritten in Go, my pitiful serpent grew wings and took off, running 30 times faster. As some astute readers might have guessed, this program was my “Nabokov.”
This is not to say that Go is a perfect language. It’s more workhorse than show horse. And it came out 15 years ago, enough time for a stream of breakup stories and critiques to cycle through the industry’s paper of record, Hacker News.
To wit: Many find Go code ugly. There’s a procrustean uniformity to it, and it lacks the tidy shorthands of, say, Ruby or Python, so even common patterns can become messy and cluttered. (Ask a Go programmer about “error handling.”) Also, you can’t run the code, even with correct syntax, unless certain styles are strictly followed. Imagine a word processor that does not allow you to save unless your essay is free of grammatical errors.
I’m happy to admit that Go lacks the ergonomics of newer languages. But I struggle to dispel the suspicion that these are the complaints of a spoiled era. If the chief engineer of the first-generation Ford Mustang were tasked with designing a new line of cars, and did so remarkably—models of practicality and workmanship—would you complain about them having no touchscreens?
It’s odd to think how young the field of computer science is. Alan Turing’s paper that launched the field is less than a century old, and we live in a small window of time where pioneers are alive and professionally active, even into their eighties. Go is a language created by people who had nothing left to prove.
I hope it isn’t too contrived to speak of a “late style” in programming. The idea is usually attributed to the German philosopher Theodor Adorno, who observed a growing contradiction and alienation in Beethoven’s later work. The literary critic Edward Said expanded on the notion in his posthumous book On Late Style, discussing how some artists, when facing impending mortality, reject traditional artistic closure and instead embrace fragmentation and unresolved tension.
What I find more intriguing—and rarer than we might have thought—are the cases where masters in their later years do accept a certain closure and, as Said put it, maintain a “spirit of reconciliation and serenity.” Social media has provided us with the disappointing yet sobering spectacle wherein supposedly accomplished individuals—since we’re talking technology here, certain computer scientists in AI who shall remain nameless come to mind—regularly engage in unseemly reckonings with their residual baggage.
But when I think about Go, I feel a sense of serenity. Instead of involving themselves in spats with young kvetchers, the Go team directs you to their FAQ page—the gold standard of FAQ pages—written in a gentle, statesmanlike tone. And with that, they rest their case. I suppose that’s where some people do end up: completely, even plainly, at ease with their work. To know it’s possible, someday, perhaps, is a balm. Maybe my generation will learn to tame our egos and find our footing. We still have a few decades to make it so.