Laws and principles you should know about software development
For sure I am missing some important, but I have done this list of laws, principles or "jokes that are, indeed, true" about software development.
I'd love if you write in the comments more of these,...
Distributed Computing
- Brewers' Theorem: a distributed computer system cannot provide consistency, availability and partition tolerance, all at optimal levels.
- 8 Fallacies of Distributed Computing (L. Peter Deutsch)
- The network is reliable.
- Latency is zero.
- Bandwidth is infinite.
- The network is secure.
- Topology doesn't change.
- There is one administrator.
- Transport cost is zero.
- The network is homogeneous.
Project management
- Graham's Law: if they know nothing of what you are doing, they suspect you are doing nothing.
- Parkinson's Law: work expands to fill the time available.
- Kinser's Law: about the time you finish doing something, you know enough to start.
- Brooks's law: adding manpower to a late software project makes it later.
- Conway's law: organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.
- Ziv's Law: software development is unpredictable and that specifications and requirements will never be fully understood
- Humphrey's Law: users do not know what they want until they see working software.
- Wegner's Lemma: interactive systems can't be fully specified nor can it ever be fully tested.
Miscellaneous
- Pareto Principle: For many phenomena, 80% of the consequences stem from 20% of the causes.
- Miller's Law: the number of objects an average human can hold in short term memory is 7±2.
- Postel's Law: Be conservative in what you do, be liberal in what you accept from others.
- The Law Of Leaky Abstractions (Joel Spolsky): all non-trivial abstractions, to some degree, are leaky.
It's funny because is true
- 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.
- Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law.
- Hartree’s Law: Whatever the state of a project, the time a project-leader will estimate for completion is constant.