A while ago, as I was contemplating the latest software project one of the teams was (and still is) working on, I was frustrated with the complexity of the project, and the (resulting) unclear timelines, and was fighting to urge to tear it apart and just have the project do just one thing, and do it right, and then start adding to it, I ran across Dr. John Gall's law on Complex Systems.
I was sure Dr. Gall (1925-2014) was some PhD of Computer Science from some Ivy League university - and was surprised to find out he was a Pediatrician (Children's Doctor) and he's not a PhD (Philosophy Doctor) but an MD (Medical Doctor)...
Reading his law, I knew it correctly "captured" and expressed my intuition.
In my words it says:
If you see you project planning is becoming complex, stop.
Then, start with the smallest working part. And add to it.
(Yes, there are details. But that's the spirit).
And here's the "official" version, from Wikipedia:
Gall's Law is a rule of thumb for systems design from Gall's book Systemantics: How Systems Really Work and How They Fail. It states:
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 (1975, p.71)
This law is essentially an argument in favour of underspecification: it can be used to explain the success of systems like the World Wide Web and Blogosphere, which grew from simple to complex systems incrementally, and the failure of systems like CORBA, which began with complex specifications. Gall's Law has strong affinities to the practice of agile software development.