19 Eponymous Laws Of Software Development

0 comments suggest edit

One surefire way to sound really really smart is to invoke a law or principle named after some long dead guy (an alive guy is acceptable too, but lacks slightly in smart points).

hammurapisThis realization struck me the other day while I was reading a blog post that made a reference to Postel’s law. Immediately I knew the author of this post must be a highly intelligent card carrying member of MENSA. He was probably sporting some geeky XKCD t-shirt with a lame unix joke while writing the post.

Well friends, I admit I had to look that law up, and in the process realized I could sound just as scary smart as that guy if I just made reference to every eponymous (I’ll wait while you look that one up) “law” I could find.

And as a public service, I am going to help all of you appear smart by posting my findings here! Don’t let anyone ever say I don’t try to make my readers look good. If you look good, I look good.

Make sure to invoke one of these in your next blog post and sound scary smart just like me.

Postel’s Law

The law that inspired this post…

Be conservative in what you send, liberal in what you accept.

Jon Postel originally articulated this as a principle for making TCP implementations robust. This principle is also embodied by HTML which many attribute as a cause of its success and failure, depending on who you ask.

In today’s highly charged political environment, Postel’s law is a uniter.

Parkinson’s Law

Otherwise known as the law of bureaucracy, this law states that…

Work expands so as to fill the time available for its completion.

As contrasted to Haack’s Law which states that

Work expands so as to overflow the time available and spill on the floor leaving a very sticky mess.

Pareto Principle

Also known as the 80-20 rule, the Pareto Principle states…

For many phenomena, 80% of consequences stem from 20% of the causes.

This is the principle behind the painful truth that 80% of the bugs in the code arise from 20% of the code. Likewise, 80% of the work done in a company is performed by 20% of the staff. The problem is you don’t always have a clear idea of which 20%.

Sturgeon’s Revelation

The revelation has nothing to do with seafood, as one might be mistaken to believe. Rather, it states that…

Ninety percent of everything is crud.

Sounds like Sturgeon is a conversation killer at parties. Is this a revelation because that number is so small?

The Peter Principle

One of the most depressing laws in this list, if you happen to have first-hand experience with this via working with incompetent managers.

In a hierarchy, every employee tends to rise to his level of incompetence.

Just read Dilbert (or watch The Office) to get some examples of this in action.

Hofstadter’s Law

This one is great because it is so true. I knew this law and still this post still took longer than I expected.

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

By the way, you get extra bonus points among your Mensa friends for invoking a self-referential law like this one.

Murphy’s Law

The one we all know and love.

If anything can go wrong, it will.

Speaking of which, wait one second while I backup my computer.

The developer’s response to this law should be defensive programming and the age old boy scout motto, Be Prepared.

Brook’s Law

Adding manpower to a late software project makes it later.

Named after Fred Brooks, aka, Mr. Mythical Man Month. My favorite corollary to this law is the following…

The bearing of a child takes nine months, no matter how many women are assigned.

Obviously, Brook was not a statistician.

Conway’s Law

Having nothing to do with country music, this law states…

Any piece of software reflects the organizational structure that produced it

Put another way…

If you have four groups working on a compiler, you’ll get a 4-pass compiler.

How many groups are involved in the software you are building?

Kerchkhoff’s Principle

This principle is named after a man who must be the only cryptographer ever to have five consecutive consonants in his last name.

In cryptography, a system should be secure even if everything about the system, except for a small piece of information — the key — is public knowledge.

And thus Kerchkhoff raises the banner in the fight against Security through Obscurity. This is the main principle underlying public key cryptography.

Linus’s Law

Named after Linus Torvalds, the creator of Linux, this law states…

Given enough eyeballs, allbugsare shallow.

Where you store the eyeballs is up to you.

Reed’s Law

The utility of large networks, particularly social networks, scales exponentially with the size of the network.

Keep repeating that to yourself as you continue to invite anyone and everyone to be your friend in FaceBook.

Metcalfe’s Law

In network theory, the value of a system grows as approximately the square of the number of users of the system.

I wonder if Reed and Metcalfe hung out at the same pubs.

Moore’s Law

Probably the most famous law in computing, this law states…

The power of computers per unit cost doubles every 24 month.

The more popular and well known version of Moore’s law states…

The number of transistors on an integrated circuit will double in about 18 months.

And we’ve been racing to keep up ever since.

Rock’s Law

I was unable to find Paper’s Corollary, nor Scissor’s Lemma, so we’re left with only Rock’s law which states…

