So last week I broached the topic of beautiful software: beautiful, that is, from the skilled programmer’s point of view.
In a discussion on that post, fellow-Patheosi Frank Weathers (fresh off of some Mustang-related supercharger replacement therapy) noted that software is like hardware: it has to work.
That is, pace Don Knuth, computer programming isn’t an art; it’s a craft, a tekhne: the art of making something useful. If the thing made doesn’t serve its purpose, it isn’t properly beautiful. This following object, for example, isn’t a chair:

Rather, it’s a sculpture, a work of art, that looks like a chair. Whether it succeeds as a work of art is open to discussion; but it certainly fails as a chair.
Compare this with one of Sam Maloof’s rocking chairs.
This is a Maloof rocker. Handmade, it is a beautiful object to look at; and I know from personal experience it’s a beautiful and comfortable rocking chair to sit in. (I once worked for a lady who owned a Maloof rocker, and also a large dining table and chairs.) You can’t afford one these days; one sold for over a million dollars not long ago. It’s a success not only as a chair, but also as a work of art.
Indeed, the outward beauty of the Maloof rocker, the visible beauty, is likely to obscure the inward technical beauty: the curve of the runners, the height of the art rests, the shaping of the seat to fit the tush comfortably, the calculation of forces so that the joints don’t begin to open after a few years of use.
The software equivalent of a Maloof rocker is a program that’s a joy for the user to use. It looks good, and it does what it’s supposed to, and it’s pleasant to use, and it’s solidly built internally to support those external things over a long period of time.
But there’s a difference between hardware and software. In the rocker, every part of the chair is open to view. The craftsmanship is in plain sight. In a software application, most of it is hidden. It’s a black box; it does the job, but who knows what it looks like inside. The history of software is rife with applications that were outwardly beautiful…and impossible to maintain, extend, or evolve because inwardly they were a mess.
You can hack at a piece of software until it does what you want; you can apply automated test suites so that you know it really does do what you want; and it can still be remarkably ugly on the inside. That’s the ugliness I’m talking about, and the place where I want to create beauty instead.
____
photo credit: ilovemypit via photopin cc