Thursday, July 22, 2004


I've been thinking a lot about scalability. Over the last few years in the computer industry of course the issue has come up at work. And I think that I've gotten pretty good at recognizing and addressing the needs that it brings up. The thing is I've started to think about these sorts of issues on a wider scale than just programming.

The way I see scalability now is more of a set of complexities that you deliberately add to a system. Usually you don't want more complexity. It makes problems harder to debug, makes the code harder to maintain and explain to others, and just gives you an icky feeling if you've been trained as a computer scientist who likes neat "all edge cases included" solutions. The thing is, that the complexities you add are to address the real world "greys" of life (I'll need to write something on that later, but now is not the time.

You do things like design a complex way of separating the problem to allow it to be run on multiple computers simultaneously, or to not be entirely resident in RAM. Or you do things like add tracking numbers where a naive programmer wouldn't see the need and would figure they just waste bandwidth in a data stream. But again these complexities are specifically because naive solutions, while nice when written in papers, don't cut it when you actually have to build a system.

Anyway this has been on my mind with my shin splints.

"How?" you might ask. Well the thing is part of the problem was a lack of scalability in my running shoes. While I probably did push myself too hard, I think that a contributing factor to my injury was the $20 pair of sneakers I bought at Target. Now I didn't buy them for running, it was just that I needed a cheap pair of sneakers. But since that was all I had when I decided to start using a treadmill, I couldn't think of a reason for them to be any different than any other pair. I mean, really. What good would a little extra cushioning do anyway? You can hardly notice the effect.

Well it turns out you can notice the affect after weeks of running several miles every day. And I've started to notice other things around where you hardly notice the affect, and doubt the usefulness of some given add-on, and yet after a lot of use it makes a difference. It's the exact same affect as scalability concerns in programmingand yet for some reason I missed the logical connection.

To move a mountain, sometimes you need to move one pebble at a time. If you do, you need to have faith that the little bit you do per unit time adds up in the long run.

No comments: