Quirky but (mostly) useful software development rules
There are plenty of both formal and informal rules that programmers love to quote, either because they’re fun or quirky, or simply because they are useful and thought-provoking.
We’ve gathered some of the most interesting ones for your reading pleasure. Enjoy!
The ninety-ninety rule
The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time.
It always takes longer than you expect, even when you take Hofstadter’s Law into account.
Adding manpower to a late software project makes it later.
People under time pressure don’t think faster.
The MoSCoW method
A technique to prioritize delivery requirements during development. MoSCoW stands for:
M – MUST have this.
S – SHOULD have this if at all possible.
C – COULD have this if it does not affect anything else.
W – WON’T have this time but WOULD like in the future.
The KISS principle
Keep It Simple, Stupid. In other words: avoid complexity, embrace simplicity.
A complex system that works is invariably found to have evolved from a simple system that worked.
Worse is better (New Jersey style)
Describes how a seemingly “inferior” product can be better from a user perspective. A limited but easy-to-use software may be more popular among users than a “better”, more comprehensive one.
Greenspun’s tenth rule
Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.
(A funny note is that there are no preceding rules, only the tenth. According to Philip Greenspun, this was because he was “just trying to give the rule a memorable name.”)
Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.
Given enough eyeballs, all bugs are shallow.
Anything that can go wrong, will go wrong.
Go where the money is.
(When attempting to diagnose a problem, confirm the most likely diagnosis first (i.e. test the most likely solution first). Named after Bank robber Willie Sutton, who robbed banks “because that’s where the money is”.)
Software is getting slower more rapidly than hardware becomes faster.
Any piece of software reflects the organizational structure that produced it.
(Interesting example of how this can cause problems: NASA’s Mars Climate Orbiter crashed because one development team used English units while the other used metric units to control the thrusters.)
The Hollywood principle
Don’t call us, we’ll call you.
(Instead of your program running the system, the system runs your program.)
The Dilbert Principle
The most ineffective workers are systematically moved to the place where they can do the least damage: management.
Your favorite rule/law?
There are sure to be plenty of useful/funny/interesting development laws and rules we haven’t included here, so let us know in the comments if we missed your favorite!
Image credit: The always excellent Geek and Poke.