Truth be told, I’m not big on software development. I became a programmer by hanging out at Radio Shack and trying to figure out what made the beasties run, but it wasn’t the career I had intended to enter. I grew up doing cartoon animation, and it was an expensive hobby in those days.
But this posting isn’t about my career choices. This is about software development and the myth, often voiced by programmers, that what they do is an art.
Now, there are exceptional programmers. And there are exceptional programmers who are artists. There are men who, with an understanding of the programming language and the architecture of the hardware on which it runs, can craft simple and elegant solutions in less than one tenth of the execution space and time that ordinary programmers do. But the programming profession is far from an art form.
Programming isn’t an art form not because it’s derived from mathematics or is executed on emotionless, sterile computing machinery; but because not enough is understood about what makes an effective program and how to build one. The vagaries of the practice don’t prove it’s art. It proves it isn’t.
To demonstrate this difference in more concrete terms I’ll illustrate with an overview of the development of an animated film, which I hope you would consider to be an art.
Initially, a story treatment is presented giving an overview of the film’s premise, the characters involved and the plot. If interested, the studio will pick up a treatment and secure a script. If the script is approved then various studies are made dealing with specific aspects of the story, characters, lighting, colors, sets, props, pacing, etc. Voice talent is selected for the characters. As the story is developed, storyboards are made illustrating the progression of a scene. An animatic, or Leica reel, is made combining dialogue, storyboard sketches and sound effects to provide the team with a sense of the film so they can detect weak or unworkable issues. As action is animated, the drawings are filmed as pencil tests to offer a quality review. As pencil tests are shot and approved and final dialogue, sound effects and scores are recorded they’re incorporated into the animatic so the team can gauge the film’s progress. The animators’ drawings are inked and painted, formerly by hand. Backgrounds and special effects are drawn and painted and merged with the colored animation and filmed. Eventually the animatic is transformed into the final picture and can be packaged and distributed. Of course, artwork and performances for marketing materials, trailers, and publicity are also necessary.
Production proceeds in a manner that is logical from a production standpoint, not one parallel to the film’s time. Sequences are animated out of linear order. Voice actors in a scene are usually not recorded in the same session. One animator draws the lead character in one sequence of the film while another draws the same character in a later sequence, and additional characters in those sequences are drawn by yet other animators. And normally, different sequences are in different phases of production at any given point. Scenes may have to return to an earlier phase several times before approval, but the film will still be completed properly.
This development cycle typically lasts three to four years for a feature-length animated film. How is it that a schedule for something as vague and variable as a filmed story can be well-defined enough to meet a release date? Because the problem is well-understood. Because the metrics (e.g., duration of a scene, characters per scene, feet of film an animator can output per week, etc.) are known. Because decisions and directions are constantly tested and screened every step of the way. Of course, though steps have been taken to minimize the risk of script changes, re-animating or re-filming sequences, etc., sometimes substantial and costly changes must be made as the film nears completion. In animation, as in software development, it’s very expensive to fix poor design decisions when they’ve been executed.
Every artist participating in the development process knows that though his contributions are a tiny portion of the final product, the rest of the team are dependent on his output for its success. Consider the outcome of the artist’s mindset, and how lacking it is in software development today: a development team of three to four hundred individuals capable of completing a three-year project on schedule and within budget repeatedly!
No, software development isn’t even close to being an art.