2 Fundamental ↑

No. 8 — Simplify and Generalize

Part of the key to any successful software development effort is to achieve an appropriate degree of generalization in the design.

As a developer considers different expectations and desires for the software’s behavior, the potential complexity of the software starts to escalate rapidly.

To counteract this growing complexity, the developer must look for similar patterns in these expectations, and then generalize the software around these patterns, rather than trying to instantiate every possible variation in users’ desires and expectations.


Words from Others on this Topic

Simplicity goes beyond a term like ‘good user interface,’ which has become so broad, it has little clear meaning. Simplicity is a goal with precision. Simplicity means streamlining, pruning clutter, cleaning up presentation, and improving the initial experience with a product. But Simplicity is more than just making a cute product for technophobes. Simplicity streamlines and optimizes use, as well.

Scott Jenson, The Simplicity Shift: Innovative Design Tactics in a Corporate World, 2002

Developers who return again and again to their work, simplifying it and making it more general-purpose, produce smaller, simpler systems that deliver more to users.

Larry Constantine and Lucy Lockwood, Software for Use: A Practical Guide to the Models and Methods of Usage-Centered Design, 1999

…the supreme goal of all theory is to make the irreducible basic elements as simple and as few as possible without having to surrender the adequate representation of a single datum of experience.

Albert Einstein, On the Method of Theoretical Physics, 1933

The only simplicity for which I would give a straw is that which is on the other side of the complex — not that which never has divined it.

Oliver Wendell Holmes Jr., Holmes-Pollock Letters, 1930

When you start looking at a problem and it seems really simple, you don’t really understand the complexity of the problem. Then you get into the problem, and you see that it’s really complicated, and you come up with all these convoluted solutions. That’s sort of the middle, and that’s where most people stop…. But the really great person will keep on going and find the key, the underlying principle of the problem – and come up with an elegant, really beautiful solution that works. That’s what we wanted to do with Mac.

Steve Jobs, Insanely Great: The Life and Times of Macintosh, the Computer that Changed Everything, 2000

Simple things should be simple and complex things should be possible.

Alan Kay, as quoted in The Simplicity Shift: Innovative Design Tactics in a Corporate World


Next: Decomposition