[This was also cross-posted to the Tucows Developer Blog]
Inspired by Phil Haack’s article 19 Eponymous Laws of Software Development, I decided to collect laws, axioms and rules pertaining to mainstream software development and put them in a nice, easy-to-read table.
This is by no means a complete list of laws; I’ve purposely stuck to the ones that apply to everyday software development and steered clear of the more theoretical ones. Maybe I’ll compile a more complete list someday.
You’ll notice that some of the laws come from the world of biology — they also appear in some lists of software laws, and I think they still apply.
The Law | Who Said It | What it Says |
---|---|---|
Amdahl’s Law | Gene Amdahl | 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. |
Augustine’s Second Law of Socioscience | Norman Augustine | For every scientific (or engineering) action, there is an equal and opposite social reaction. |
Brooks’ Law | Fred Brooks | Adding manpower to a late software project makes it later. |
Clarke’s First Law | Arthur C. Clarke | 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. |
Clarke’s Second Law | Arthur C. Clarke | The only way of discovering the limits of the possible is to venture a little way past them into the impossible. |
Clarke’s Third Law | Arthur C. Clarke | Any sufficiently advanced technology is indistinguishable from magic. |
Conway’s Law | Melvin Conway | Any piece of software reflects the organizational structure that produced it. |
Cope’s Rule | Edward Drinker Cope | There is a general tendency toward size increase in evolution. |
Dilbert Principle | Scott Adams | The most ineffective workers are systematically moved to the place where they can do the least damage: management. |
Ellison’s Law of Cryptography and Usability | Carl Ellison | The userbase for strong cryptography declines by half with every additional keystroke or mouseclick required to make it work. |
Ellison’s Law of Data | Larry Ellison | Once the business data have been centralized and integrated, the value of the database is greater than the sum of the preexisting parts. |
The Law of False Alerts | George Spafford | As the rate of erroneous alerts increases, operator reliance, or belief, in subsequent warnings decreases. |
Fisher’s Fundamental Theorem | R. A. Fisher | The more highly adapted an organism becomes, the less adaptable it is to any new change. |
Fitts’ Law | Paul Fitts | The time to acquire a target is a function of the distance to and the size of the target. |
Flon’s Axiom | Lawrence Flon | There does not now, nor will there ever, exist a programming language in which it is the least bit hard to write bad programs. |
Gilder’s Law | George Gilder | Bandwidth grows at least three times faster than computer power. |
Godwin’s Law | Mike Godwin | As an online discussion grows longer, the probability of a comparison involving Nazis or Hitler approaches one. |
Grosch’s Law | Herb Grosch | 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. |
Heisenbug Uncertainty Principle | Jim Gray | Most production software bugs are soft: they go away when you look at them. |
Hick’s Law | William Edmund Hick | The time to make a decision is a function of the possible choices he or she has. |
Hoare’s Law of Large Programs | C. A. R. Hoare | Inside every large problem is a small problem struggling to get out. |
Hofstadter’s Law | Douglas Hofstadter | A task always takes longer than you expect, even when you take into account Hofstadter’s Law. |
Jakob’s Law of the Internet User Experience | Jakob Nielsen | 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. |
Joy’s Law | Bill Joy | smart(employees) = log(employees), or “No matter who you are, most of the smartest people work for someone else.” |
Kerckhoffs’ Principle | Auguste Kerckhoffs | 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. |
Linus’ Law | Eric S. Raymond, who named it after Linus Torvalds | Given enough eyeballs, all bugs are shallow. |
Lister’s Law | Timothy Lister | People under time pressure don’t think faster. |
Metcalfe’s Law | Robert Metcalfe | In network theory, the value of a system grows as approximately the square of the number of users of the system. |
Moore’s Law | Gordon Moore | The number of transistors on an integrated circuit will double in about 18 months. |
Murphy’s Law | Captain Edward A. Murphy | 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. |
Nathan’s First Law | Nathan Myhrvold | Software is a gas; it expands to fill its container. |
Ninety-ninety Law | Tom Cargill | 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. |
Occam’s Razor | William of Occam | The explanation requiring the fewest assumptions is most likely to be correct. |
Osborn’s Law | Don Osborn | Variables won’t; constants aren’t. |
Postel’s Law (the second clause of the Robustness Principle) | Jon Postel | Be conservative in what you send, liberal in what you accept. |
Pareto Principle (a.k.a. “The 80-20 Rule”) | Suggested by Joseph Juran, named after Vilifredo Pareto | For many phenomena, 80% of consequences stem from 20% of the causes. |
Parkinson’s Law | C. Northcote Parkinson | 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. |
The Peter Principle | Laurence J. Peter | In a hierarchy, every employee tends to rise to his level of incompetence. |
Reed’s Law | David P. Reed | The utility of large networks, particularly social networks, scales exponentially with the size of the network. |
Rock’s Law | Arthur Rock | 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. |
Spector’s Law | Lincoln Spector | The time it takes your favorite application to complete a given task doubles with each new revision. |
Spafford’s Adoption Rule | George Spafford | 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. |
Sturgeon’s Revelation | Theodore Sturgeon | Ninety percent of everything is crud. |
Tesler’s Law of Conservation as Complexity | Larry Tesler | 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. |
Wirth’s Law | Niklaus Wirth | Software gets slower faster than hardware gets faster. |
Zawinski’s Law | Jamie Zawinski | Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can. |
121 replies on “Laws of Software Development”
Shredded cabbage, Mayonnaise, and various spices make a fine salad. This is known as Cole’s law.
[…] found a very complete list of the laws regarding software development (I highly recommend reading that link. I’ll wait, go ahead). But from that list, we seem to […]
Don’t the Dilbet Principle and the Peter Principle contradict one another?
[…] from Joey deVilla’s tremendous Global Nerdy […]
[…] from Joey deVilla’s tremendous Global Nerdy […]
[…] Collected wisdom on programming Posted on 25/08/2010 by softtalkblog While looking for new parallel programming blogs this week, I stumbled across an ancient but timeless blog post by Joey deVilla. In it, he has collected together some of the most common laws of software development. […]
[…] vient d’expérience réelle), un peu hyperboliques (pareil): le blog Global Nerdy a compilé une série de lois, principes et autres axiomes ayant trait à la technologie et à l’informat…. […]
[…] wacky Global Nerdy blog, which not only gave my brain a Friday afternoon stretch, but also featured Laws of Software Development, which is a lot more fun than it […]
[…] The Rule of Least Power. I propose a corollary to this rule, which in the spirit of recent memes, I’ll call Atwood’s Law: any application that can be written in JavaScript, will […]
[…] muitas outras leis e corolários relacionados ao software [1][2]. Tomeis as 10 que são mais genéricas e com as quais me deparo todos os dias. Existem muitas […]
[…] Global Nerdy summarizes the major Laws of Software Development. Yes, Greg, Brooks is there. […]
[…] I stumbled on this great collection of some of the many, many software development laws. The author of the post notes that: “some of the laws come from the world of biology — they […]
[…] by ones which can. Here are still more great laws from Joey DeVilla’s Blog posting <http://globalnerdy.com/2007/07/18/laws-of-software-development/> […]
[…] For more on this topic, see also this article. […]
[…] On the note of laws related to software, check these […]
One surefire way to sound really really smart is to invoke a law or principle named after some long dead guy (an alive guy is acceptable too, but lacks slightly in smart points).
[…] wonder about my own value. Repeating a lot of Haack’s post, here’s a list of several Laws of Software Development. I particularly like all three of Clarke’s laws and Hartree’s. Another list of Laws of […]
[…] The Laws of Software Development. […]
[…] The Rule of Least Power. I propose a corollary to this rule, which in the spirit of recent memes, I’ll call Atwood’s Law: any application that can be written in JavaScript, will […]
Fantastic article, sir! Thanks!
Joey,
This list of software development laws is really something.
I was browsing for information on this kind of list and found yours. Really help a lot here.
Thanks man!