Fred Brooks is a famous software pioneer, renowned for his early insights about software development management. His book The Mythical Man-Month is a classic in the field that is still relevant today, more than 40 years later. It includes a maxim now known as Brooks' Law: “Adding manpower to a late software project makes it later.”1
You may have experienced Brooks' Law yourself, even in a marketing context, when good-intentioned colleagues rush in to help with a project near the end—and it winds up costing you more time coordinating and communicating with that extra so-called help than the benefit received.
Brooks also wrote a widely celebrated essay, “No Silver Bullet—Essence and Accident in Software Engineering,” that claimed there could be no single silver-bullet solution that by itself would achieve a 10× gain in software development productivity, reliability, or simplicity.2
The reason is that there are two kinds of complexity in software: accidental complexity and essential complexity.
Accidental complexity is the result of inevitable flaws in engineering, from minor bugs to subpar designs or architectures. The example of the butterfly effect that we saw in the last chapter is an illustration of how accidental complexity can spiral out of hand, not just directly with software but with our processes that revolve around that software too.
Although there has been no silver bullet to solve accidental complexity, a combination ...