This is a paper I just finished for my technical communications class. I argue that software development should be considered as a creative art like other forms of writing. It’s not especially well written as it was one of those “write a paper by next week in your spare time between work and other classes” type assignments and I had to throw it together in a few hours, but the main point is still valid. Maybe another argument for coding being creative is the fact I’m better at it than I am writing papers.
I think that the process of creating software applications should be considered as a creative act with many similarities to other forms of writing. Some people believe that software code is simply a technical specification to tell a computer what to do, but there are several similarities between creating a software program and other forms of writing. A person writing a novel uses the rules of their language to arrange words in the correct order to express their story in the same way a computer programmer uses the rules of a programming language to provide instructions for their computer. Changes in software development methodologies have removed some of the creative aspects in an effort to improve productivity, but even some of the changes which remove creativity have direct counterparts in the methods literary writers use.
This is an issue that was addressed as a part of a lawsuit a few years ago about a software program called DeCSS which allowed users to decrypt DVD movies. The software could be used to extract a movie from a DVD for the purpose of piracy, but it could also be used for legal purposes such as allowing DVD movies to be viewed on operating systems that could not otherwise play them. Most of the issues argued in the lawsuit dealt with whether the decryption method was a trade secret of the movie industry and if viewing movies on equipment not specifically sanctioned by the movie industry was considered to be a use consumers are allowed, but the issue of whether the actual source code was a form of literature protected by the first amendment was also argued. The lawyers for the movie industry argued that the source code is a functional specification outlining their intellectual property, while the defendants argued it was a creative work. The movie industry won their lawsuit, but many factors not related to the creativity of code were considered.
A part of current software development methodology is the use of design patterns. A design pattern is a common way of solving a reoccurring problem, and they are used by all developers. If a developer figures out a way to solve a problem once and later reuses the solution to solve a similar problem he has used the concept of a design pattern even if he didn’t realize it. The current trend is to formalize this process into commonly known patterns to solve common problems, and modern developers can piece together the known solutions into a general framework for their project and concentrate on tying it all together.
Many fiction writers also use common plot structures and plot devices to build their stories, which is another application of the concept of a design pattern. The author can then focus their efforts on creating the unique parts of their story to tie the pieces together. Anyone who read a few of the Hardy Boys mystery books when they were growing up knows the story line of nearly every book. The brothers go on an adventure to try to figure how a crime and how it was committed and by whom. Their adventure doesn’t really help to understand what they are investigating, but somehow, towards the end of the story, the boys would find the hideout of the criminals and would be captured. One of the criminals would then see no harm in telling the boys the entire story of how they committed their crime, presumably since the boys were going to be killed or the criminals were going to flee the country and escape. In the end the police would show up and save the boys. By using a common pattern for the plot the author was able to spend less time developing the plot, or structure, of the books and focus on actually writing. Software developers use design patters in the same way, as a way to reduce the time needed to figure out the structure of a program and focus on actually creating the code.
Both the software developer who organizes his program as a set of design patterns and the author who uses a proven plot structure achieve the same goal. And both face the same drawbacks. They can better predict the amount of time it will take to complete their project, and will produce an end product that follows a proven formula. Neither is likely to be as creative as if they had written their entire project from scratch.
Another reason software development needs to be considered as a creative act is that if identical program specifications are given to multiple developers, each will create unique code to implement their solution. This can be illustrated by the fact that Computer Science students in a programming class create unique solutions to their lab assignments, just as students in an English class will create unique papers when all assigned to research the same topic. If programming was simply the act of translating the specifications into a language the computer can understand, each student would produce an identical solution.
The process for developing software and other forms of writing are similar, and personal style and experience are evident in the final product. This ability for software developers to express their personal style in their work indicates that the process is a creative one.