7+1 Development Laws

These are some of my thoughts on what modern software development should take into account - or at least somewhat good development.

The 7 Laws

So what are laws and why do we need them? Since the beginning of time all societies, cultures and religions have had some form of law, those that did not, ceased to exist. They provide a moral compass, a shining light to keep people on a common path.

There are however many laws and many interpretations of those laws, many are in direct contradiction of each other. In the US eggs must be washed before sale and refrigerated, those same eggs would be illegal in the EU where washing is banned.

There are however some universal truth’s that apply no matter the place or culture. The 7 laws of Noah or 10 Commandments are almost universal amongst the abrahamic religions and western society.

The 7+1 laws presented below are universal and have been distilled from decades of research, experience and failure in the software development world by the giants. They apply to all software development irrespective of scale, domain and technology.

Law Description
Agile Failure is inevitable, plan for it, do it quickly, and most importantly learn from it.
Conways Law organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations
Brook’s Law Adding more people to a late project, makes it later
Kernighan’s Lever Debugging is twice as hard as writing a program in the first place. So if you’re as clever as you can be when you write it, how will you ever debug it?
The Cone of Uncertainty You won’t know how long it will take until it’s complete.
Dijkstra’s Law Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better.
Theory of Constraints An organisation can only be as agile as it’s least agile department

KISS - The 8th Uber Law

The 8th and arguable most important law of all deserves a section all on it’s own - Keeping things simple.

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.John Gall

Any intelligent fool can make things bigger and more complex… It takes a touch of genius - and a lot of courage to move in the opposite direction. - E. F. Schumacher

It seems that perfection is attained, not when there is nothing more to add, but when there is nothing more to take away. - Antoine de Saint Exupéry

System Design Principles