Legendary engineer reveals productivity secret: delete code
Ken Thompson, a name synonymous with the very foundations of modern computing, has a surprisingly simple key to unlocking productivity: ruthless code deletion. The co-creator of Unix, designer of language B, and a pivotal figure in the development of Go, isn’t advocating for a coding purge. Instead, he champions a philosophy of surgical minimalism – stripping systems down to their bare essentials – and his pronouncements carry considerable weight.

The paradox of progress: less code, more power
Thompson's recent assertion, that one of his most productive days involved removing 1,000 lines of code, isn't a quirky anecdote; it's a distilled lesson from decades of experience shaping the digital landscape. He argues that the relentless pursuit of feature additions often obscures a far more impactful strategy: eliminating unnecessary complexity. In an era obsessed with measuring productivity by lines of code written, Thompson’s perspective serves as a vital corrective.
His journey began in the late 1960s at Bell Labs, alongside Dennis Ritchie, where they birthed Unix. This wasn’t merely an operating system; it was a paradigm shift in how we approach computation. Unix embraced a modular architecture, built from small, specialized tools that worked in concert—a philosophy of “do one thing well” that would inform Thompson’s subsequent work. Language B, conceived as a successor to BCPL, laid the groundwork for Ritchie’s development of C, a language that became the de facto standard for systems programming for decades.
Then came Go, a language designed for large-scale production systems, again reflecting this commitment to simplicity and clarity. Thompson and his collaborators intentionally omitted features, prioritizing ease of understanding over the allure of excessive functionality. Every element left out of the language, they reasoned, was a layer of complexity the programmer didn’t have to manage.
The rationale is compelling. Each line of code added introduces potential vulnerabilities, increases maintenance overhead, and complicates future modifications. As systems grow unchecked, technical debt accumulates, transforming minor changes into high-stakes operations. Eliminating superfluous code, therefore, isn’t a retreat; it’s a strategic reduction of the error surface, a simplification of the architecture that makes subsequent development faster and safer. It requires a deeper understanding of the system than adding new features ever could—the ability to discern what truly matters and the courage to discard the rest.
This philosophy directly challenges a widespread industry practice of equating productivity with code volume. Those metrics often fail to account for the hidden costs – the time consumed by others deciphering complex codebases, and the fragility they introduce into the system. As Bjarne Stroustrup, the creator of C++, famously quipped, “There are only two kinds of programming languages: those that complain and those that nobody uses.”
Go, with its deliberate clarity and direct system types, embodies this ethos. Its design prioritizes understandable concurrency mechanisms, rejecting the often-opaque sophistication of languages like C++ or Java. Thompson’s perspective isn’t a radical new idea; it's a rediscovery of a principle that's been quietly practiced by astute engineers for decades. Programmers, it turns out, aren't defined by how much they write, but by what they choose to leave unwritten.
Thompson’s simple directive – delete code – is a powerful reminder that true innovation often lies in subtraction, not addition.
