Practice Makes Perfect

May 4th, 2009

I’ve started playing guitar again, at the behest of my church who wanted me to start playing offertories again.  This usually means I’m trying to bang my way through some song written by Bach, for a completely different instrument (lute, cello, violin, etc), in some manner of hand-cramp-inducing positions.  But that isn’t the story here.

Carl Franklin likes to talk about how musicians make the best programmers.  Often.  I’m a programmer, I play instruments, apparently I’m good at programming.   I guess I have very little room to argue.  But I’ve been more interested in why.    And, for the record, I know plenty of musicians who can’t program a lick, so don’t argue the deficiencies, I know all about them.

Note: I am not calling myself a musician here.  While I can play an instrument (a few of them actually), I can only play what I have memorized or have music for.  Writing music is excruciating for me, and I cannot play by ear.  Because of that, I just say that I play music.  Musicians are other people.

My feeling is that it isn’t the music that makes these guys better programmers.  It is the practice.  For me to play a piece of music in front of 300 people (and this is before the pastor puts them to sleep with a sermon), take hours upon hours of practice.   And for every other person I’ve ever met who is very good at music, it is the same.  There is sweat equity involved here.

I was listening to It Only a Game on NPR this weekend as well.  They were talking to former New York Yankee turned guitarist Bernie Williams who is now out with a new CD.  The host asked how different it was getting ready for baseball versus music.  Bernie’s answer: about the same.  Both take endless hours of practice.  You are never done.  In baseball they constantly practice hitting, running, fielding, etc.  With guitar you are constantly practicing scales, arpeggios, and slurs. 

Guess what: this applies to programming.  While I don’t spend time creating bubble sorts.  I do refine my practice with Refactoring, Design Patterns, and constant study.  I read something almost every night – even if it is just MSDN Magazine.

You see, I don’t actually follow what Carl Franklin says, that musicians make the best programmers.  The notion is too specific.  I believe that people who are accustom to practice, whether via sports, martial arts, music, woodcraft, dance, art, or anything else; those people have a better shot at becoming a very good developer.  Why just a better shot?  You have to leave some room for aptitude.

  • http://DylanDoesDigits.blogspot.com dylan

    As a “musician” and programmer as well I wholeheartedly agree. It really reminds me of what Malcolm Gladwell says in Outliers – it takes about 10,000 hours of practice to become truly exceptional at anything. So it stands to reason that putting in something less than 10,000 but more than a 1,000 is a prerequisite to being “pretty good” at anything, be it music or software development. Hey, if it worked for The Beatles then it can work for us, right? :-)

  • chewblocka

    While I do agree that practice is crucial in both respects, I think the tie is a bit deeper between music and programming. While music is commonly accepted as and referred to as an art from, it is a very structured art form. It has rhythm, meter, keys, harmony, melody, etc that all must be structured together perfectly to make great music. In fact, when they are structured together well, you typically don’t even notice they exist.

    I would also argue programming is a structured art form. Just like in music, there are many moving parts that can be put together in many ways, but if you get them just right, everything falls into place and you have a great program. It is efficient, it flows well and is easy to use, it is easy to read by other programmers, in fact, almost so easy to read that you don’t even notice the code. You don’t have to spend hours hunting around, everything is organized perfectly and naturally.

    So I would argue programming and music are tied together on a more mental ability/thought pattern level. I would also argue that in reality, the musicians make great designers/architects, not necessarily just programmers. They generally have the mindset required to see the whole picture and put all the pieces together just right.

  • Carl Franklin

    Just for the record, I don’t believe I ever said that musicians make the best programmers. I have often talked about why I think there are many musicians who program and programmers who play instruments. I tried going back in the .NET Rocks! transcripts to find my exact words, but that just doesn’t sound like me. In fact, you will probably never hear me put myself above anyone else, programmer or musician, unless I’m making fun of myself.

    That said, if you can find a reference where I actually said that, I’ll take it all back. :)

  • http://bob-the-janitor.blogspot.com/ Richard

    I’m going to strongly agree, and yet disagree with your Idea. If your going to excel at anything to takes practice. It doesn’t how much “New Yankee Workshop” you watch, or how many issues of “American Woodworker” you read unless you make sawdust your never going to be a good woodworker, Same with cooking.

    On the other side if you don’t have the knack, the gift, or what ever you want to call it, no amount of practice is going to help you. Case in point I can’t do music, I’m tone deaf, so it doesn’t mater how much I practice, I will never do well in a musical field. It’s like a Chef with out a sense of taste.

  • http://www.elegantcode.com Chris Brandsma

    @carl, in your defense you probably did not say those exact words. But I know every time you bring up your theories on music and programmers Richard starts to grown. :)

    @Richard, my very last statement: “You have to leave some room for aptitude. ” I love New Yankee Workshop, I also get Fine Woodworking. Trust me, I KNOW there to no way to teach talent. Like in the NBA, you can’t teach height. But it is also very rare for someone to COMPLETELY fail at something if they put in the time. For example: you say you are tone deaf, but that actually affects less than 4% of the population — while lots of people say that they are. http://geniusblog.davidshenk.com/2007/05/index.html

    While I don’t have perfect pitch, I can still play an instrument well enough — but not well enough to play on a jam band.

  • http://bob-the-janitor.blogspot.com/ Richrd

    @Chris Brandsma
    Maybe Tone Deaf is the wrong term, my ability to distinguish between different tones is limited, I had ear infection/ear fluid as a kid. It’s something akin to people who can distinguish between color shades (light red, red, dark red) but if you pick something half way between light red and red they can’t really tell the difference.

    With practice I could become technically proficient at singing (volume control, etc), but I will always sound flat and have a mono tone.

    One thing I do find interesting is the number of programmers do woodworking, automotive, welding, etc. I think music plays into this as well, our profession draws people with the talent and desire to create, construct, and build. We blend the science of structure with the art of design.

    So to more appropriately say what @Carl said(or didn’t say) people who dedicate themselves to a constructive art form (Music, Woodworking, painting, etc.) tend to make the best programmers.

    This isn’t saying that woodworkers make good programmers and that programmers make good woodworkers, but a lot of the underlying skills and practices are the same for example: mastering the basics before trying the expert:

    if you can’t do a foreach loop, maybe you should wait to do singletons just like in woodworking, if you can’t do a half lap, maybe you should wait to try a dovetail.