Software Laws and Principles

by moodyharsh 2016-09-04

Postel’s Law
“Be conservative in what you send, liberal in what you accept.”

Pareto Principle
“For many phenomena, 80% of consequences stem from 20% of the causes.”

Sturgeon’s Revelation
“Ninety percent of everything is crud.”

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

Murphy’s Law
“If anything can go wrong, it will.”

Brook’s Law
“Adding manpower to a late software project makes it later.”

Conway’s Law
“Any piece of software reflects the organizational structure that produced it”

Kerchkhoff’s Principle
“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.”

Linus’s Law
“Given enough eyeballs, all bugs are shallow.”

Reed’s Law
“The utility of large networks, particularly social networks, scales exponentially with the size of the network.”

Moore’s Law
“The power of computers per unit cost doubles every 24 month.”

Wirth’s law
“Software gets slower faster than hardware gets faster.”

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

Fitt’s Law
“The time to acquire a target is a function of the distance to and the size of the target.”

Hick’s Law
“The time to make a decision is a function of the possible choices he or she has.”

Occam’s Razor
““Among competing hypotheses, the one with the fewest assumptions should be selected.””

Hanlon’s Razor
““Never attribute to malice what can be adequately explained by stupidity.””

Peter Principle
“The selection of a candidate for a position is based on the candidate’s performance in their current role, rather than on abilities relevant to the intended role.”

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

The 90–90 Rule
“The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.”

Sayre’s Law
“In any dispute the intensity of feeling is inversely proportional to the value of the issues at stake.”

Release early, release often.
Worse is Better.
Do One Thing and Do It Well - Single responsibility.
You aren’t gonna need it.
Good is the enemy of perfect.
People are part of the system. The design should match the user’s experience, expectations, and mental models.
A Software System should have a single source of truth.
Don’t repeat yourself.
A replicated piece of code should be replaced by a new procedure, if it is repeated for more than three times.
Keep it simple and strightforward.
Conventions over Configuration.
Allow none of foo, one of foo, or any number of foo.
Worse is better, bazzar over the cathedral.
Make it run. Make it fast. Make it beautiful. Make it secure.