Thursday, May 8, 2008

Thirty Rules

Well, maybe more like guidelines.... or perhaps pearls of wisdom (lumps of grit encased in wads of secreted calcium?)

Just some rules of thumb that I've come up with over the last couple years... I've found they apply to a lot of different things.

Rule of Utility: Determine what the purpose of a thing should be before you create it. Do you actually need a thing, and if so, what do you need it to do? Is it supposed to remove gasoline fumes from a house, support a 50-ton load, or convey what April sunshine feels like on your skin?

Rule of Checkability: Get all the information you can about a subject before you begin making decisions.

Rule of Objectivity: Identify the performance standards or other criteria by which a thing will be judged. Remember to check to see if there are any new rules.

Rule of Separation: Separate the objective from the mechanism, and the mechanism from the policy. Rules are means, not ends.

Rule of Representation: Right from the start, explain what you are doing and why you are doing it. Having to explain things to others can help make it more clear to yourself.

Rule of Substance: There's no point being good at something if you look like a fool, and there's no point in looking good but being useless.

Rule of Infallibility: Remember that however smart or skilled you are, you can still make mistakes.

Rule of Casualty: If a thing does not work, identify the point at which starting over would be easier than trying to make an unsuccessful thing work. Do not reinforce failure. Do not polish turds. Accept and write off losses if necessary—there is no sense pouring more time and money down a bottomless hole.

Rule of Repeatability: Remember that your design or results will have to be implemented or repeated by others.

Rule of Clarity: Clarity is often better than genius—if it is sufficiently clear, anyone can understand it, but you have to be a genius in order to understand genius.

Rule of Genius: Despite Rule 8, just because you do not know what a genius is talking about does not mean that he doesn't know what he's talking about.

Rule of Modularity: Use simple parts connected by clean interfaces.

Rule of Composition: Design things to be connected to other things, and to work as part of a whole.

Rule of Versatility: Remember that a thing may not be used for the purpose for which it was originally designed, and may serve several different purposes at once.

Rule of Simplicity: Design for simplicity; add complexity only where you must.

Rule of Redundancy: Things may break, fail, or be stolen, so always have backup capacity.

Rule of Parsimony: Use a large, complex, or expensive thing only when it is clear by demonstration that nothing else will do.

Rule of Transparency: Design for visibility to make inspection and trouble-shooting easier.

Rule of Robustness: Robustness is the child of transparency and simplicity, while redundancy is a favorite uncle.

Rule of Alternatives: Always remember the alternatives that are available to you, and keep track of them as they change over time.

Rule of Least Surprise: In designing or writing something for someone else to build or implement, always do the least surprising thing.

Rule of Listening: It's always possible for anyone to know something that you do not.

Rule of Repair: When you must fail, fail noisily and as soon as possible.

Rule of Economy: Brain time is expensive; conserve it in preference to machine time.

Rule of Specification: Use standardized, off-the-shelf components when you can.

Rule of Optimization: Do prototypes and bench tests before finalizing or polishing. Get it working before you optimize it.

Rule of Extensibility: Design for the future, because it will be here sooner than you think.

Rule of Lifespan: Remember that things may require maintenance and upgrades. Try to remember which things they are.

Rule of Upkeep: Always consider the maintenance and upgrade costs when you're estimating something.
Rule of Diversity: Distrust all claims for "one true way," including these rules.

No comments: