Why Music and Software Are So Alike, Part 1: Technique

by dboynton 2/3/2009 3:45:30 PM

It’s always striking to see how many of our colleagues in the software industry are musicians. That fact occurred to me last week as I went to jam with some guys I’d never played with before. The lead guitarist walked over to me as I was setting up my kit and said, “You work for Microsoft, right?” and so began a twenty minute conversation about how he had worked in IT for years before retiring and going on to teach and play guitar full time.

Everywhere I travel, I find software developers and architects who moonlight as musicians. I’ve been thinking a lot about this lately and think I’ve discovered why so many of us sit in front of a computer keyboard by day and a piano keyboard by night: The act of learning and playing a musical instrument requires many of the same mental attributes and skill sets that are essential to being a good software developer. I’ve decided to explore this topic a little deeper in a series of posts. This being the first, we’ll focus on the building blocks of both skills: Technique.

Learning to Play 
16_single_paradiddleI started playing the drums when I was eight-years-old and in the third grade. I can still remember my first band practice at school, holding the huge pair of standard issue Ludwig concert sticks and hitting the solid steel Ludwig concert snare drum my parents rented for me (secretly hoping all the time that my desire to be a percussionist would soon fade, I’m sure). The first thing we learned to play were the 13 essential drum rudiments. These are the building blocks of playing the instrument and are excellent exercises for building coordination and speed. The first one we I learned then, and most percussionist still learn today, is called the paradiddle.

The paradiddle is repetitive pattern between the left and right hands. It looks like this: R-L-R-R-L-R-L-L. Go ahead, try it. I know you want to.

When starting to learn this rudiment, you begin the pattern slowly, focusing on keeping each stroke even with the next at a steady tempo. When this initial slow tempo feels good, then you gradually speed up, continuing to focus on evenness and tempo. If your strokes start to become uneven or you have trouble keeping up the tempo, slow down until things get better and then, gradually begin to increase in speed again. Here’s an example:

While learning this first of many rudiments, I was also instructed in how to properly hold the sticks in my hand:

  • Let the stick sit relaxed in your hand
  • Use the rebound of the stick off the drum head to help propel the next stroke
  • Use your fingers to catch and manipulate the stick
  • The stroke comes from snapping your wrist, not your arm – you’ll never get speed using your arms

I was getting all this instruction while still having to think the pattern “R-L-R-R-L-R-L-L” consciously. This was really hard to learn in the beginning. I was teaching my body to operate in a way it never had before, wiring up nerve paths that didn’t exist, and trying to maintain a level of discipline to make it all happen. The last point proved to be more difficult that the previous two.

As with any learning experience, you have to learn the basics before you can move on more advanced techniques and concepts. Let’s face it, practice the rudiments can be really boring, but they help you build the technique you need to take your skills to the next level. And the commitment you show to practicing the basics has a direct correlation to the level of your success. Are there exceptions to this rule? Always, but they are very rare.

Learning to Code
So, what’s the correlation to learning to code? As I detailed in my software development meme, I don’t have what you would call a traditional background for someone who does what I do for a living. I started college as music performance major and then switched to English literature, in which I went on to eventually earn a Master’s Degree. Coming out of graduate school, newly married, I found the job market somewhat lacking in open “poet” positions, so I went back to my old hobby, computer programming.

Truth be told, I learned to write software in “the modern era” by purchasing books like “Teach Yourself Visual Basic 4 in 21 Days” and “JavaScript Unleashed.” We laugh about those kinds of books these days, but back then, in the pre-WROX days, those were great learning tools available conveniently at my local Borders. I was working a fulltime job, so I spent hours and hours each night after my wife went to bed sitting in front of my Windows 95 PC doing exercise after exercise, learning language syntax and form:

  • The things I use in the user interface are called “controls,” and their behavior is controlled by “events”
  • Objects represent entities specific to my application or business problem – their actions are called “methods,” their descriptors are called “properties”
  • Text data is handled as a “string,” numeric values can be “short,” “int”, “long,” “double,” etc.
  • SQL is the language you use to communicate with databases

Of course, these seem ridiculously natural to us now, but at one point, all of these concepts were new. They’re called “rudimentary” because these concepts are the building blocks of what allow us to write applications, just like the mastery of the paradiddle contributed to my becoming a better drummer.

