4 ms·
"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 sy
by bg4 7y ago
"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."
- gavinray 7y agoI just made the connection between your statement "A complex system that works is invariably found to have evolved from a simple system that worked." and the common understanding among experienced developers that proficiency in software and the primary goal when designing and building a system is perpetually fighting complexity. You design and write the cleanest, most simplistic & adequate solutions for problems as they arise and ruthlessly battle introducing complexity as features and scope grow. Inevitably, after many years you will wind up with a system which by sheer size is complex. But only reason it works is because of the never-ending battle in the fight against complexity.
- bg4 7y agoYes, have to relentlessly drive down complexity. Starting with simple, pure functions that work and composing them together to build up more complex functionality goes a long way.
- YayamiOmate 7y agoDepending on the context this is either simply false or a truism. And thus imho offers no real informational value. You can't design complex system without some buiding blocks which basically definition of 'complex', but you can design a complex system before it's deployed and it can succeed. Itreatively designed system can hit a scalabilty wall or plateu where adding features is slower that a redesign. An evolving system design is a subject to a local minima of scalability and it needs careful apporach to maintain it. This sounds kinda like a rephrased "there's no problem that can't be solved by adding another abstraction layer".
- delian66 7y agoI disagree. The observation that working complex systems evolved from simpler ones is very useful, because from it follows a rule that, if you want to make a complex system, your best chance is to make a simpler system, then iteratively improve it. It practically solves the analysis-paralysis problem that otherwise is inevitable. Even total redesigns will benefit from the experience and information, that you got from the simpler system(s). These are often hard to derive by other means.
- gentleman11 7y agoPeople quote that frequently. Does anyone have counter examples? Eg, did DooM, the witness, Windows “rewrites” (I read certain releases were not really incremental, correct me if im wrong), or the nasa shuttle systems evolve from smaller versions? (Doom has WolfenStein, I forget if it was evolved from it though)