Software Development: Mozart and Beethoven

Recently I watched an interview with  Edsger Djikstra conducted a few years before his death. Music was on his mind during part of the interview; specifically, the compositional styles of Wolfgang Amadeus Mozart and Ludwig Beethoven.  As Djikstra was talking, “Twinkle, Twinkle” was playing in the background – I’m pretty sure where his admiration was directed. Dijkstra romanticized the mythically complete style of Mozart while seeming dismissive of Beethoven’s more iterative enhancement; somewhat ironic, considering Beethoven’s music was significant in the transformation of the “Classical” era into the “Romantic” era of Western Classical music.  I told some friends while discussing this interview that I shuddered to hear his opinion of composer Gioachino Rossini, who was generally regarded in his time as lazy due to his procrastination.

Although Mozart’s manner of writing down complete works of music only after completing the process in his head is alluring (and not necessarily accurate), the manner with which Beethoven (and evidently the real Mozart as not depicted in the movie “Amadeus”) constructed his music with sketches, revisions, restarts, redo’s and various iterations before the final performance copy is not unlike what today’s software development is like and how it relates to composing or arranging a piece of music.  Consider the software development lifecycle:

  • Planning – An idea is needed, like the famous first four notes in Beethoven’s “Fifth Symphony”. Are you making a 100% original piece or an arrangement? Do you have a deadline before a performance? Is this a passion project, commission, or something else?
  • Requirements & Design – What musical form(s) will you use? What style(s)? Length? What instrument(s)? (Include trombones if you can!)
  • Development – Play something on the keyboard. Sketch out some ideas to develop the theme. Add some harmony (or not).  Have an idea for another theme? Do you include it in this piece or keep it for the future?
  • Testing – Make sure your musicians can play what you’ve written.
  • Deployment – Time for the concert / show / recording session!
  • Maintenance – If you ever play the “book” for a Broadway musical, you will be familiar with edits, additions, and entire songs cut because they didn’t work! ( And hopefully the rehearsal isn’t thrown into chaos because someone is missing an entire page that has been missing from the book since version 1)

Djikstra’s preference of composers aside, I think that most developers tend to develop with a style more attributed to Beethoven (and historical Mozart).

Mozart’s Symphony No. 40 in G minor:

Symphony No. 20 in G minor

Beethoven’s Symphony No. 5:

Symphony No. 5

Part of Rossini’s most famous overture:

Willam Tell Overture Finale

https://www.expressionsofchange.org/dijkstras-mozart/

https://www.invisionapp.com/inside-design/mozart-creative-success/

https://en.wikipedia.org/wiki/Romantic_music

https://aadl.org/node/144535

Music and Computer Science

As someone with training and experience in music and programming, it is interesting to consider the correlation between both pursuits. Over the next few weeks, I will be sharing my thoughts.

When starting any new activity, a mix of passion and patience is beneficial for lasting success. For most people, starting a new activity is exciting! Experienced musicians often perform with what seems to be effortless enjoyment. Experienced musicians also know what actual effort and time is involved in appearing so “effortless”. As a music teacher, I hope to take the initial excitement that arrives with a new music student and imbue that energy with patience, determination, and hope.  As they realize the “scale” of learning their scales (pardon my pun), they are also encouraged to understand the joy of discovery and appreciation for what they have accomplished.

Like music, programming can seem overtly daunting if the focus is the magnitude of syntax and breadth of concepts that encompass efficient software design. Most everyone in modern society is familiar enough with the end products of both music and programming: favorite songs, favorite games, favorite songs from a favorite game, phone apps, web browsers, text entry programs, tax programs, etc…. Society at large enjoys these products even if they are mystified by their inner workings.

When a new brass student starts, we begin with how to “buzz” and make a sound through whatever shape metal tubing they have chosen as their instrument.  Computer Science often starts with a simple “Hello world!\n” in the chosen programming language. The same emotion is elicited from both: “Wow! I didn’t know I could do this!”