This was me learning the technique of software development. Like learning to read music, which is itself a new language, I was learning the rudiments of software development. And just like their musical counterparts, these rudiments don’t automatically make good software. Without a fundamental understanding of structure, style and yes, art, software is just a series of lines of code stacked one on top of the other. The more you practice the art, the more you learn about how these rudimentary concepts coalesce to create something greater than the some of their parts.

And thus is the transition between the rudiments and the final product. Music is more than just playing notes on a page. It’s weaving those notes together and producing something musical with them, like this alteration on the simple paradiddle when I sit behind my drum kit:

Likewise, writing software is more than just slapping code onto the screen. Your code is built into a larger structure and constructed carefully to maximize performance, user experience and maintainability. This is the quintessential art of software development, and one of the reasons why I think so many creative people are drawn to software in the first place. Like music (and most other forms of art as well), programming marries the strengths of both hemispheres of the brain. The analytical, pragmatic mind enables and facilitates the creative vision, providing it the tools it needs to be realized. Thus, technique evolves into proficiency and, eventually, mastery.

So, what happens once we practice the rudiments and become proficient artists? In my next post, we’ll explore the similarities of musical composition and software design.

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Philosophy

Related posts

Comments

2/3/2009 3:46:59 PM

dboynton

So, all of you should have known that the "drumming/software" post HAD to come at some point, right? Hope you enjoy it...

dboynton us

2/8/2009 4:44:07 PM

Chris

I really liked this post! I'm a recently graduated percussion performance major and have decided to check out computer programming or something along those lines to possibly change careers. It's just crazy trying to win a job in a decent orchestra! I'm hoping that the computer field has a few more job openings. =) I've just started getting a handle on the basics (java classes, methods, constructors, etc.) but so far I'm really enjoying both the creative and more technical side of the "programming" that I'm doing. Great to see another musician who's already made that career switch!

Chris us

2/9/2009 9:03:25 AM

dboynton

Hey, Chris. I'm really pleased to hear that you finished out your degree and are looking at IT as a career. I know exactly what you mean about finding work with a performance degree -- the job market is tough and can be even tougher for folks in the entertainment industry, especially when people start hanging on to that money they used to spend on attending musical and theatrical performances.

It sounds like you already have been looking at some of the essentials of object-oriented programming, and that's great. I encourage you to have a look at some of the other posts on my blog as well as the folks in my blogroll as I think that should give you a good primer for what's hot in the software industry today. And, as always, feel free to contact me via the blog.

Thanks for reading.

dboynton us

2/10/2009 4:40:09 PM

pingback

Pingback from dennyboynton.com

Why Music and Software Are So Alike, Part 2: Composition

dennyboynton.com

3/9/2009 9:02:01 PM

Free Cursors

so let me get this straight... you went from music major to a software architect @ microsoft?? That's quite an achievement! Do you see yourself lacking in any of the software principles that you should pick up from a solid software engineering foundation?

Free Cursors au

3/9/2009 10:01:57 PM

dboynton

LOL. I get that question a lot. No, I haven't noticed any significant gaps. I'm regularly engaged in deep technical discussions and design sessions with schooled engineers and have never really it a brick wall. That being said, I'm not afraid to admit when I don't know something, and I've had some of the smartest people on earth graciously impart their wisdom to me, and that's the best kind of learning, IMHO.

Thanks for the comment.

dboynton us

5/28/2009 7:23:54 PM

Education Software

If you think about it - you can apply your explanation of software to anything. Developing software is like thinking in small factually based steps that can break down to simple if/then relationships. Congratulations on getting hired by Microsoft - that is quite the change.

Education Software us

7/13/2009 1:59:34 PM

pingback

Pingback from answerspluto.com

list of links 3 « Answers Pluto

answerspluto.com

9/1/2009 12:01:49 PM

pingback

Pingback from topsy.com

Twitter Trackbacks for

Why Music and Software Are So Alike, Part 1: Technique
[dennyboynton.com]
on Topsy.com

topsy.com

Powered by BlogEngine.NET 1.3.0.0
Theme by Mads Kristensen

About the author

Denny Boynton Denny Boynton
Microsoft Architect Evangelist by day, wannabe rock 'n roll star by night! Want more? Here's my bio.

E-mail me Send mail

    follow me on Twitter


    Calendar

    <<  September 2010  >>
    MoTuWeThFrSaSu
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    View posts in large calendar

    Recent comments

    Authors

    Disclaimer

    The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

    © Copyright 2010, Denny Boynton

    Sign in