January 20, 2009
In my previous post, a commenter asked this question:
So many of the best minds I have met in computing have a love for music. Is it something to do with being able to see beauty in complex numerical systems?
I adore music. I have a vast music collection and I love listening to music and exploring new bands and genres I haven't heard. But I have zero musical ability. So it's not really appropriate for me to comment on this. I've read the same observation expressed in many different places. Enough so that I do wonder if there's some kind of relationship between being a musician and being a programmer.
For informed opinions, let's turn to programmers who are actually musicians. I thought Rob Birdwell, who left a single plaintive 2003 blog entry on his programming blog, summarized it well:
- Let's be practical: musicians become programmers, generally not the other way around, simply because those gigs actually pay the bills.
- Creating music and software are simultaneously collaborative and individualistic undertakings.
- Musicians, regardless of era, are generally technically engaged. The instruments themselves (the hardware) often interface with other devices (amps, mixers, mutes) to achieve different sounds. Composers often deal with an array of technologies to get their music written, performed and/or produced.
- Music is an abstract medium - the printed note requires interpretation and execution. Like the written line of code, there is often much more than meets the eye.
- Music is a form of self-expression. Many programmers, often to the dismay of corporate managers, try to express themselves through code.
- One famous music educator, Dick Grove, once said that composers/musicians often like to solve puzzles. (Dick Grove was very computer saavy - although I'm not sure he wrote code, I wouldn't doubt his ability to do so.)
Rob is clearly a guy with feet in both worlds, although music is obviously winning. Rob has an active music blog with way more than one entry. There are even some programming tidbits mixed in here and there.
I noticed one comment on Rob's programming blog entry from Carl Franklin, who also happens to be an amazing musician. He can prove it, too: here's Carl performing the song Jungle Love as a one man band. Incredible! Carl also sees parallels between musicians and programmers:
Instrumentalists in particular (guitar players for example) make great programmers. It's not just about math and music being similar, or the fundamentals vs the art. Instrumentalists have to zoom in to work with very repetitive technical details, and so become very focused - like a guitar player practicing a piece of music at a slow speed. But, the best programmers are able to then zoom out and see the big picture, and where their coding fits into the whole project, much like an artist has to step back from a painting and see the whole of it, or an instrumentalists has to produce something that communicates a complete work, not just the scales and technical aspects of it.
Carl is something of a fixture in the .NET programming community from the very earliest days. He now runs a little media empire; I participated peripherally in that empire when I recorded a .NET Rocks podcast with him and Richard Campbell about two years ago.
While I certainly appreciate Carl and Rob's first hand opinions as both programmers and musicians, I worry that this is just another convenient, self-fulfilling analogy we programmers use to puff ourselves up. Sort of like Paul Graham comparing programmers to painters. Or when Alistair Cockburn said software development was a collaborative game, and software projects are like rock climbing.
We're the programmers; programming is whatever we say it is.
There is a feeling I get from being "in the zone" when listening to music that strongly resembles the feeling of being immersed in an enjoyable bit of programming. There are rhythms and cadences of algorithmic flow. But I'm hesitant to draw any deeper parallels.
I've been a software developer in a (theoretically) professional capacity for 15 years now. And every year of coding that goes by, I find myself agreeing more and more with a particular Frank Zappa lyric from the song A Little Green Rosetta.
They're pretty good musicians
But it don't make no difference
If they're good musicians
Because anybody who would buy this record
Doesn't give a f**k if there's good musicians
Now that's the one thing programmers and musicians really have in common.
Posted by Jeff Atwood
Thanks Jeff - now I can't get the chorus out of my head...
Little green roseta...........
Well, my guess is that us programmers are so socially challenged that we are left with our music and our books (comics, I mean) to adore. isn't it?
Strange, as my personal experience leads me to believe more the opposite conclusion:
Back when I was learning to play the guitar in the early 90's, there was this strong backlash amongst rock artists against having any kind of knowledge about music theory or flashy technical skill. I managed to teach myself how to read music and dug through theory books covering oddball 20th century classical composers because I thought they were intriguing but the overwhelming majority of guitar players can't sight-read (and certainly don't need to for rock n' roll). At my college's music department, when I told people I was a CS major, they'd usually mention how they weren't into that high tech stuff or how they were awful at math.
Conversely, I've run into more scientifically-minded people who don't seem to have an eye for art. I figured it was a left brain/right brain thing and never challenged that wisdom until I read this post. Fascinating reading.
There're several things in common between music, math/computers/technology, writing poetry and prose, learning and using spoken languages (including great speakers and story tellers):
- you create, there's room for art in everything
- there're certain patterns and (even if not apparent) rules in all of them, there's a great deal of structure and hierarchy too
- every one of them implies and uses languages
- when you become a good learner and problem solver in one area you can directly or indirectly apply that in others, you become good at those two things, that becomes your universal, deep and broad skill. Many great/talented people have been known to be proficient in many different areas. This is why.
- technology is applicable to all of them and brings the areas close
- all of these areas allow for selfteaching, trial and error and probably all come out from curiosity -- a lot of great works have been done by those folks who didn't take CS classes or learn to read sheet music
- it takes time to truly excel, although some achievements may seem to have happened magically or by pure luck, many great people have put a lot of effort in what they do and that's why they are what they are. Applies everywhere
- if I'm not mistaken, psychologists or psychophysiologists have determined that fine manipulations of objects with one's hands improves their thinking processes (I don't remember the exact wording). So, there's no wonder why good musicians may in fact be noticeably more intelligent/smart than your average Joe and able to deal with the technology well as well.
I believe the list of details could go on and on. :)
When I studied music theory I made programs based on these theories to automatically create chords to a melody as well as create notations.
I'm a programmer and a musician and for what it's worth I think there is a lot of overlap. Both are systems of patterns you know. A lot of times I'm in the same mindset and working patterns when I'm debugging something or working on music. I'm trying to figure out why a system of rules and pattens is not working and what to add or take away to make it flow.
like Frank Zappa also said Music is the Best!
Most of the evidence for this seems suspiciously anecdotal. The very first response (jammus) was at least logically skeptical. Sort of like the hackneyed answer to what are your hobbies ummm..duhhum, Ah like mewsic, and bou-uoks, and maovies, and..
Another thing to note is that most observations are about U.S. programmers - a country with a higher than normal facination with the pop rock and entertainment culture. A more accurate assessment may be to study if such a correlation can be found among programmers in other countries like India, Ethiopia, Romania, China, etc. (Russia, I think would again be skewed because of the heavy push towards the study of music in their schooling system).
In the absence of such, this would appear to be a romantic fantasy to cheer on and soothe dejected and harassed IT spirits.
P.S. I do think some studies may have been done to relate mathematicians to musical ability. Not all programming practice (not theory) is highly mathematical (I am distinguishing between logic and math) .. perhaps developers more in that realm tend also to have such talents?
I play trumpet and guitar for a Mariachi band.
To me the common thing between musicians and developers is they both perform complex tasks, and something about being able to solve a difficult problem gives me a similar feeling of being able to play harmoniously in a band. I also have many engineering friends who play instruments.
As someone who spent an equal amount of time in college studying music and computer science, I still put my music minor on my resume hoping that others see the connection as well. I think unfortunately there is more natural, inherited skill involved in music, though.
I wonder if there is also a correlation between world traveling and good programmers as well. I hope so...
I've been programming to put bread on the table since 1982. In the 80's, I remember running into two groups that had not trained as programmers but wound up programming for a living in larger numbers than you'd expect if it were an even distribution. One was music majors and the other was Russian language majors.
As for the fellow with the programmers are like prostitutes... joke piece...any job is like a prostitute when you strip it to the bare essentials, but with two crucial differences. Very few of the non-prostitute jobs' customers have orgasms as a result of the work and there's not much lower risk of transmission of STD's.
The premise of this post is on this ice, and it is amazing to see how many people fell for it.
I wonder how many programmers and musicians wear sox? Eat pizza?
Or how many geeks think they are musicians but are not?
Nice to see you are back to your unqiue, fresh, funny, interesting writing style. A pleasure to read. Stack Overflow (I think) took a slight toll on your writing, but in recent months I am reminded why I read your blog every day.
Keep it up.
So many of the best minds I have met in computing have a love for
music. Is it something to do with being able to see beauty in
complex numerical systems?
No, definitely not. Musicians generally do not see music as a complex numerical system, and I would suggest that programmers generally do not see software as a complex numerical system either.
Also, Carl Franklin's remark is wrong:
Instrumentalists in particular (guitar players for example) make
No, they don't. My mother is an incredibly talented instrumentalist (on the piano she can transpose while sight-reading music, that sort of thing, and she can play instruments from every major category). But she's really poor at the sort of problem solving programmers do, and particularly poor at mathematics. The very best instrumentalist I ever met could barely calculate correct change.
I agree with Jeff on this one - people are looking for correlations on the flimsiest of evidence. That evidence is often what they themselves are like :-)
please :) you are a musician
if you make your part or all or your living from... music
else I should call myself a carpenter, counsellor, etc?
@Pardeep - Far out! I wear socks and eat pizza!!!
Seriously though, look up personality metrics, like Myers-briggs (spelling???). There are some trends that are more than just a little surprising. This is what Jeff is picking up on, and I think it is valid. I have no interest in playing music, and I know lots of developers who don't either. But music seems a central theme to people working in IT - most listening to it while working best.
That is - there are personality types that are strongly drawn to specific professions. There are those that are drawn to CEO/upper management. There are those that are drawn to teaching. There are even those that are drawn to sport (although I tend to avoid these people because they seem preoccupied with sport).
Obviously, there are also people drawn to IT and software development.
Most people in software development are INTP or ENTP
There is no wrong or right personality, not even for a specific profession. They all have strengths and weaknesses, and they all bring different things.
BUT - the point is there are shared personality traits within a profession.
BTW - from pictures of his desk, perspectives he states, the amount of time he reads, etc. I would say Jeff is INTP, which isn't a hard guess because most developers in IT are this type.
Music is a hidden arithmetic exercise of the soul, which does not know that it is counting.
Ah! This post is Music to my ears! :)
BTW when Einstein can be a great violin/piano player, there is no doubt that programmers can be, as well?
Why not combine music and programming? When i was studying at university we had a lecture from guy who was doing some tunes with python. He had some cool algorithms which produced music. What he said in his speech was an great inspiration to me.
btw. if you are into exploring new bands and genres check out new software called spotify. Its great.
(so that obvious joke would be something like...)
c# is to guitar
vb.net is to guitar hero?
I do not really see the connection. I couldn't (nor have an interest) to compose music or play an instrument. There is definitely a creative aspect to programming, but not necessarily related to music.
... and that's the way I like it!
many programers like beer, does this mean I drink beer to be better at programing?
Well, if physicists are mentioned then let's not forget Brian May (yets, THAT Brian May) who got his PhD in 2007.
My sixpence is that most 'good' programmers find themselves with a delicate balance of both artistry and logic, which allows them to be both methodical and aloof at times where each is required. For instance there are many good coders who struggle to design an attractive user interface and vica versa. I think this is pretty common knowledge among those of us who practice the craft. For the sake of outsiders the discussion might prove informative, but in house...it's a moot point.
Musicians make great insert job here. Big deal.
Lots of musicians do LOTS of other things. You can make the connection with many other fields of work, I'm sure.
Great read, as usual, Jeff! I'd love to hear more challenges to this theory though.
Well for the most part computer science relates and has a lot to do with math. where i went to school 70% of computer science were math courses or required math.
and if you know anything about music....music is math
this explains a lot as well and is quite interesting -- which i think most people don't know about....the golden_ratio
so it makes sense how programmers have a taste for music.
(but then again most people move music!)
As yet another yet another musician-programmer:
The parallel as I've described it is typically that both programming and music require rigorous discipline, but within rules that are largely of your own making (within some physical limits). So for instance, once you define a function foo, you can do all sorts of things with it, but you've set up some very specific expectations. Once you start a piece with D-D-D-Bb, you can make all sorts of wonders happen from that but you've set up some very specific expectations.
Plus by studying both, I can program for a living and make whatever sort of music I want just for the heck of it. A lot of professional musicians don't have that luxury.
It's interesting that a few of the commenters claim to write better code when listening to music. I'm pretty sure there's a case study in Peopleware where coders listening to music didn't increase their productivity one jot and, in fact, missed one or two subtleties in the test case.
I'm sure Jeff has the reference or I can find it tonight if people are interested.
Personally, although I like music I don't always want noise in the office and if the music is bad (I had to listen to Austrian radio, where hits from the eighties go to die) it can have an adverse effect.
Sometimes, however, I just want to cram on the headphones, crank up the tunes and code away.
I absolutely agree on the parallels between programming and musicians. The ability to look at minute details and the big picture at the same time is a skill that both artists/musicians and programmers share.
I also agree that there are varying degrees of interest in music. Yes, music is a big part most people's lives considering we are exposed to music everywhere we go, but there are large differences in comprehension between your average arts patron and a trained musician. Having gone from being your average music lover to a conservative-trained musician, I can assure that perception of music changes with increased levels of music education. Patterns emerge and form and function become easier to detect. Listening to music becomes a more active experience.
And as far as the parallels between music and mathematics go, being a good musician won't necessarily make you good at computation. I am terrible at simple multiplication but can conceptualize more abstract math concepts like set theory. The idea of having music pitches that ascend vertically and cyclically at the same time throws a lot of people for a loop, but programmers generally get it.
I happen to be a mathematician turned programmer, and a musician also.
I think (and I oversimplify absurdly hereunder) understanding music theory is very similar to maths, and maths is very similar to the hard part of programming in that they are both, essentially, about spotting patterns in processes and creating mechanisms by which these patterns can be captured most succinctly.
However, playing music well has nothing whatsoever to do with any of this. The hard part is not the theory, nor the technique, but playing the music expressively - and I think this, if anything, is anti-correlated with mathematicians and programmers.
Actually what i found is that more and more programmer loves photography.
Zappa was amazing.
My favorite quote from him was from an interview you can find on the CD Kill Ugly Radio Some More -
The more you know, the less you like it.
From a rant called It's OK to be smart.
Maybe I was a better programmer, if I weren't tone deaf. Who knows? I do like listening to music however. Now I'm listening to Vivaldi.
I've faced 'em musics.
But dere's no drum beats.
Fer 'em dirty cheats.
Ya said 'bout da kids,
but dey faked da bids.
So why d'you dids,
da cheatin from da grids?
Being tone deaf has very little to do with your musicality. It just mostly means that you won't be a musician or a singer, or you have difficulty learning these kinds of things. You might be a great dancer, good with rhythm and understanding of music - that still makes you highly musical. The reverse is that you have perfect pitch hearing but it in no way means that you are musical - these things are two discrete cognitive abilities.
I doubt this particularly has anything to do with being able to program. There are also a lot of studies that show that your musicality gives you no 'academic' advantage either. Music teaching might result to better learning but this applies to all people - musical or not.
There are also a lot of people who are visually talented, read extremely fast, and comprehend entire screens of text in a very short time. It just so happens that we do not celebrate great painters or visual artists as pop icons, and they might be great programmers - you just never knew about it.
1up has an interview with the composer from Contra. www.1up.com/do/blogEntry?bId=8978463
It talks about how the composers of 8bit games were often coders as well.
Every professional (including programmer) who sees his job as an art naturally performs better.
I agree to this.
Also I happen to be in the intersection set of musicians and programmers. Yes these comparisons may just be to flatter ourselves...
I can say that almost every musician loves what he does...play music...make music...
Rarely is a person a musician just for the money...it is *usually* for the gratification...which is immense i can tell you...
Although I don't know if it holds true for all developers. Are many of us in this profession just because it has more money.
But, on the contrary, I do enjoy coding a lot too.
Now that's the one thing programmers and musicians really have in common:
They're pretty good musicians
But it don't make no difference
If they're good musicians
Because anybody who would buy this record
Doesn't give a f**k if there's good musicians
Nice catch !
Maybe a good musician does not mind to distribute some free tunes around ? :)
I was self-taught on guitar somewhat in high school, just as I was starting to learn to program as well. Guess the programming stuck to me like the guitar couldn't.
I still have both guitars I played on in high school, but I've not pulled either of them out for more than 30 minutes in the last few years.
I am, however, fairly good at Rock Band and Guitar Hero :)
In the 80s I remember reading that Mick Mars of Motley Crue dabbled in writing video games.
There is a famous example of that mix with Stanley Jordan (http://www.stanleyjordan.com/). He is obviously famous at the guitar but he is also an avid APL programmer. Look at his Computing Links page!
For all of non contrarians who believe there may be a connection between music and programming, the real gem in this thread was:
And... you can even make music by programming, see the great audio programming language Chuck : http://chuck.cs.princeton.edu/
Eulvin on January 21, 2009 11:47 PM
this technique allows the program to be changed whilst it is running, which is obviously something you could see the benefit of in music performance.
Another application, where being able to change a running program, is the big Mummy of them all, the Web, is this the way of the future?
You say: I'm a programmer and a musician and for what it's worth I think there is a lot of overlap. Both are systems of patterns you know.
What isn't a system of patterns?
Of course musicians and programmers have everything in common: way before KR appeared, Bach was writing songs in C!
I have my feet in both worlds, and my manager does as well. I originally met him through our shared interest in music.
Well, there is a big difference between musicians and programmers:
Almost everyone (At least they think so) can naturally distinguish between a crappy music and great one, but now all can do so with code...
In this matter musicians get more criticism than we programmers do.
I have never made the correlation before.
I could see why the type of person that likes to play music would like to program. Once you get over all the technical difficulties and get a feel you can create whatever you want. Imagination is the limit as long as you have the patience to figure it out and if you share with others and they like it, that's more then enough reinforcement to make all the difficulty and hard work more than worth it.
I worry that this is just another convenient, self-fulfilling analogy we programmers use to puff ourselves up
If that's your real concern. Have you ever considered that writing blogs is just another exercise to massage your vanity. There have been more than a few blog writers I've come across that would fit that profile snugly.
Try chewing on this. Has being a nerd become trendy. Do you have a gmail account, a blog, an iPhone, and now twitter? Or, is twittering the new blog for the sheeple-minded tech-nerd crowd?
In terms of the tech-minded and our self-image, there's a lot more to be concerned about than playing music. Once, I met a couple at a kissing workshop (interesting girl, interesting first date) who were both programmers and sex-coaches on the side and, BTW, were running the workshop. I also snowboard in the winters and wakeboard in the summers because I love the rush and excitement.
What I'd be concerned about are the socially inept coders who lock themselves in their basement and daydream about their future virtual girlfriend. Someone should create a non-prof organization to donate guitars to these guys before they end up like this http://www.pseale.com/blog/content/binary/boris_invincible.jpg.
I think that the computer programmers and better-than-average musicians I know have a common attribute: a lust for learning or a desire for an outlet. I sucked at both when I first began - time and perseverence in combination with a passion for either programming or music can result in a multi-talented person. I consider myself lucky that I can express myself through code or playing the hell out of an instrument. It's simply a coincidence that I would even chance upon this article and just happen to have a love for both. But then again ... who the hell doesn't at least love music to help them work through any job?
A lot of people are pointing out the similarities between composing source code and composing music, and there are a bunch of things that they share, but I personally use different parts of my brain for my music and my programming. That way when I wear out one part, the other has something to do. Not that they don't borrow from each other - if I'm hanging a picture I painted, and need to manipulate some clasps, I will reach for the toolbox, even though it's not a toolbox job per se - I just compartmentalize my brain in a way that few people do, apparently.
Oh, if you want to hear what the music sounds like: http://www.soundclick.com/campadrenalin/
I am a musician turned programmer and I talk to others about the similarities all the time. Many of the devs on my team are musicians as well.
I have had the pleasure of writing music for a living and there are too many parallels to mention. At the heart of it, writing music and programming both involve taking an idea in your head and encoding it. For the programmer, this means translating I need to go through each file and get the modified date = foreach(var file in files) var date = file.LastModified);. When writing music, I take a phrase I hear in my head and encode it as notes instead of C#.
Both writing music and writing code to me is the perfect balance of artistic expression and science/math. There are many other details I could mention here, but I want to keep this comment short.
Much comment about music *players* here but not much about composers, especially orchestrators - where there is the most obvious correlation. Imagine the work involved with composing a large piece with multiple movements, lets say using thematic repetition (objects?) and modification - and then parsing it out to 100 instruments each playing a small part of the whole. Picture what this looks like on a score with 100 staves each belonging to an instrument and being able to know what the combined result will be prior to hearing it live. Seems like it may take many of the same talents that programmers need.
That's what composing was like before computers - now composers can be more like players and hear everything as they are noting it down - don't really need as much imagination and intellectual endurance any more to compose a score to tell you the truth.
Personally, I am sick of these opinion based correlations. There are many criteria that can be used to say what is and is not a good programmer and we wont all agree on them.
Many times I hear from co-workers that someone is so smart and such a good programmer. Then when I get to work on their code.. it is just difficult to read, because they didn't take the time to name things properly and format things consistently. IMO to me that is one of the most important criteria if its not throw away code. I solve the same or similar problems, but through comments, variable name choices and sometimes un-optimized (*gasp) choices, it is more obvious to everyone what I am doing.
I agree that musicians and programmers are of the same animal. I know quite a few programmers that are also musically inclined. One you can see here http://www.jeffreybrayne.com/