« | Home | »

Unix philosophies applied to general programming

By Sparky | December 7, 2005

Ronny has a great blog dedicated to software quality and he just made a really interesting post on the fundamental philosophies of Unix software development. These are simple principals that I think should be applied to all software projects.

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

What are your thoughts? I think this is very similar to Adam Bosworth’s comments on how Google has been able to make such an extensible and scalable high-performance system. I’m going to spend some time pondering how to apply these principles to more than software development, and rather to life in general.

Share and enjoy:
  • email
  • Digg
  • del.icio.us
  • Fark
  • StumbleUpon
  • Technorati
  • Facebook

Topics: Development, Open source, Technology | Comments Off

Comments are closed.