No Silver Bullet
The world of technology is characterized by rapid changes, with new languages, frameworks, and tools emerging frequently. This often leads to the assumption that older technologies and practices are obsolete. However, this is a shortsighted view, as there is still much to learn from established approaches. This article provides an example of observations from the last century that remain relevant today.
Fred Brooks, a computer scientist who worked for IBM in the 1950s and 1960s, authored "The Mythical Man-Month" in 1975, which describes the challenges of planning complex software projects. In later editions, he included his 1986 essay "No Silver Bullet," which is the focus of this discussion.
The document begins with the assertion:
"There is no single development in either technology or management technique which by itself promises even one order-of-magnitude improvement within a decade in productivity, in reliability, in simplicity."
The title "No Silver Bullet" refers to the legend that werewolves, humans who can transform into ravenous monsters, can only be slain with a silver bullet. Brooks argues that there is no such magical solution for managing project timetables when they become monstrous due to missed schedules.
A key reason for Brooks' pessimism is that a software engineer's time is not primarily spent writing code. The main tasks involve thinking about how to solve problems and discussing solutions with the team. These activities are not significantly accelerated by new technology. Thus, improvements in development environments, frameworks, and languages only enhance productivity for a portion of the overall work.
A contemporary example is GitHub's CoPilot, an AI tool built on Generative AI that provides AI-generated code. While this sounds like it could be the elusive silver bullet, studies show productivity increases of only 5-20%. This demonstrates that while the tool is useful and worth exploring, it is not a silver bullet.
In the mid-90s, Sun Microsystems promoted their new programming language Java with the slogan "Write once, run everywhere," promising significant productivity gains by eliminating the need to write new code for different platforms. However, differences in Java Virtual Machines and underlying operating systems led to the revised slogan "Write once, debug everywhere," reflecting the reality that the original promise was not fully realized.
The lesson is that vendors promising a silver bullet are often not truthful. Many tools, languages, and frameworks can help boost productivity, but never by a factor of ten. Moreover, the increasing complexity of modern applications can offset these gains. If you seek a silver bullet, you might need to find a custom jeweler instead.