My New Favorite Blogger

Steve Yegge of Stevey's Blog Rants is my new favorite blogger. Why? Because, like Joel Spolsky, his writing is fantastic. He's funny, engaging, insightful and, unlike Joel, he is a real hard-core coder, he doesn't fake deep knowledge of software engineering.

But more than that, the guy really understands computers, really understands languages. He sees that the world of computers that we have around us is a fluke. All the decisions, all the architecture, all the languages, the tools, the databases, the protocols, the hardware, they are all the way they are because we zigged instead zagged. We are where we are because once we found something, anything, that worked sufficiently, we collectively moved on to the next pressing problem, and we haven't revisited the old decisions. Instead we keep applying band-aids to our old concepts, trying ever so hard to keep pushing the old decisions forward, never seeing that they are running out of steam. Steve writes in his Moore's Law Is Crap post:

Is our industry ever going to get out of this amazing backwater of a gridlock, this evolutionary dead-end we're in, where we programmers act like army ants, churning out loops and SOAP calls and UML diagrams as if we're weaving cloth with the very fabric of the computational universe?

And so many of us think things are the way they are because that's the way they must be. We never realize how much of our tools and our outlook on the types of problems we can solve are deeply affected by the decisions made along ago. If we'd have zagged instead of zigged, certain problems would be much easier and others, much harder. And that's not to say that's we should have zagged, but we need to acknowledge it. We need to realize that we can build and learn to use radically better tools, tools that are well known and commonplace in a parallel universe, but look completely foreign in ours. And it's just because we zigged, that's all.

Of course, it's not as easy as just creating a new technology, new tools. You have to understand the people that will use them, you must understand what it is they know and how you can use their existing knowledge to make the transition to new concepts, technology, idioms, whatever, easier. You pick metaphors that people will understand. You use terminology and idioms that people already know, are already used to, and try to bridge the cognitive gap of what they need to learn and make it as painless as possible. If you've ever created something as fundamental as a programming language, you'll understand the awesome power you hold, and how easy it is to make something completely incomprehensible and unusable for people who aren't you.

Anyway, I like to read Steve's blog. You should read it too.

Posted March 24, 2006 12:46 PM