Monday, December 29, 2008

Quality without a Name

Richard Gabriel is generous enough to offer one of his books online, Patterns of Software. Written over 1 binary millenia ago (1101 years), it is a philosophical look at software development, heavily influenced by Christopher Alexander, the inspiring architect.

Alexander's works are on my reading list, but Richard does a reasonable job of pulling out key principles related to software.

However, the most inspiring and poetic essay thus far has been Alexander's foreword. He reasoned for perfection and beauty in software, whereas so many of today's pundits argue for speed and turn around. Of course getting software done fast is important, but it must be done right - especially if you're building a platform to last for years to come.

All too often there is no beauty in what we ship. Our standards for architecture and design are below the bar, and our customers bear our disgrace. For example, on one project I worked on a few years back, I gained access to a software vendor's code. Low and behold, in the mist of their main algorithms where huge conditional branches based on customer IDs where they had tailored the software to each particular client. The code was painfully unapproachable and poorly performant.

An important principle stated by Alexandar is key, "In my life as an architect, I find that the single thing which inhibits young professionals, new students most severely, is their acceptance of standards that are too low... Gradually, I show the students that they have a right to ask this of themselves, and must ask this of themselves."

My experience is consistent with his; that when you push the standard, the work is more gratifying, it is more fun, and it has a deeper meaning. 

One of Alexander's points is about finding that "quality without a name". I'm still thinking about what that means to me for software. I'll let you read and ponder Richard's discussion on the topic to find meaning for yourself. 

In Christopher Alexander words: "If the heart of human existence, what matters most deeply to man, woman, child, really can find its way into computer programming, and into the programs, and into the meanings of those programs, and into the actual code and substance of those programs, and into their effects—then the future world will be changed immeasurably."