Complexity Quote by Frederick P. Brooks Jr
““If, as I believe, the conceptual structures we construct today are too complicated to be accurately specified in advance, and too complex to be built faultlessly, then we must take a radically different approach. Let us turn to nature and study complexity in living things, instead of just the dead works of man. Here we find constructs whose complexities thrill us with awe. The brain alone is intricate beyond mapping, powerful beyond imitation, rich in diversity, self-protecting, and self-renewing. The secret is that it is grown, not built. So it must be with our software systems. Some years ago Harlan Mills proposed that any software system should be grown by incremental development.[11] That is, the system should first be made to run, even though it does nothing useful except call the proper set of dummy subprograms. Then, bit by bit it is fleshed out, with the subprograms in turn being developed into actions or calls to empty stubs in the level below. I have seen the most dramatic results since I began urging this technique on the project builders in my software engineering laboratory class. Nothing in the past decade has so radically changed my own practice, or its effectiveness. The approach necessitates top-down design, for it is a top-down growing of the software. It allows easy backtracking. It lends itself to early prototypes. Each added function and new provision for more complex data or circumstances grows organically out of what is already there. The morale effects are startling. Enthusiasm jumps when there is a running system, even a simple one. Efforts redouble when the first picture from a new graphics software system appears on the screen, even if it is only a rectangle. One always has, at every stage in the process, a working system. I find that teams can grow much more complex entities in four months than they can build.””
About This Quote
Source Lecture: Software Engineering Principles, MIT, 1995
Complex systems should be grown incrementally like living organisms, starting with a minimal working version and evolving it.
In simple terms: Build software step by step, starting with a simple working model.
Adopt incremental, top‑down development to manage complexity.
Themes
Mood
Type
When to use this quote
- software project management
- team collaboration
- learning new technologies
Key Concepts
Questions to Reflect On
- How can you ensure early prototypes remain extensible?
- What safeguards prevent technical debt from accumulating?
Incremental growth may still require extensive refactoring later.