My team and I have made some startling observations about ourselves. Firstly, we are all approximately 5’11”, secondly most of us are musicians or hobbyists of some kind. Both similarities are completely coincidental, though maybe there is something more to the latter one.
One of my colleagues often says that when he’s recruiting, he looks for candidates with art or music backgrounds. His justification is that he feels they are smart and have a certain quality that makes it easy for them to pick things up quickly.
Somehow my department is filled with musicians. It’s not part of our screening process, however we’ve come to realize we have music in common. I think this has to do with the fact that when I recruit I look for the qualities that my fore mentioned colleague sees in most artists and musicians.
I play guitar and I know first hand how hard it is to be a good guitarist. There are certainly some people with natural talent, but I’m unfortunately not one of them. Being good takes practice, and lots of it. That’s a defining difference between musician-type and engineer-type programmers. An engineer-type tends to think that being good is a function of how intelligent she is. A musician-type realizes the critical role that practice plays in her path to perfection. Musicians also tend to understand how in the pursuit of perfection, improvements come in smaller and smaller increments however they are no less significant.
Musicians have some of the same internal struggles that engineers do. Take simplicity for example, when I first started soloing on guitar, I had a tendency to throw every note I could into a single line. I eventually learned how important the space in between the notes is, and how simple phrasing can be so much more interesting than a bunch of notes. As a young engineer I struggled with issues of simplicity and complexity for longer than I did as a musician. This could be related to mindset or maturity, either way I acquired an appreciation for simplicity in music much quicker than I did in programming.
At the 2010 Software Craftsmanship North America (SCNA) conference, my colleagues and I noticed a large number of musicians in attendance. It was somewhat of a theme, though not planned. The talk by Keavy McMinn was about her transition from artist to programmer, and Andy Maleh held a lightening talk on the similarities between playing drums and programming. And of course Chad Fowler mentioned his previous life as a saxophonist during his talk.
I really like the idea that musicians make good programmers. I had been thinking since I first started learning agile years ago, that I had previously been building applications that were far to rigid. That’s because I was building programs like you would build a bridge and I really needed to build them like you would a clay sculpture or the melody of a song.
So why do Musicians become programmers? I’ve seen and heard some reasoning around the mathematical nature of both music and programming as a potential cause. However, the theme from SCNA and my own experience seem to indicate that most of us are people who like to make things. Some of us start out with software, others start in music, art, construction or carpentry. All of these are just mediums to fulfill our desire to make new and interesting things. What makes software so appealing, at least for me is the extremely low barrier to entry. You just need to learn a language and have a computer with internet access and you can immediately get started making a computer do things it didn’t know how to do before. It doesn’t cost a lot of money and it doesn’t take a lot of space, it’s mainly a time investment. Software is a very forgiving and flexible medium that allows the people who love to make things to do what they love with the least amount of friction.
