Jeffrey Veen

The Rules of Unix

Last Fall, Eric Raymond published "The Art of Unix Programming" -- a book I'm going to have to buy, since it's 500 pages are just too much for the screen. In the first chapter, he lists the rules that make up the Unix philosophy, and reading through them, I was struck by their application to what I do -- IA, UX, design, et al.

Rule 10 is interaction design. Rule 14 is why we use templates to spit out HTML. Rule 4 is how CSS works. Rule 13 is my resolution for this year, restated. Rule 16 is why we started this company.

  1. Rule of Modularity: Write simple parts connected by clean interfaces.
  2. Rule of Clarity: Clarity is better than cleverness.
  3. Rule of Composition: Design programs to be connected to other programs.
  4. Rule of Separation: Separate policy from mechanism; separate interfaces from engines.
  5. Rule of Simplicity: Design for simplicity; add complexity only where you must.
  6. Rule of Parsimony: Write a big program only when it is clear by demonstration that nothing else will do.
  7. Rule of Transparency: Design for visibility to make inspection and debugging easier.
  8. Rule of Robustness: Robustness is the child of transparency and simplicity.
  9. Rule of Representation: Fold knowledge into data so program logic can be stupid and robust.
  10. Rule of Least Surprise: In interface design, always do the least surprising thing.
  11. Rule of Silence: When a program has nothing surprising to say, it should say nothing.
  12. Rule of Repair: When you must fail, fail noisily and as soon as possible.
  13. Rule of Economy: Programmer time is expensive; conserve it in preference to machine time.
  14. Rule of Generation: Avoid hand-hacking; write programs to write programs when you can.
  15. Rule of Optimization: Prototype before polishing. Get it working before you optimize it.
  16. Rule of Diversity: Distrust all claims for “one true way”.
  17. Rule of Extensibility: Design for the future, because it will be here sooner than you think.

He elaborates on them in the rest of the chapter. The whole book is here.


This entry was written by Jeffrey Veen and posted 8 January 2004 at 7:13 PM. It was filed under Technology. | View blog reactions

Comments
1. On 8 January 2004 at 7:25 PM Ed Heil wrote:

Speaking as someone who has used nothing but Unix and variants for a long time, and is not liable to change that (i.e. I'm not a Windows guy with a grudge against Unix or anything), let me recommend that you not go nuts on the "Unix is the ideal" thing without also reading the Unix Haters Handbook (which is online now I believe).

Those rules are great. It'd be even better if Unix and its descendants actually manifested them to a greater degree.

For another look at some of the Unixy tradeoffs, I recommend the series of articles arguing for and against the "Worse Is Better" philosophy.

2. On 8 January 2004 at 9:40 PM jjg wrote:

And even more: Rules 2 and 5 are key principles of information design. Rules 11 and 12 are the same for interaction design. Rule 15 is the rationale behind wireframes, interaction flows, and architecture diagrams.

3. On 8 January 2004 at 10:02 PM jeff wrote:

Ed,

Agreed. And I'll reiterate the importance of #16.

And, for reference, http://research.microsoft.com/~daniel/uhh-download.html

4. On 9 January 2004 at 11:37 AM Gerard Van der Leun wrote:

This is a brilliant book that extends far beyond UNIX as I've said in some detail at:

http://www.americandigest.org/mt-archives/000799.html

"Not bad and that’s only one draft. What this should suggest is that these rules are clever and useful well beyond the realm of Unix programming. Which, I believe, is one of Raymond’s aims in drafting them; that they suggest not just a way of programming but a way of life.

But don’t take my word for it. Apply them yourself to the realms of law, of politics, of love and of war. You’ll find they hold true in all of these areas. I suppose Raymond could have called these rules the Commandments of Unix, but why would a UnixGod do that?"

5. On 17 January 2004 at 12:12 PM Brian Hess wrote:

Actually, the whole book is here:
http://www.faqs.org/docs/artu/index.html


Join me for a one-day conference on starting your own company. August 7 in San Francisco.

Currently:

() More...

About Me

Bio: Jeffrey Veen
Book: "The Art & Science of Web Design"
Book: "HotWired Style: Principles For Building Smart Web Sites"
Work: My LinkedIn Profile
Travel: China, Tuscany, Kayaking in Baja, Touring Costa Rica, Studying Theater in London

Categories

» Business (6)
» Cycling (27)
» Information Architecture (15)
» Personal (83)
» Software (14)
» Technology (90)
» Travel (38)
» Web Design (96)

Popular Posts

» Making a Better Open Source CMS
» Seven Steps to Better Presentations
» A Contrast in Urban Design
» IA Jargon Watch
» On Writing Short
» Pain and Cycling

Recent Photos


XML Feeds

This XML Button links to a feed you can subscribe to. Subscribe to my site
Click the link above to be notified automatically every time I add a new post.

Creative Commons License