Archive for September 4th, 2003
Programming’s Zen

Nothing like getting something to work correctly. Crafting some code to do a job that existed hours before as only a thought or a wish. It harkens back to the older times when craftsmanship and a man’s ability to create something from nothing really meant something to the society around him.

Even in modernity, we have come full circle to this idea that those who can create are valuable and worthwhile members of society. Sure, now we create with our minds more so than our hands, but we still use tools and personal experience to refine our product. In the same way that a blacksmith uses different hammers or mallets, a programmer might use a different IDE or different method.

Too often in the programming world, we rely on those tools deemed the best or the most capable by a rather small group of supposedly learned guides. We should instead embrace the idea that people work in different ways and that those different tools might hinder one person while facilitating another. Sure, OOP sounds great, but what does that matter to someone who is simply trying to get pictures mailed to their grandmother.

As programmer’s, we seem to be holding the torch of knowledge and letting the light leak out as we see fit. We deem it okay to occasionally let the rest of the world know what we are doing. In doing so, we often find ourselves preaching that users should learn to use their computers better. That’s not what’s needed however.

We should embrace simplicity not just for its sake, but to increase the traction of technology amongst people who only want to do things better and faster. Let our peers beam about how elegant our solution is, but let the user beam about easy it is to use and how it does exactly what you want it to do.

In truth, it boils down to the golden rule. Just as I wouldn’t want an accountant to fill me in on how the tax code manages to care about how muh money my dog is worth, I shouldn’t expect him to know that he can modify his MS Word templates to do some things for him automatically instead of having to type them every time. I also shouldn’t expect users of my web form to know HTML to create text online that looks halfway decent.

The thing is that it’s not hard to add these things to applications, be they web-based or otherwise. It just takes longer. We would be happier refining the class that manages uploads than we would in ensuring that the button placement on the upload page is as clear as possible.

Greater forms of programming and code reuse are not what we should be focusing on at the moment. The .NET framework, Java, PHP, and Python give us plenty of ways to programmtically solve problems. Usability should be the watchword of the next few years. Let’s ensure that all out fancy classes and inheritance don’t leave the majority of users in a befuddled sinkhole.