Music, Musicians and Software Development

By David Zinman

Software programming can be a solitary or collaborative effort. Similarly, so is creating music. The idea for both can be a singular endeavor, but it most often takes a combined effort to reach the finish. This similarity is described in the book by Andrew Johnston and Chris S. Johnson "Extreme Programming: A More Musical Approach to Software Development?" where they hypothesize on the resemblance between musical and software development environments:

The characterization of software development as a craft rather than an engineering discipline has been proposed recently and it is felt that by considering the similarities and differences between the working and learning environments of musicians and developers that some further weight can be given to calls for a more collaborative approach to software development.

The debate that writing software code is an art has been around almost since coders have existed. I would not go so far as to say anything I have coded is "artistic" but some of the novel ideas that come from very focused coding fit with the idea of creating a piece of music.

Music is the organization of sounds with some degree of rhythm, melody, and harmony. I would argue that harmony should not be included in this definition since even a single voice is considered music where no harmony is present. 

But the important idea in this definition is organization: it is the idea of organization and patterns that is common to both music and software. Design patterns are now an integral part of software development. A design pattern is a general reusable solution to a commonly occurring problem in software design. The most famous pattern in music is probably the opening sequence of Beethoven's Fifth Symphony (G G G E-flat). Beethoven repeats this pattern several times in the movement in several variations. Once we understand the pattern of a particular piece, be it coded or musical, we are well on our way to a solution.

Jonathon Kohl explains the tension/resolution that makes up music is applicable in software testing. I would go further and say that it also applies to software coding. There is the intangible feeling of tension when an algorithm is in development, and the feeling of relief upon its successful resolution. For a great example of tension/resolution in music listen to Lenny Kravitz' Mr. Cabdriver

I would like to think that we should not be so pragmatic as to look at software development as being"solving a problem in order to start creating." 

It doesn't really matter though because when I am done I put on the headphones and crank some Zeppelin. Anybody want to jam?

 

Posted on Thursday, October 23 by Registered CommenterDavid Zinman in | CommentsPost a Comment

PrintView Printer Friendly Version

EmailEmail Article to Friend

Reader Comments

There are no comments for this journal entry. To create a new comment, use the form below.

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>