www.jlion.com

Wednesday, March 14, 2007

I'm now about three quarters of the way through "Zen and the Art of Motorcycle Maintenance". It's great how the narrator's journeys through the western US parallel his intellectual journeys. On a climb to a high mountain top, he talks of the "high country of the mind" and discusses western philosphy. On a ride through monotonous badlands, he talks of quality and of eastern philosophy. Why western philosophy on a climb and eastern philosophy on a tedious part of the ride? Well, I think he's trying to get the point across that "zen" is not something you can work at. It, like the snaking canyon road that appears out of the meadowlands, is something that just happens if you put yourself in a place where it can.

He is talking a lot about esthetics now, and how quality is neither objective nor subjective but something apart from the two. As I read this, I think a little carved scrimshaw Chinese junk that I saw once in a Canadian museum. The scrimshaw junk was tiny and was intrically carved; obviously the work of many, many hours of careful carving. My thought when I saw the carving was that few people today could or would take the time to create such a work. When the carving was created the hours of the day lasted longer. No doubt the man who created the carving was on a boat himself, waiting for the wind to take him where he needed to go. For him, the carving was a way of passing the time. Now, the farthest points of the world are only days apart for the determined traveler. Who has or takes the time to create such things as this tiny bone boat? We focus on getting things done better, faster and quicker and what we lose is the journey.

As while reading ZATAOMM I have also been working to add some necessary enhancements to an application that I created a few months ago. The first iteration of the application was created under some rather strigent time constraints and in the first version I was forced to make some compromises so that the deadline could be achieved. Those compromises had to do, almost entirely, with less flexibility and expandability than I would have liked. Now that the client has used the application and likes it I am trying to add back in some of that flexibility that I left out in the first version.

Software is like soup. It's a mix of some different ingrediants that must be in the correct proportions or otherwise the soup tastes horrible. The quality in software is being able to add in just the right amount of each ingrediant.

  • Too many features can make the software hard to learn and understand unless additional ease of use is invested. As an example of this, compare Word Perfect for DOS with hundreds of estoteric format control codes with the most recent Word for Windows, where everything is controllable via toolbars and menu buttons. Word Perfect had many of the same features that Word for Windows has today but those features made it intimidating and hard to use.

  • Too much time can cause the software to miss the window of opportunity or to cost too much. After all, the purpose of software is to be used. Sure, you can write your accounting application in C++ but doing so will cost you time without adding significant benefit, affecting the quality of the application you create. On the flip side it may make sense to use VB to create a 3D CAD program if the program has a limited feature set and must be delivered quickly. Something else to consider is that any feature added is a feature that must be tested and that testing takes time.

  • Too much or too little flexibility can cripple an application. The software should not only allow the user to perform a task, but should also guide that user in the performance of that task. I think of Adobe Photoshop which is a wonderful application and which is extremely flexible - perhaps too much so for the occasional photo editing that I wish to do as I find that it takes me minutes every time I use it to rediscover the way to cut away a background image. Not to say that Photoshop doesn't have quality--obviously it does--but that it doesn't have as much quality for me as a specific user as it could.

  • A very important aspect of the quality of the software is the user interface. The application can deliver the moon in five different ways but if it has an ugly and hard to use user interface it can have poorer perceived quality than an application that does much less but which is easier to learn and use.

Whether computer programming is science or art is a subject of frequent debate. This I believe: Programming is art like building architecture is art or like bridge building is art where the artistic aspect derives from including the correct elements in the correct proportions.

0 Comments:

Post a Comment

<< Home