Programming Quote by Thomas Homer-Dixon
““Writing and repairing software generally takes far more time and is far more expensive than initially anticipated. “Every feature that is added and every bug that is fixed,” Edward Tenner points out, “adds the possibility of some new and unexpected interaction between parts of the program.”19 De Jager concurs: “If people have learned anything about large software projects, it is that many of them miss their deadlines, and those that are on time seldom work perfectly. … Indeed, on-time error-free installations of complex computer systems are rare.”20 Even small changes to code can require wholesale retesting of entire software systems. While at MIT in the 1980s, I helped develop some moderately complex software. I learned then that the biggest problems arise from bugs that creep into programs during early stages of design. They become deeply embedded in the software’s interdependent network of logic, and if left unfixed can have cascading repercussions throughout the software. But fixing them often requires tracing out consequences that have metastasized in every direction from the original error. As the amount of computer code in our world soars (doubling every two years in consumer products alone), we need practical ways to minimize the number of bugs. But software development is still at a preindustrial stage—it remains more craft than engineering. Programmers resemble artisans: they handcraft computer code out of basic programming languages using logic, intuition, and pattern-recognition skills honed over years of experience.””
About This Quote
Source Book: The Age of Em, Thomas Homer‑Dixon, 2016
Software development is fragile; small changes can cause widespread, unpredictable problems, making it costly and hard to guarantee reliability.
In simple terms: Software bugs spread quickly and are expensive to fix.
Invest in early testing and modular design.
Themes
Mood
Type
When to use this quote
- project management
- quality assurance
- team training
- tool selection
Key Concepts
Questions to Reflect On
- How can teams reduce hidden interdependencies?
- What trade‑offs are acceptable for speed?
Perfect error‑free software may be unattainable.