Donald Knuth, one of the legends of programming, has since 1962 written a multi-volume encyclopedia called “The Art of Computer Programming”. In a perfect irony, he hasn’t finished it. But I want to talk about the title.
Knuth, who I feel can reliably be labeled an authority on the subject, chose the term “Art” to describe programming. Most people think of computers as a science. What does that mean, the Art of programming?
Science concerns itself with the search for truth, so scientists only interest themselves in exploring new ideas. As programmers, we tend to tread the same ground over and over again. But so does art.
Art is another word for communication. The better an artist you are, the more you communicate. You work in some medium, and on one level the artifact produced in that medium is the communication. Art has to work at the literal level. Does it work as intended? A program that doesn’t do what it’s supposed to fails to communicate.
If you’re a working programmer, you need to produce working programs, just like a chef needs to produce edible food. But a chef is judged on much more than whether their food is safe to eat. Presentation matters. Historical and cultural references enhance the experience. Details matter, feelings matter.
The better an artist you are, the more levels on which you communicate. Great programmers express more than programs that simply work: they compose experiences that are a pleasure to use. So like all artists, they must become the person capable of that communication.
The best programs are the ones you enjoy the most. Programs have many quantifiable properties, speed and capacity and the like, but user satisfaction is the most important.
Write programs for others to enjoy, and you’ll be a great artist.