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.

Hofstadter’s law

It always takes longer than you expect, even when you take Hofstadter’s Law into account.

Brooks’s law

Adding manpower to a late software project makes it later.

Lister’s law

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.

Gall’s law

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.”)

Zawinski’s law

Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.

Linus’s law

Given enough eyeballs, all bugs are shallow.

Murphy’s law

Anything that can go wrong, will go wrong.

Sutton’s law

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”.)

Wirth’s law

Software is getting slower more rapidly than hardware becomes faster.

Conway’s law

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!

Sources: Wikipedia for everything except Lister’s law which we found here.

Image credit: The always excellent Geek and Poke.

12 comments

  1. My favorite rule which I apply whenever my technology gets messed up by someone is Hanlon’s razor: Never attribute to malice that which can be adequately explained by stupidity.

  2. The Dilbert Principle is a funny variation of the Peter Principle which is “In a Hierarchy Every Employee Tends to Rise to His Level of Incompetence.”

    http://en.wikipedia.org/wiki/Peter_Principle

    … and I’ve found that Conway’s Law is better represented by contrasting that an ITIL-laden company you will find huge amount of comments and error checking and references to dates and supporting documents in the sourcecode, but in a more lithe company the same sourcecode will be a small shell script.

  3. Law of Rx  Moving a working Database and code to a “e-” platform can actually lower productivity. Wait for the “f-” or “g-” to work out the kinks. (e.g   g-commerce to replace e-commerce)

Leave a Reply

Comments are moderated and not published in real time. All comments that are not related to the post will be removed.