Wednesday, September 9, 2009

Evolution vs Revolution

Us humans, we're great at constructing complex, useful systems... so long as that's not what we're trying to do.

Consider the systems required for you to be reading this post right now: the internet, the web browser, RSS, the laptop on which I wrote the post, the machine on which you're reading it.

Consider the systems powering those systems: http, tcp/ip, dns, high level programming languages like C++ or Java, operating systems, MVC frameworks, XML parsers, hard drives, network cards, lcd monitors, microprocessors.

Consider the systems powering those systems: RFCs, low level programming languages like C and assembler, kernels, I/O theory, U/I theory, transistors, precise machining, sophisticated alloys and chemical production, all sorts of mining, etc.

I'm going to finish writing this in less than half an hour, and you're going to read it in far less time, but we're standing on the shoulders of giants here. Millions of man hours went into the technologies and systems that make this communication possible.

That's quite an effort, considering that no one ever planned all of this. Nobody ever sat down at a desk, put pen to paper, mapped out all of that stuff, and then put a plan into motion that would make it all happen. Many of the individual components were planned out in that manner, but by different people, at different times, responding to different needs.

Consider also our constitution, with over two dozen amendments, the doctrine of judicial review, and the entire corpus of legislation passed since the founding of our nation.

The key to great and useful systems is incremental design and loose coupling. Any time you see a large group attempting a revolutionary plan with a huge design and lots of moving parts, be wary. Whether it's Windows Vista, or the French Revolution, any scheme that bites off more than it can chew is destined for trouble. A small group isn't going to understand all of the interactions, incentives and hidden consequences necessary to pull off a plan of that magnitude.

It's in that light that I respond to things like TARP or the stimulus or current health care reform initiatives. They might work, they might not, but no one can really know what's going to happen. We've got frameworks like Keynesian demand theory, and theories on public choice, but the models all have far fewer moving parts than reality does.

1 comment: