Software Laws

Atwoods's Law

Any application that can be written in JavaScript, will eventually be written in JavaScript.

Brook's Law

Adding human resources 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 organisations.

Cunningham's Law

The best way to get the right answer on the internet is not to ask a question; it's to post the wrong answer.

Finagle's Law

Anything that can go wrong, will—at the worst possible moment

Gall's Law

A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system.

Goodhart's Law

When a measure becomes a target, it ceases to be a good measure.

Hanlon's Razor

Never attribute to malice that which is adequately explained by stupidity.

Hofstadter's Law

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

Hyrum's Law

With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviours of your system will be depended on by somebody.

Kerchkhoff's Principle

A cryptosystem should be secure even if everything about the system, except the key, is public knowledge.

Knuth's Optimization Principle

We should forget about small efficiencies, say about 97% of the time: premature optimisation is the root of all evil. Yet we should not pass up our opportunities in that critical 3%.

Linus's Law

Given enough eyeballs, all bugs are shallow.

Metcalfe's Law

The effect of a telecommunications network is proportional to the square of the number of connected users of the system.

Miller's Law

The number of objects an average human can hold in working memory is 7 ± 2.

Moore's Law

The number of transistors in a dense integrated circuit doubles about every two years.

Muphry's law

If you write anything criticizing editing or proofreading, there will be a fault of some kind in what you have written.

Murphy's Law

Anything that can go wrong will go wrong.

Ninety-ninety 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.

Norvig's Law

Any technology that surpasses 50% penetration will never double again (in any number of months).

Pareto Principle

Roughly 80% of the effects come from 20% of the causes

Parkinson's Law

Work expands so as to fill the time available for its completion.

Putt's Law

Technology is dominated by two types of people, those who understand what they do not manage and those who manage what they do not understand.

Putt's Corollary

Every technical hierarchy, in time, develops a competence inversion.

Robustness Principle

Be conservative in what you do, be liberal in what you accept from others.

Roseberg's Law

Software is easy to make, except when you want it to do something new. [...] The only software that's worth making is software that does something new.

Sayre's Law

In any dispute the intensity of feeling is inversely proportional to the value of the issues at stake.

The Peter Principle

People in a hierarchy tend to rise to their level of incompetence.

Wiio's Laws

Human communications usually fail except by accident.

Wirth's law

Software is getting slower more rapidly than hardware becomes 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.