I have been going through some change. Good change. The kind of change which makes a professional question the merit and quality of their work. It’s the kind of change which leaves the inquisitive pondering for days. Am I writing good software? What is good software, anyway?
I though I have always know the answer to the second question: “good software is the kind people want to use”. As a friend once said, show me a pain, and I will show you a business (I paraphrase). Add to this idea an element of fun, as a game would, and you have good software. Yet good software, the kind people take for granted, goes beyond these basic parts.
For the real answer, I first looked at Microsoft’s Word. It satisfies my pains (check) and is visually attractive (check, done). But it’s not good software. When I need to write, not spellcheck, not format, I mean *write*, I turn to VIM. It’s not at the level of good I am talking about, but VIM is better than Word. The latter is complete and well build and it is good in a technical way, but we’re talking about *good* not just good.
Google is another application I often use. It relieves my pains, as all software should for its sake, and it’s good. It is so good it commands with over 72% of the search engine market share. When I search on Google, I do not think of the search engine, I am focusing on the search and the results. Little did I know, I had stumbled on my answer.
Software is a tool. Driving a nail with bare hands is challenging — a real pain –; driving with a hammer is immensely easier. With a nail gun, however, the nail disappears completely. After all, the nail should not be the target of ones work, the construction of a house is.
Good software then is the essence of transparency. Good software does not exist to the user, just as good code is invisible to the programmer. What does exist is the experience between the user and their target. Whether one’s goal is expression, communication, creativity, entertainment, control or any of the other human needs, software is only the road by which he or she travels. A freshly paved road leaves the traveler thinking about their destination and its outcome instead the challenges of travel.
With the principle that all good software should appear transparent, I can now work enlightened. Where ever usability or functionality need consideration, I can use this principle to guide me.
On a side note, the finest writing tool is WordPress in running in Firefox.