The Laws of Software
per unit cost
doubles every two years.
1965: Doubles every year
1975: Doubles every 2 years
Today: Doubles every 2.5 years
There's a upper limit to the theoretical speed up due to parallel processing.
When more processing is available, users tend to solve more complex problems.
Work expands so as to fill the time available for its completion.
Data expands to fill the space available for storage.
Software gets slower faster than hardware gets faster.
Computer performance increases as the square of the cost. If computer A costs twice as much as computer B, you should expect computer A to be four times as fast as computer B.
Be liberal in what you accept, and conservative in what you send.
Usefulness = log(Technology)
Clarke's Third Law
Any sufficiently advanced technology is indistinguishable from magic.
Arthur C. Clarke
Asimov's Laws of Robotics
- A robot may not injure a human being or, through inaction, allow a human being to come to harm.
- A robot must obey orders given it by human beings except where such orders would conflict with the First Law.
- A robot must protect its own existence as long as such protection does not conflict with the First or Second Law.
Adding manpower to a late software project makes it later.
The maximum number of voice/data calls that can be conducted in all of the useful radio spectrum over a given area doubles every 30 months.
The best way to get the right answer on the Internet is not to ask a question, it’s to post the wrong answer.
Given enough eyeballs, all bugs are shallow.
Any piece of software reflects the organizational structure that produced it.
Cost of the photovoltaic cells falls by 20% with each doubling of global shipment.
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.
The time to acquire a target is a function of the distance (D) to and the size (W) of the target.
Greenspun's Tenth Rule
Any sufficiently complicated C or Fortran program contains an ad-hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.
Barabási's Law of Programming
Program development ends when the program does what you expect it to do—whether it is correct or not.
Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.
The utility of large networks, particularly social networks, scales exponentially with the size of the network.
In network theory, the value of a system grows as approximately the square of the number of users of the system.
The Laws of Software
By Arvind Padmanabhan