Hacker News new | past | comments | ask | show | jobs | submit login
Gall's law
36 points by danw on Sept 13, 2008 | hide | past | favorite | 7 comments



The book that this is taken from is one of my all-time favorites, a quirky classic that deserves to be better known. Underneath its irreverence are quite a few profound insights. (I'd quote a couple but I leant out my copy.)

More here: http://news.ycombinator.com/item?id=182937

Edit: oh yeah, the book is http://www.amazon.com/Systems-Bible-Beginners-Guide-Large/dp...


A complex system that works is invariably found to have evolved from a simple system that worked.

While it's good to grow a system, and I (and many others) practice it and recommend it, I'm not sure about the invariably part.

I'm sure there are exceptions: like the famous space-shuttle software with minimal error rates; or the aircraft control software that has been mechanically verified in some ways (no null-pointer errors I think); or industrial control systems...

But maybe these even systems did have simpler prototypes, which were then enhanced in simple steps? I know I make faster progress when I operate like this. Or perhaps the prototypes were in the form of an algebra (or other abstraction), which developed from simple to complex in small steps. The final translation to code is also a simple step, and the final product only appears to materialize fully-formed.


Your examples perhaps don't look far enough back, and assume "system" means only one specific piece. One could just as easily assume that the "system" in the case of the space shuttle begins with flight and rocketry and the transistor and ends with NASA in Houston flinging a few tons of crap, and a couple of humans, into space and then bringing most of it back down again, usually intact. The software in question was made up of many pieces, many of which were proven useful and correct as parts of prior systems, such as the Apollo rocket guidance systems.

However, if we really take it to that extreme, I guess we'd end up with every "system" starting with fire and the wheel. So, I think it should perhaps be "Gall's truism", or "Gall's rule of thumb", though it doesn't have quite the same ring to it. It isn't quite provable, but can't really be argued against very effectively, either. And, you know, if you pretend like it's a law, it probably won't have negative consequences, while convincing yourself it is false very likely will have negative consequences.


I agree it's useful to assume it's true - also, comfortingly reassuring, that, well, one has to go step by step.

One way to disprove the "law" is to look for instances of "leaps in complexity" beyond mere evolution. The only example I can think of is the leap of intuition that geniuses sometimes have, that give an entirely different view of a problem: e.g. speed of light would appear constant if observers had different time frames; the molecules could be linked in a ring; water is displaced by volume.

But the new perspective is itself very simple in each case (assuming the background) - the leap is in having the insight at all, not in its complexity. These are not leaps in complexity; and therefore not counter-examples to "Gall's Law".


Systemantics is one of my favorite books. Here's a brief review/overview:

http://www.daltonlp.com/view/264


It's pg's recipe all over: spit out a lame version 1, see what turns out to be wrong, improve, iterate.


I know what you're saying, but I wouldn't use the term "lame." It seems that Gall's Law is essentially asserting that progressive evolution works, and spontaneous creation doesn't. Yet evolution also means that most participants, be they organic or electronic, fail, in the sense that they don't lead to descendants which carry on their code. Only a tiny fraction of all organisms/software have living/executing progeny today.

The article says Gall noted: "A simple system may or may not work." I'd add: "A simple system that works isn't necessarily any good."




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: