Laws Of Software Development
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).
This 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.
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.
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.
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%.
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.
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.
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.
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.
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?
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.
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.
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.
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.
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.
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.
Software gets slower faster than hardware gets faster.
Ha! Take that Moore’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.
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.
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.