I’ve just launched Laws of Software, a website which catalogs the rules-of-thumb which are thought to govern software development. Spend a little time among software developers or especially managers and you’ll hear references to them hear and again: some of the most frequently name-checked are Conway’s Law and the Knuth principle of premature optimization, for instance. Moore’s Law is so well-known as to have entered the popular press. About a year and a half ago, I started looking around online for a canonical list of these laws; for some reason or another, I couldn’t find such a list, not even a collection on Wikipedia. This site is my humble attempt to address the situation, and I think I’ve learned a few things in compiling it.

To begin with, it’s sort of an interesting exercise to gather a structured data set like this for the first time. To be sure, there is plenty of raw material online - we are talking about the laws of software after all. There are a bunch of good blog posts which provide lists along the lines I was looking for, and Wikipedia tends to have a good handle on the source material. But I don’t think anyone has actually thought to put together this data set in this format before; the closest example I could find was the Principles Wiki, which isn’t quite what I’m after. Certainly I’d be interested to hear about other data sets I may have missed!

It’s also interesting to see that these laws have relationships to one another. Obviously there is Wirth’s Law, which seems to be meant as a rejoinder against Moore’s Law; Rock’s Law is also a kind of rejoinder to Moore’s. There are also no small number of rules about complexity and growth, ranging from Kernighan’s to Zawinski’s. The data set is small enough - less than 20 laws - that a single person can readily curate the whole set and gain these kinds of insights in the process.

For my own purposes I enjoy seeing how many of these laws originate in other fields of study. Parkinson’s is really an observation about organizational growth at large; Fitt’s Law comes from usability studies. Cross-over among disciplines is a particular fascination for me, and it’s precisely for this reason: in my view, the “laws” of one discipline sometimes apply to another discipline, often with surprising results. Indeed, you might say that it’s this fascination which drew me to this project in the first place.

I hope this website proves to be an accessible look at software and the rules which govern it. And I certainly hope to add more to this collection over time.

Image courtesy of Wesley Tingey