logoalt Hacker News

besthamyesterday at 5:49 AM7 repliesview on HN

“A complex system that works is invariably found to have evolved from a simple system that worked. The inverse proposition also appears to be true: A complex system designed from scratch never works and cannot be made to work. You have to start over, beginning with a working simple system.” Gall’s Law


Replies

jandrewrogersyesterday at 4:06 PM

Some systems require a total commitment to the complexity because it is intrinsic. There is no "simple" form that also works, even if poorly. In many contexts, "systems thinking" is explicitly about the design of systems that are not reducible to simpler subsystems, which does come up in many types of engineering. Sometimes you have to eat the whole elephant.

There is a related phenomenon in some types of software where the cost of building an operational prototype asymptotically converges on the cost of just writing the production code. (This is always a fun one to explain to management that think building a prototype massively reduces delivery risk.)

show 1 reply
nasretdinovyesterday at 8:33 AM

I think the important part here is "from scratch". Typically when you're designing a new (second, third, whatever) system to replace the old one you actually take the good and the bad parts of the previous design into account, so it's no longer from scratch. That's what allows it to succeed (at least in my experience it usually did).

show 1 reply
codefloyesterday at 8:11 AM

This is often quoted, but I wonder whether it's actually strictly true, at least if you keep to a reasonable definition of "works". It's certainly not true in mechanical engineering.

show 4 replies
jackblemmingyesterday at 8:19 AM

People misinterpret this and think they can incrementally build a skyscraper out of a shed.

show 4 replies
McGlockenshireyesterday at 6:02 AM

Ah, the Second System Effect, and the lesson learned from it.

show 1 reply
YZFyesterday at 5:57 AM

So true.