Build One to Throw Away: Embracing Iteration


Build One to Throw Away

The principle of “Build One to Throw Away” from Frederick Brooks’ “The Mythical Man-Month” is an important yet often misunderstood approach to software development. This principle highlights the importance of early iteration and learning, even if it means discarding initial efforts.

This article examines the benefits of this approach and the common resistance it faces, particularly from management. We’ll explore why building an initial, disposable version of a system can be a smart strategy, how it serves as a risk management tool, and ways to foster a culture that values learning and adaptation over immediate output.

Build One to Throw Away: Embracing Early Rapid Iteration

Learning Through Doing

The concept of building an initial version with the expectation of discarding it underscores the value of learning through practical experience. Early iterations help understand the problem more deeply, identify unforeseen challenges, and refine requirements.

Validating Ideas Quickly

Rapid iteration allows for quick validation (or invalidation) of ideas. This process helps steer the project in the right direction from an early stage, reducing the risk of prolonged efforts in the wrong direction.

Build One to Throw Away: Management’s Resistance to Discarding Work

Perceived Wastage of Resources

Often, management views the idea of discarding a working version as a waste of time, money, and effort. This perspective stems from a focus on immediate deliverables rather than the long-term quality and viability of the project.

Misunderstanding the Value of Iterative Learning

There is a common misconception that a well-planned project should proceed smoothly from start to finish without significant changes. This overlooks software development’s complex, unpredictable nature, in which adaptations and learning are crucial as the project evolves.

Build One to Throw Away: Broader Insights

Iterative Development as Risk Management

Building a prototype or initial version that is expected to be thrown away can be seen as a form of risk management. It allows teams to identify and address major issues early when they are less costly and easier to fix.

Cultural Shift Towards Flexibility

Embracing the “build one to throw away” philosophy requires a cultural shift in many organizations. It necessitates valuing learning and long-term project success over short-term efficiencies and outputs. This can help build technical capital by reducing early-stage technical debt accumulated from working with otherwise ill-fitting ideas.

Balancing Early Iterations with Practical Constraints

While the benefits of early iteration are clear, balancing this approach with practical constraints like budgets and deadlines is important. This might mean building smaller, more focused prototypes rather than fully-featured systems.

Incremental Improvements vs. Complete Overhauls

An alternative to completely discarding the first system is to use it as a base for incremental improvements. This approach can be more palatable to management, as it retains some value from the initial effort while still allowing for substantial changes and learning. Be aware of and watch out for the Second System Effect to ensure that improvements are justified in the proper engineering context.

Encouraging a Learning-Oriented Mindset

Fostering a team culture that views the initial development phase as a learning experience rather than just a product-building exercise can help align everyone’s expectations and justify the need for early iterations.

Build One to Throw Away: Conclusion

In conclusion, the principle of “Build One to Throw Away” from “The Mythical Man-Month” highlights the importance of early rapid iteration in software development. While management may resist this approach due to perceived inefficiencies, understanding its value in terms of risk management, learning, and ultimately creating a more robust and fit-for-purpose final product is crucial. Balancing this approach with practical project constraints and fostering a learning-oriented mindset is key to successfully implementing this philosophy.

One Reply to “Build One to Throw Away: Embracing Iteration”

Comments are closed.

Related Posts