The cost of a semiconductor chip fabrication plant doubles every four years.

Buy yours now while prices are still low.

Wirth’s law

Software gets slower faster than hardware gets faster.

Ha! Take that Moore’s Law!

Zawinski’s Law

This law addresses software bloat and states…

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

I hear that the next version of calc.exe is going to include the ability to read email. A more modern formulation of this law should replace email with RSS.

Fitt’s Law

This is a law related to usability which states…

Time = a + b log~2~ ( D / S + 1 )

Or in plain English,

The time to acquire a target is a function of the distance to and the size of the target.

A well known application of this law is placing the Start menu in the bottom left corner, thus making the target very large since the corner is constrained by the left and bottom edges of the screen.

Hick’s Law

Has nothing to do with people with bad mullets. I swear. Related to Fitt’s law, it states that…

The time to make a decision is a function of the possible choices he or she has.

Or in plain math,

Time = b log~2~(n + 1)

Seems to me this is also a function of the number of people making the decision, like when you and your coworkers are trying to figure out where to have lunch.

Found a typo or error? Suggest an edit! If accepted, your contribution is listed automatically here.

Comments

avatar

65 responses

  1. Avatar for Eric Kemp
    Eric Kemp July 16th, 2007

    Occam's Razor
    "The explanation of any phenomenon should make as few assumptions as possible, eliminating those that make no difference in the observable predictions of the explanatory hypothesis or theory."
    It's a fancy way of saying K.I.S.S.

  2. Avatar for Travis Illig
    Travis Illig July 16th, 2007

    I think I met some goober at a conference that was wearing that shirt. Can't remember his name... :)

  3. Avatar for SBC
    SBC July 16th, 2007

    LOL!! Great post!
    I'd like to add the old DP (Data Drocessing) Law of System Delivery -
    "Double your estimate and replace with next unit of time". For example: original estimate: 6 weeks. Double: 12 weeks. Next unit of time: 12months.
    This law still works all the time in Corporate IT!

  4. Avatar for Mike
    Mike July 16th, 2007

    I'd like to add Lubarsky's law of Cybernetic Entomology: "There is always one more bug". Great work!

  5. Avatar for Barry Dorrans
    Barry Dorrans July 16th, 2007

    Given enough eyeballs, all bugs are shallow.


    And you don't object to this? Come now, that law is a lie by omission. It should be Given enough eyeballs connected to people who understand and who want to look for problems, understand the problems and can hold onto the entire system in their head, all bugs are shallow..

    I've always found the proclaimed many-eyes advantage to Open Source bogus simply because having the people doesn't make them look. How many Firefox users look at the code? A tiny tiny amount. And yet even then bugs slip through. Sometimes big gaping security bugs. Because it's doubtful everyone looks at it all. Sure you may find a bug in one area you are focussed on, but does that cover how that part integrates with others and chains down? No. Heck I don't examine a lot of the subtext checkins; do you? (Ok, you might oh benevolent dictator, but you get my point).


    Many eyes don't help unless the eyes are both focussed on the detail and wide enough to see the whole; and that's rare.

  6. Avatar for Kent Sharkey
    Kent Sharkey July 17th, 2007

    What? A list that long and you didn't include Godwin's Law? (Of course, I'm not sure how you could apply it to software development, but someone has.)

  7. Avatar for Ryan Smith
    Ryan Smith July 17th, 2007

    I thought that Haack's Law was:
    "Business needs and feature requirements increase to fill in the productivity gains due to silver bullets."

  8. Avatar for Alan Stevens
    Alan Stevens July 17th, 2007

    +1 for the Bill Hicks mullet joke.
    ++Alan

  9. Avatar for David Preece
    David Preece July 17th, 2007

    You forgot the corollary to Murphy's law: any attempt to deliberately apply Murphy's law is also bound to fail.

  10. Avatar for DotNetKicks.com
    DotNetKicks.com July 17th, 2007

    You've been kicked (a good thing) - Trackback from DotNetKicks.com

  11. Avatar for koz1000
    koz1000 July 17th, 2007

    The Start Menu is actually a bad example of Fitt's Law. When it was first implemented in Win95, the bottom row of pixels on the toolbar WASN'T RECOGNIZED as part of the "Start" button. Only in recent versions of Windows did they hack it to make the mouse jump up a little to hit the button (try it and see).

  12. Avatar for Bill Ford
    Bill Ford July 17th, 2007

    Briggs/Chase Law of Program Development: To determine how long it will take to write and debug a program, take your best estimate, multiply that by two, add one, and convert to the next higher units.
    So for example if you estimate 6 weeks, then its
    mult by 26wk * 2 = 12wk
    add 112wk + 1wk = 13wk
    shift unit:13 months.

  13. Avatar for Thomas Freudenberg
    Thomas Freudenberg July 17th, 2007

    I like the extended version of Murphy´s Law with bonus points for self-referencing:

    If anything can go wrong, it will, except if you rely on Murphy´s Law.
  14. Avatar for Jason Stangroome
    Jason Stangroome July 17th, 2007

    It's just not complete without Brannigan's Law.

  15. Avatar for Super
    Super July 17th, 2007

    You totally missed Greenspun's Tenth Law.
    Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.

  16. Avatar for ak
    ak July 17th, 2007

    90 - 90 law
    "The first 90% of the software takes 90% of the time to build, and the last 10% of the software takes the other 90% of the time."

  17. Avatar for Casual Observer
    Casual Observer July 17th, 2007

    > Kerchkhoff’s Principle
    > This principle is named after a man who must be the only
    > cryptographer ever to have five consecutive consonants in his
    > last name.
    You're forgetting about Helena Handschuh...
    http://www.informatik.uni-t...

  18. Avatar for Deryck Hodge
    Deryck Hodge July 17th, 2007

    Great and interesting post.
    I do believe the comment attributed to Linus Torvalds was actually made by Eric S. Raymond.

  19. Avatar for mynameishere
    mynameishere July 17th, 2007

    "What's your law"...

    http://www.edge.org/q2004/q...

  20. Avatar for Christopher Steen
    Christopher Steen July 17th, 2007

    Materials from "Using Behaviors to Flex Your WCF Muscles" posted [Via: tom.fuller ] MSDN Nuggets and...

  21. Avatar for Haacked
    Haacked July 17th, 2007

    @Travis - I bet he was a good looking really cool goober, right?
    @Barry - I'm just reporting it. Not making a judgment here. I agree, the real world practical implications mean that most projects don't get to enjoy this phenomena. Only the most popular with lots of developers.
    @Koz1000 - I was referring to Vista. But if it works now, doesn't that make it a good example of Fitt's law? Agreed, it was a bad example in the past.
    Regarding the laws I missed, keep them coming. I'll post a follow-up later.

  22. Avatar for Kit
    Kit July 17th, 2007

    Fraid Wikipedia beat you to it. Here's their full list:
    http://en.wikipedia.org/wik...
    I like Hanlon's Razor:
    "Never attribute to malice that which can be adequately explained by stupidity."

  23. Avatar for Matt Ellis
    Matt Ellis July 17th, 2007

    Re: Zawinski’s Law. I believe it's been "updated" to support RSS:
    http://www.furrygoat.com/20...
    Cheers
    Matt

  24. Avatar for pauldwaite
    pauldwaite July 17th, 2007

    Barry: "It should be Given enough eyeballs connected to people who understand and who want to look for problems, understand the problems and can hold onto the entire system in their head, all bugs are shallow..."
    I think the law assumes with, with enough eyeballs, a sufficient proportion of those eyeballs will be connected to people that match your description. It doesn't state how many eyeballs will be enough for a given bit of software.
    That's the thing about good laws: they limit themselves to accurately describing one true principle. They don't cover all the logical consequences of that principle and its interactions with other principles; that's left as an exercise for the reader.

  25. Avatar for Frank Wilhoit
    Frank Wilhoit July 17th, 2007

    Wilhoit's Corollary to Murphy's Law states that if anything can possibly go wrong, it already has: you just haven't found out about it yet.

  26. Avatar for Peter J.
    Peter J. July 17th, 2007

    Nice list.
    At the risk of ruining a good joke, the Peter Principle isn't about promoting incompeten{ts|ce}, it's about putting people into positions that match their abilities. Dilbert and The Office are funny, but have little or nothing to do with the principle.
    (Could be I'm defensive due to my name though. :)

  27. Avatar for A.B.Leal
    A.B.Leal July 17th, 2007

    Missing from both Wikipedia's and your list:
    Cheops' Law: Nothing ever gets built on schedule or within budget.
    Cole's Law: Thinly sliced cabbage.

  28. Avatar for bofe
    bofe July 17th, 2007

    http://en.wikipedia.org/wik...
    As an online discussion grows longer, the probability of a comparison involving Nazis or Hitler approaches one.

  29. Avatar for Haacked
    Haacked July 17th, 2007

    @Kit - That's a great list, but much broader than this list, which intends to only cover software and software management. It's why I didn't include Godwin's law.

  30. Avatar for mike's web log
    mike's web log July 17th, 2007

    Golly, is it Wednesday already?<br /><br />The Surname Study. According to this, if your last name begins with Z, you might as well give up, haha.<br /><br />I Want a Lucky President. Scott Adams posits that everyone has the same amount of luck, but it ...

  31. Avatar for Vincent Evans
    Vincent Evans July 17th, 2007

    At the first glance at the formula - it appeared to me that Fitt's law states that you can waste any amount of time if you have a blog and nintendo DS.

  32. Avatar for Robert
    Robert July 17th, 2007

    Great list.
    McLuhan's Law:
    If it works it's obsolete.

  33. Avatar for BigJimInDC
    BigJimInDC July 17th, 2007

    And don't forget "The Rock's" (yes, the wrestler) law: "Know your role and shut your hole!"
    Put another way, don't overstep the bounds of your role in the (development) process when you have yet to attain any semblance of perfection, or even solid competency, in your own role.
    Nothing chaps my @$$ more than the business analyst attempting GUI design when their analysis skills both are lacking and they refuse to get better at them. Or even admit that they are lacking in them. And to boot, their GUI skills are completely non-existent (i.e., no prior experience or education, just opinions). But they "want to get into GUI development" to prove their worth elsewhere because at heart, they know they suck at analysis (or are just bored with it, probably because they suck at it, but needed a job).

  34. Avatar for Luis
    Luis July 17th, 2007

    I feel smarter already.

  35. Avatar for Donnie Hale
    Donnie Hale July 18th, 2007

    I first heard this called "Stewart's Law of Retroaction": It's easier to ask forgiveness than get permission. No idea where the name came from or who Stewart is.

  36. Avatar for sjs
    sjs July 18th, 2007

    Sorry to contribute to this, but...

    How many Firefox users look at the code? A tiny tiny amount. And yet even then bugs slip through. Sometimes big gaping security bugs.


    Neither you nor I know how many users read the Firefox source, but I can tell you this much: it is more than the amount of people who read the source of any proprietary browsers. Similarly the amount of bugs the users fix is greater than zero, which is more than can be said for the proprietary browsers as well.
    Now of course they are not perfect, and Firefox is hardly the best application by any standard. However it is just good enough to be useful and popular to quite a few people, some of them smart programmers with time to read the source and fix bugs they stumble upon themselves.
    No one's saying it's a silver bullet that will cure all your ailments. If anyone says that about anything you should be cautious about believing them, software or otherwise. It happens to work very well for some projects, that's all.

  37. Avatar for Nathan
    Nathan July 18th, 2007

    "I've always found the proclaimed many-eyes advantage to Open Source bogus simply because having the people doesn't make them look. How many Firefox users look at the code?"
    To be fair, you should characterize those numerous firefox users as "many hands" rather than "many eyes".
    Some of them may be looking at the code, but most of them are just waving mice and tweaking knobs.

  38. Avatar for AJ Finch
    AJ Finch July 18th, 2007

    Appologies for being dragged into the "Many Eyeballs" thing...
    I think you will find (if you read _The Cathedral and The Bazaar_ by Eric S Raymond), that this refers to identifying the causes of known problems - not to finding bugs. So the fact that Firefox has bugs does not disprove the law, rather the measure of the law would be the time between a bug being identified by a user and the cause of the bug being understood by _a_ developer.
    ... I only post this because I realise that it _is_ of earth-shattering significance. Also because I wouldn't want anyone to be deprived of enjoying my own sense of self-importance.
    Great post and great comments (until this one).
    - AJ ;)
    ><>

  39. Avatar for Chris May
    Chris May July 18th, 2007

    If we keep commenting on this post, we will invoke Goodwin's Law:
    http://en.wikipedia.org/wik...
    As an online discussion grows longer, the probability of a comparison involving Nazis or Hitler approaches one.

  40. Avatar for Coding Horror
    Coding Horror July 19th, 2007

    Tim Berners-Lee on the Principle of Least Power: Computer Science spent the last forty years making languages which were as powerful as possible. Nowadays we have to appreciate the reasons for picking not the most powerful solution but the...

  41. Avatar for Coding Horror by Jeff Atwood
    Coding Horror by Jeff Atwood July 19th, 2007

    Tim Berners-Lee on the Principle of Least Power : Computer Science spent the last forty years making

  42. Avatar for Programming
    Programming July 20th, 2007

    Tim Berners-Lee on the Principle of Least Power : Computer Science spent the last forty years making

  43. Avatar for lb
    lb July 20th, 2007

    hey -- i was planning to write this article before you... and also, i suspect i'm the xkcd wearing mensa-ite you mentioned in the preamble, as i threw in a postel a few days ago
    (http://secretgeek.net/shake...
    lb

  44. Avatar for Haacked
    Haacked July 20th, 2007

    Oh ye of the big ego. The XKCD wearer was me and the Postel reference was in a post by Dave Winer.

  45. Avatar for Minh’s Notes
    Minh’s Notes July 21st, 2007

    Yes, the cows have come home: &lt;cite class=&quot;publication website weblog blog&quot;&gt;Minh&amp;rsquo;s Notes&lt;/cite&gt; is back.

  46. Avatar for Eswaran
    Eswaran July 24th, 2007

    good! all in one place!!!

  47. Avatar for Shan
    Shan July 25th, 2007

    My favourite:
    Simple programs never work the first time. Complex programs never work.

  48. Avatar for PeterJ
    PeterJ July 26th, 2007

    Peter's Law #1: If it's getting complicated, you're doing it wrong.
    Peter's Law #2: 90% of people who program, shouldn't.

  49. Avatar for D.A.Rogers
    D.A.Rogers July 31st, 2007

    You forgot my favorite:
    Cole's Law:
    Thinly sliced cabbage.

  50. Avatar for Jeff Knutson
    Jeff Knutson September 12th, 2007

    I was recently catching up on some old DotNetRocks podcasts (you *do* listen to DNR, right???) and during

  51. Avatar for NoonKnight
    NoonKnight September 12th, 2007

    All non-trivial programs have bugs.
    All bug free programs are trivial.
    ~unknown

  52. Avatar for Welcome to Bochek.com
    Welcome to Bochek.com October 7th, 2007

    Thinking of Quotes

  53. Avatar for root123
    root123 November 14th, 2007

    "The bearing of a child takes nine months, no matter how many women are assigned."
    This is really fun .....I feel that Project Managers should formulate something to deal with this.

  54. Avatar for ;-)
    ;-) December 18th, 2007

    19 Eponymous Laws Of Software Development

  55. Avatar for ;-)
    ;-) December 18th, 2007

    19 Eponymous Laws Of Software Development

  56. Avatar for Ashley
    Ashley April 24th, 2008

    Great post.keep it up!!!!

  57. Avatar for diane
    diane May 2nd, 2008

    Murphy's Law spawns so many excellent corollaries....
    Brideson's Corollary: Murphy's Law is both reentrant and recursive.
    (attributiondammit)'s Law: If anything fails to go wrong, it will ultimately be true that it would have been better if it had gone wrong.

  58. Avatar for Sid Savara - Personal Developm
    Sid Savara - Personal Developm August 11th, 2008

    Cool list! I was just about to make one of these for a friend, and Googled and came across your page.

  59. Avatar for franzwha
    franzwha September 18th, 2008

    A law derived from this (great and funny) blog:
    "People who post comments on blogs do not read previous comments"
    ... otherwise, there would not be 4 or 5 posts of the Godwin's law for instance... :o)

  60. Avatar for Mike
    Mike February 17th, 2009

    I'm going to send this link around - I know a bunch of geeks and maybe they'll be geeky enough to send enought traffic to make your server heat up a bit.
    Congratulations on a great post.

  61. Avatar for Guest
    Guest January 18th, 2013

    Jags Law: 90% of people who program, shouldn't.

  62. Avatar for Muigai Mwaura
    Muigai Mwaura January 18th, 2013

    "I knew the author of this post must be a highly intelligent card carrying member of MENSA."

    Ha, ha, ha! I feel a lot smarter after reading this article... sending off my application to Mensa now!

  63. Avatar for itoctopus
    itoctopus January 20th, 2013

    Gotta love that Wirth Law. Nevertheless, there are sometimes some gem pieces of software that take little space, little memory, and little processing power and deliver a lot.

  64. Avatar for RedmondGuy
    RedmondGuy April 24th, 2013

    A variant of Wirth's Law, more commonly known as Gates' Law: "What Intel giveth, Microsoft taketh away."

  65. Avatar for tim
    tim March 8th, 2015

    Hi Phil, thanks for the interesting posting. We are currently looking into Url Rewriting on an ASP.Net 2.0 based website. After reading this post I am considering using the Routing engine as it seems a much nicer, cleaner solution. So the question is, can we use the required dll's with ASP.Net 2.0?

    Cheers,

    Tim