The Laws of
Computing and Software Development
The speedup gained
from running a program on a parallel computer is greatly limited by the
fraction of that program that can’t be parallelized.
Anderson's
Law (Law of Computability)
Any system or program,
however complicated, if looked at in exactly the right way, will become even
more complicated.
For every scientific
(or engineering) action, there is an equal and opposite social reaction.
Adding manpower to a
late software project makes it later.
When a distinguished
but elderly scientist states that something is possible he is almost certainly
right. When he states that something is impossible, he is very probably wrong.
The only way of
discovering the limits of the possible is to venture a little way past them
into the impossible.
Any sufficiently
advanced technology is indistinguishable from magic.
Any piece of software
reflects the organizational structure that produced it.
If you don't know what your program is supposed
to do, you'd better not start writing it.
The most ineffective
workers are systematically moved to the place where they can do the least
damage: management.
The user base for
strong cryptography declines by half with every additional keystroke or mouse click
required to make it work.
Ellison’s Law of Data
Once the business data
have been centralized and integrated, the value of the database is greater than
the sum of the preexisting parts.
As the rate of
erroneous alerts increases, operator reliance, or belief, in subsequent
warnings decreases.
The more highly
adapted an organism becomes, the less adaptable it is to any new change.
The time to acquire a
target is a function of the distance to and the size of the target.
There does not now,
nor will there ever, exist a programming language in which it is the least bit
hard to write bad programs.
If you put tomfoolery
into a computer, nothing comes out but tomfoolery. But this tomfoolery, having
passed through a very expensive machine, is somehow ennobled, and no one dares
to criticize it.
Bandwidth grows at
least three times faster than computer power.
As an online
discussion grows longer, the probability of a comparison involving Nazis or
Hitler approaches one.
The cost of computing
systems increases as the square root of the computational power of the systems.
Hartree’s Law
Douglas Hartree
Whatever the state of
a project, the time a project-leader will estimate for completion is constant.
The time to make a
decision is a function of the possible choices he or she has.
The time to make a
decision is a function of the possible choices he or she has.
Inside every large
problem is a small problem struggling to get out.
A task always takes
longer than you expect, even when you take into account Hofstadter’s Law.
Users spend most of
their time on other sites. This means that users prefer your site to work the
same way as all the other sites they already know.
smart(employees) =
log(employees), or “No matter who you are, most of the smartest people work for
someone else.”
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.
Eric S. Raymond
Given enough eyeballs,
all bugs are shallow.
People under time
pressure don’t think faster.
Lubarsky's Law
There's always one
more bug.
In network theory, the
value of a system grows as approximately the square of the number of users of
the system.
Yes, you can; but what
is the goal?
(Sell the software you
have, including the bugs; improve with the profits.)
The number of transistors
on an integrated circuit will double in about 18 months.
If there are two or
more ways to do something, and one of those ways can result in a catastrophe,
then someone will do it.
Software is a gas; it
expands to fill its container.
The first 90% of the
code accounts for the first 90% of the development time. The remaining 10% of
the code accounts for the other 90% of the development time
The explanation
requiring the fewest assumptions is most likely to be correct.
Osborn’s Law
Don Osborn
Variables won’t;
constants aren’t.
Be conservative in
what you send, liberal in what you accept.
Suggested by Joseph Juran, named after Vilifredo
Pareto
For many phenomena,
80% of consequences stem from 20% of the causes.
Work expands so as to
fill the time available for its completion.
Pesticide Paradox
Bruce Beizer
Every method you use
to prevent or find bugs leaves a residue of subtler bugs against which those
methods are ineffectual.
In a hierarchy, every
employee tends to rise to his level of incompetence.
The utility of large
networks, particularly social networks, scales exponentially with the size of
the network.
The cost of a
semiconductor chip fabrication plant doubles every four years.
Sixty-sixty Rule
Robert Glass
Sixty percent of
software’s dollar is spent on maintenance, and sixty percent of that
maintenance is enhancement.
The time it takes your
favorite application to complete a given task doubles with each new revision.
For just about any
technology, be it an operating system, application or network, when a
sufficient level of adoption is reached, that technology then becomes a threat
vector.
Ninety percent of
everything is crud.
You cannot reduce the
complexity of a given task beyond a certain point. Once you’ve reached that
point, you can only shift the burden around.
Weibull’s
Power Law
Waloddi
Weibull
The
logarithm of failure rates increases linearly with the logarithm of age.
Software gets slower
faster than hardware gets faster.
Every program attempts
to expand until it can read mail. Those programs that cannot so expand are
replaced by ones that can.