2008-05-03 »
Architecture Astronauthood
Joel Spolsky has a recent article called Architecture Astronauts take over. The only comments I can seem to find on his article are negative ones, which is too bad.
Now, I'm a bit of an architecture astronaut myself sometimes. Even so, I believe Joel's totally right.
...but he's missed (maybe deliberately for effect) a couple of important points.
One is that "architecture problems" really can be important to customers in the end. Not directly, but because they can make it easier to solve a certain class of problems that customers do have. Synchronization is, I believe, one of those problem classes. I've spent a lot of time thinking about and working on (real customer) problems that come down to the synchronization problem, and wishing there were a magic "synchronize this" button I could just click and have things always work out. There still isn't, and maybe there never will be, but I still hope there will. (rsync is the closest thing we have, and it's a huge architectural step forward - but there's more I need to synchronize than just files, and librsync seems to be largely ignored for some reason.)
The second point he misses is that giant non-user-focussed architectural projects are not always a waste of time. "The only difference between genius and insanity is success."(1) Look at MacOS X, for example; Apple threw out pretty much everything from the original MacOS, and spent years rewriting the entire thing from scratch. It was a total loser for years and years of development, and the pain continued even for years after its initial release, because it was slow and buggy and incompatible. And yet now it's powering some of the world's most popular (or at least coveted) laptops and cell phones.
It was a huge risk. For every MacOS X, there are dozens of examples of failed, mind-bogglingly expensive and time-consuming, attempts to build a new desktop operating system. Even Apple hasn't won more than a tiny fraction of the market. Thus, Joel is exactly right; anybody who would try this basically has no concept of risk vs. return.
And yet, thank goodness for those people.(2)
Footnotes
(1) Can anybody find a good source for that quote?
(2) Not that Microsoft's latest attempt seems any more likely to succeed than the previous ones. I said rsync was a huge step forward, but it's really just a tiny little tool based on a brilliant concept. The "synchronization problem" needs more of those, not another giant multibillion dollar "synchronization platform." An operating system needs to support everything I need to do, while synchronization is just one of the difficult things I need to do sometimes.
Why would you follow me on twitter? Use RSS.