Some laws in software development
Brooks’s Law
Adding more people to a late project makes it even later. Fred Brooks
Conway’s Law
Any piece of software reflects the organizational structure that produced it. Melvin Conway
Cope’s Rule
In evolution, there is a general tendency towards increased size. Edward Drinker Cope
Hoare’s Law and Schainker’s Inverse Law
Behind a big problem there is always a small problem struggling to get out. Within a small problem there is always a big problem struggling to get out. Tony Hoare
Hofstadter’s Law
A task always takes longer than you expect, even when you take into account Hofstadter’s Law. Douglas Hofstadter
Linus’s Law
Given enough eyeballs, all bugs are shallow. Linus Torvalds
Lister’s Law
People under time pressure don’t think faster. Tim Lister
Nathan’s First Law
Software is a gas; it expands to fill the container it occupies. Nathan Myhrvold
Ninety-ninety rule
The first 90% of the code accounts for the first 10% of the development time. The remaining 10% of the code absorbs 90% of the development time. Tom Cargill
Occam’s Razor
Among competing hypotheses, the one with the fewest assumptions should be selected (original in Latin: “entia non sunt multiplicanda praeter necessitatem”, which could be translated as “entities should not be multiplied beyond necessity”). William of Ockham
Pareto Principle (a.k.a. “The 80-20 rule”)
80% of the consequences come from 20% of the causes Vilfredo Pareto
Parkinson’s Law
Work expands so as to fill the time available for its completion. C. Northcote Parkinson
Tesler’s Law of Conservation of Complexity
You cannot reduce the complexity of a task beyond a certain point. Once that point has been reached, you can only shift the complexity from one part to another. Larry Tesler
The Pesticide Paradox
Every method you use to prevent or detect errors leaves another residue of errors against which these first methods are ineffective. Bruce Beizer
Flon’s Axiom
There is not and never will be a programming language in which it is difficult to write bad programs. Lawrence Flon Lehman’s Laws of Software Evolution
Law of Demeter
Only talk to your immediate friends. Don’t talk to strangers.
A method of an object can only call methods of:
- 1 – The object itself.
- 2 – An argument of the method.
- 3 – Any object created within the method.
- 4 – Any direct property/field of the object itself.