My wife and I are friends with a couple who are a filmmaker and a painter. As my wife is also a painter, I’ve occasionally referred to myself as the uncreative member of the group–a designation adamantly rejected by our painter (and former physics major) friend, who points out that programming is indeed creative.
While that’s technically true, there’s obviously a pretty big gap between painting and programming (although of course, I appreciate my friend’s inclusiveness). However I’ve struggled to concisely express the nature of the gap. I doubt there’s any original insight here, but this is how things finally clicked in my mind. It’s partly about the work process, and partly about the end result.
Every job that is not completely routinized involves a mixture of three levels of creativity. I’m going to call them design, craft, and building; but those terms are a little misleading, because not all designs are creative, and building often requires craftsmanship. What really distinguishes the three types of work is the objectivity of evaluating the output.
By design, I mean decisions where experienced practitioners can disagree wildly about what constitutes good or bad work. Visual art is an extreme case, with products such as color fields or pop art, which explicitly rely on social construction to become art. But software engineering has plenty of subjective decisions as well. Objective measures of usability are extremely limited; and it can take years to determine if a programming abstraction enables the right constructs, or what interactions are promoted by a piece of social software. Conversely, a painting or drawing intended for advertising or propaganda is much easier to evaluate than fine art, even if the techniques of production are the same.
Craft is technique that is generally agreed upon by practitioners of the field. Even if there are different schools of thought, experienced members of a school will typically agree on what constitutes good craft, and can probably even evaluate what is considered good by other schools. A lot of programming falls into this bucket; fans of Extreme Programming and dynamic languages may fall out with functionalists and formalists, but most developers can ultimately agree on whether a program is clean, elegant code. Most math and science probably fits here as well; except for trivial or automatically checkable proofs, or experiments with very few variables, a good deal of professional judgment is needed to evaluate a published result.
Finally, building is work whose quality is scientifically measurable. As in any science, the choice of what and how to measure is still subjective; but once that is decided, a computer can mechanistically determine whether a musician hit the right notes, or whether the new version of a program is 10% faster at specific tasks.
Of course, the creativity of any work also depends on how granularly you look at it. Debugging is often a very objective process: you know exactly what the program is doing wrong, and what it should be doing instead. But for some complex bugs, finding the cause of the error can require intuitive leaps, which are not provably right or wrong unless they ultimately lead to solving the problem. The same applies to finding mathematical proofs. Still, the mix between the three types of work provides a good measure of how creative a job ultimately is.
The other key question is the emotional impact of the output. Of course that depends largely on the observer; I’ve written before that Computer Science is beautiful (though software engineering is much less often so). But even the most elegant theorem does not touch me the same way as an Arcade Fire song or an Anselm Kiefer painting. I don’t know what it’s like to work on Transformers 3 or write Justin Bieber songs; maybe the purely manipulative commercial production of emotion is deadening to the creator. But most creative work with emotional content has to involve a certain attunement to that emotion.
There are also visual artists who use software as their medium. Movie and game studios typically have separate visual designers and programmers; artists such as Robert Hodgin do their own programming, albeit using frameworks developed by dedicated software engineers. I don’t know how many individuals out there are simultaneously pushing the boundaries in both technology and visual or aural art, but it would certainly be an admirable combination.
The bottom line is that creativity is not an either/or. No one’s job is 100% creative (the most successful painter in the world still has to order supplies) and the only work that’s 0% creative is an assembly line. Personally, I’m glad that my work has enough creativity to keep me interested, but not so much that I come into work in the morning with no clue what to do. To everyone out there–whether for job, vocation, or hobby–who frequently stares down the blank canvas, the empty page, the clean sheet of music: you have my admiration.