I <3 Steve McConnell*
Coding Horror
programming and human factors
by Jeff Atwood

January 20, 2009

The One Thing Programmers and Musicians Have In Common

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.

zappa-joes-garage.jpg

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    View blog reactions
« A Visit With Alan Kay
Open Source Software, Self Service Software »
Comments

"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 don't think I've met more than a handful of people (from any profession) who don't have a love for music. Who _doesn't_ like music? It's part of being human. Hmmm... could it be true that all programmers are human? :)

jammus on January 21, 2009 7:07 AM

I have heard before that Elvis Costello was a programmer before he hit it big. I wonder if there are other famous musicans with a techie past?

BTW, I'm a musician myself, having played in marching bands and rock bands for a long time. Just never hit it big. :)

Sam Schutte on January 21, 2009 7:09 AM

During the past 15 years, you have probably practised programming for something like 40000 hours. At the start of that time you had no programming skill - you now are now /at least/ competent.

If you'd done 40000 hours music practise during the past fifteen years, despite starting with no skill, then I'm sure you'd be now be /at least/ competent at that too.

You'd also now be saying "We're the musicians; music is whatever we say it is."

Stewart on January 21, 2009 7:09 AM

The common factor is the management of deeply-nested hierarchal complexity. To do either music or software, you need to be able to navigate the levels of a hierarchy with automatic ease.

Frank Wilhoit on January 21, 2009 7:17 AM

I'd have to agree with jammus... it's not just programmers/developers... it's most people that love music.

Kris on January 21, 2009 7:24 AM

I love and live for programming. It's my job and I spend a good portion of my hobby time dedicated to it.

When it comes to Music though describing me as tone deaf would be a compliment to my abilities.

JaredPar on January 21, 2009 7:26 AM

I strongly disagree with a few of the above; most of the people I know sort of like music, but they definitely don't love music. There's a pretty big distinction.

mq on January 21, 2009 7:28 AM

Godel, Escher and Bach is worth a mention here - Hofstadter talks quite a bit about some of Bach's canons being repetitive, and varying and even recursive.

JamesH on January 21, 2009 7:28 AM

I have a slightly different observation. Some of the greatest programmers I have ever had the pleasure of working with were musicians. I mean seriously trained musicians, usually in jazz or classical. I also mean seriously good programmers, those mythical beasts that are 10x more productive than your average programmer.

My theory is that studying music is a great precursor to a career in programming. You learn the importance of practice & repetition. You study other great artists, and try to emulate them. You learn the importance of creativity and artistry. You learn what is between the notes is often more important than the notes themselves.

Peter Barszczewski on January 21, 2009 7:36 AM

It's interesting you mentioned Zappa. He was a huge musical-technology Wonk. He wrote modern "classical" music (among many other styles, of course). After finding that professional orchestras didn't like to play music that wasn't written 300 years ago and that they had been practicing since they were 10 (a paraphrase of his statement from his autobiography, not mine), he started writing music for electronic devices. I can't remember the name of the device, but he raved about his ability to reproduce symphonic sound without having to tolerate the actual musicians. He was also a hardware wonk in the 50s and 60s, building his own studio for music and film. I think he would have been a great programmer.

I'm not sure it's really a general connection though. I like music (both listening to and creating) and programming both, but I'm not sure there's a direct correlation. Most human beings like music, and it's in the nature of programmers to create things, almost by definition. Seems natural to me that some of them should create music (as some of them paint and sculpt, do woodwork, do case modifications, etc, etc, etc).

jj33 on January 21, 2009 7:37 AM

For a long time I have noticed this correlation between techies and musicians. I was actually planning on going into music for a long time (been playing clarinet for close to 15 years now), but decided on computers for a couple reasons... 1) Money 2) Many people eventually want an escape from their profession, I prefer to escape TO music rather than FROM it; plus I genuinely love computers.

I see the two to be extremely similar. I think both are about creating something beautiful and abstract, however, to the end user/listener.. it seems almost tangible. When you break down both fields, it's all just logical systems. Beats, meter, repeats... are all just simple logical tools used to express something that may not seem to have any logic at all. They are all simple tools used to build something greater than the sum of its parts. The same goes for computers... 1's and 0's... simple logical tools used for expression.

Also, I always liked to think of programming languages as 'instruments', simply because if you've ever switched musical instruments, it is extremely similar to switching languages. Simply because the underlying concepts are greatly similar (notes, keys, reading music... loops, conditions, variables), you just have to learn the syntax of the the new instrument (fingerings, embrechure... key words, compilers). I have always aproached all new 'instruments' with this in mind, drawing on experience from both worlds, with great success.

Great article, glad to see other people ponder this as much as I do.

Karl Sanford on January 21, 2009 7:37 AM

According to his bio, Grady Booch sings and plays harp. No clue if he is any good, though ;)

Multimaniaco on January 21, 2009 7:40 AM

I don't have a lot to add, except to agree that I am both a musician and a programmer, and that I also see many parallels. I think many of the things that make music hard, like the ability to step back and think abstractly about the work, as well as the tenacity required to do anything great, are the same things that make programming hard.

One interesting note is that I've ALWAYS loved music, but initially I was drawn to a very non-computer oriented field of study; I only ended up in software development because I enjoyed my programming courses so much I couldn't see myself having any other career. That KIND OF points to the existence of innate characteristics that musicians (and music lovers) might share with programmers...

Jason on January 21, 2009 7:45 AM

I just wrote a short notice about Programmers and Cretivity and the connection between creativity vs creating music. We have an programmer in our company that plays in a band and makes both great programs and music. (music video in the link)
(In swedish)
http://blogs.itmaskinen.se/post/2009/01/13/Programmering-och-kreativitet.aspx

Stefan on January 21, 2009 7:47 AM

First before getting into too heated a debate about us it would make sense to figure out if the correlation that programmers have for being musicians is significantly higher than a lot of other possible professions.

Even so, would it matter much to you?

Anyway, some other things you might want to consider:

a) There are a lot of programmers out there. Each one usually has another talent other than programming and so some number of them are bound to fall into the musician category.
b) In general, programming is a job requiring a little more intellect and mental perseverance than other jobs. Having these two make accomplishing most things easier.

Joseph L on January 21, 2009 7:48 AM

It is probably more than a correlation - I play in a professional orchestra (see web link) and am a professional developer here (http://www.nextit.com). It makes for a busy September - June :-)

Both are crafts that cater to obsessive people.

LukeB on January 21, 2009 7:48 AM

I am a programmer and I also practice kung fu. The majority of the guys I practice with are programmers as well (and the other majority part works with things related to computers).
So would that mean programmers are also good at kung fu?
Maybe what lies behind this post is not what programmers actually have to do with music or other arts, but what kind of person you have to be in order to love programming.

sebastian on January 21, 2009 7:52 AM

Both my brothers are musicians...
one able to play multiple instruments at the same time
(weird and hard at the same time)...

I presumed that I gained a love and appreciation through osmosis...
but, alas, no musical ability to play an instrument.

I program and listen to music every day, however... for hours at a time.
I know exactly what you mean, Jeff, when you mention getting into the 'zone'.

Eric on January 21, 2009 7:53 AM

Well, I'm a programmer and a singer. I think I do both OK ( http://www.myspace.com/thebluesberriesat on the singing side, if you want to know) and I guess there's some overlap in the creative side -- I hear a line I think would make a great blues line and go away and try and fit it in to a song versus being told there's a bug in such and such module and going away and trying to fix it...

I can't really say that doing one makes me any better at doing the other. I do know that singing and being in front of people of an evening has got me through some of the days when the programming was getting me down.

I'm pretty glad I don't have to code on stage, though.

Paul Herzberg on January 21, 2009 7:55 AM

I just wrote about that in my companys blog.
One of the programmers in our company plays in a band and creates both good music and good programs. ;)
(In Swedish)
http://blogs.itmaskinen.se/post/2009/01/13/Programmering-och-kreativitet.aspx

Stefan on January 21, 2009 7:55 AM

Interesting observation. I have once read somewhere that programmers and mathematicians indeed, for one reason or another, gravitate towards composing music. I suppose I am a programmer at this point as I have a full-time job doing PHP and JS, though I don't consider myself one just yet and am looking into learning the more traditional programming languages to expand the knowledge. At the same time, I, too, have a large music collection, and have always liked playing musical instruments and composing in general.

Nowadays I play guitar and piano, for the most part, and an occasional percussion instrument when needed for the mix :). When it comes to electronic music, especially, there is a lot of technical details attached to it. You have made a good point about stepping away and looking at the greater whole -- it takes a lot of detailed work, tweaking, automating, and adjusting when you are producing a mix, which is the 'science' part of it, and yet without a clear and defined melody and 'hooks' which the tune is based on, and being able to see (or hear) the greater whole and tweak it to improve the overall picture it is largely technically advanced but boring music.

There is a lot of music out there like that, primarily electronic, which must be written by purely technical people. If you look into drum'n'bass and a lot of modern electro and minimal house, it is usually quite sophisticated bleep-wise alas with no depth emotionally or melodically. Don't get me wrong - I quite like that stuff sometimes, and it can be great in the middle of a properly warmed up DJ set, but it is fairly tiring on its own.

Now that I think about it, I think it all has to do with the pattern of working towards a certain goal and how you get to it. When programming, you spend time both analyzing and imagining how to solve a certain problem to produce the result, while the result itself is created to, typically, make the user's life easier in some way without him or her actually understanding any work that has gone into the product.

And with music, you compose and produce a track involving intricate details, hooks, and instruments, only to deliver a complete piece to the ears of the listener who rarely grasps the complexity of the track. And yet, without all the tweaking and hard work, just like with buggy code or a program with missing or incomplete features, the result would not be usable or listenable.

It is sort of like sound mixing for film -- the harder your work on producing sound FX and mixing sound for a movie, the less the audience will notice it and perceive it as natural. How often do you watch a movie and think, wow, those are some complex sound effects. However, if your sound work is bad (think back to home and amateur movies you've seen), it immediately ruins the feeling of presence and quality degrading the experience. The better you are, the less obvious it seems to be.

By the way, I've linked my name to the MySpace profile with some of my music. Yes, I cannot stand MySpace either, but it seems to be the networking tool of choice among musicians. Go figure.

Dmitry on January 21, 2009 7:55 AM

@jj33: In regards to Zappa, you're probably thinking of the Synclavier (http://en.wikipedia.org/wiki/Synclavier)

Dave Ray on January 21, 2009 7:56 AM

By the way, look up the history of synthesizers -- up until 60s, nobody but scientists, essentially programmers, bothered making music with them. Not to say their music was any good though =).

Dmitry on January 21, 2009 7:58 AM

When I was studying physics I also noticed a oddly high number of musical people amongst my compatriots. There does seem to be an anecdotal correlation between skill in 'technical' subjects like maths, physics, programming, with skill in music.

Indeed, there's enough of a demand that Imperial College in London offers a special 'Physics with Studies in Musical Performance' course, where you spend part of your time learning at one of the top physics departments in the country, and the rest of your time studying performance at the highest level at the Royal College of Music:

http://www3.imperial.ac.uk/ugprospectus/facultiesanddepartments/physics/undergraduatecourses

(at the bottom).

Chris Mear on January 21, 2009 7:58 AM

Hey Now Jeff,

Carl is stellar, I've seen him live with a guitar.

Coding Horror Fan,
Catto

Catto on January 21, 2009 8:02 AM

I think the relationship between mathematics and computer programming (as opposed to science) and between mathematics and music is interesting and perhaps relevant in that they're both in many ways theory vs. implementation.

You don't need to know about time signatures and harmonics to create music that uses them, just as you don't need to know what a bubble sort is to implement one. Knowing the theory of the craft generally improves the practice of the craft.

Jeff, maybe after you learn C you should pick up guitar.

Rob Drimmie on January 21, 2009 8:04 AM

The question to ask would be, are programmers musicians at a rate that is disproportionately higher, lower, or the same when compared to other professions?

Without an answer to that question, the discussion is just so much crap.

SteveC on January 21, 2009 8:05 AM

It's also the practice of discipline. Latin students and piano students have better grades in school. Taking your instrument home to practice for an hour a day sets a good precedent for other learning tasks, such as programming, learning a foreign language, etc. I equate written communication in ones native language, telling a computer what to do in any programming language, and speaking a new language as different flavors of the same skill set.

Then there's the math - music gives even its youngest students an innate understanding of fractions, relative frequencies, timing and tempo, and on and on.

Finally, being in a musical group gives people a good sense of what it takes to be on a programming (or any other) team: be individually competent at your job, while working within the group to produce something greater than the sum of its parts.

Andy on January 21, 2009 8:07 AM

For the programmer-musician, I would recommend the book "This is Your Brain on Music"

http://www.yourbrainonmusic.com/

It explores musics effect on the mind and why we enjoy it so much.

Zoasterboy on January 21, 2009 8:09 AM

I think that musical ability and programming correspond but it's because of the ability to recognize structures and hold them in one's head. The same thing applies to linguistics. I have a friend who is an excellent pianist and knows music theory inside and out and just finished his first semester of Greek. Having minored in Greek in my undergraduate program, I told him that he'd be absolutely fine. It's about recognizing structure and the relationships between the parts. This applies to programming as well. When a good programmer is thinking about a problem, he or she keeps the data structure in his or her head and understands how changes to one part affect the related parts.

A simple parallel of this in music is a pianist or guitarist who knows what changing one note in a chord means. It might mean that the chord is now a different chord (If you add a low B to a D major chord, you're actually playing Bm7 and not a D.) or it might just be a nonharmonic tone that is getting you to the next actually harmonic change.

If that doesn't make sense, it's OK. The point is that it's about recognizing relationships between the parts of a larger whole. Programmers and musicians have to be able to do that in order to be good at their respective craft.

Jamie Phelps on January 21, 2009 8:16 AM

All I know is that I work in a highly technical small company (~40 devs) where probably 40-50% plays an instrument.

Show me another profession (music related ones do not count) where that percentage is this high, and I'll stop thinking that programming and music playing are highly related...

Eduardo Scoz on January 21, 2009 8:18 AM

As JamesH mentioned above, the book "Gdel, Escher, Bach: an Eternal Golden Braid" is a long investigation into the nature if intelligence. I am sure that SOMEONE else here has read it, since the author Douglas Hofstadter is a computer guy (so to speak LOL).

As the name implies, a part of its mechanism of meaning involves drawing parallels between Mathematics, Music and Art, and investigating the areas of the mind (as opposed to the brain) that are involved with each.

That is all that I will say about it except
a) it has a great deal to do with today's topic
b) it is not a light read
c) I recommend it strongly for anyone who finds "thought" compelling

Cheers!

Philip Snelgrove on January 21, 2009 8:19 AM

I like to think of myself as a rock star programmer. :) But seriously, I recently learned drum programming which is quite easy if you read a good book on the subject. Unfortunately, most books on digital audio workstations are just software manuals and don't bother to explain drum programming.

Wired magazine has an article on "Livecoding", practitioners improvise using Perl or homemade programming architectures to build compositions from the ground up, replacing instruments and samples with raw code authoring before a live audience:

http://www.wired.com/science/discoveries/news/2006/07/71248

Robert S. Robbins on January 21, 2009 8:20 AM

I think there is a correlation, having to do with both discipline and creativity.

Denny Dias was an architect for Nantucket's Clipper 5.x xBase product, and a founding member of Steely Dan. The man has some awesome bebop chops; just listen to 'Bodhisaatva' off of the Countdown to Ecstacy album.

JeffF on January 21, 2009 8:22 AM

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.

Jason on January 21, 2009 8:30 AM

I believe I heard a long time ago that there are only 2 true geniuses in nature: musical and mathematics. Given the correlation between those 2, as well as the fact that the theoritcal side of software development, Computer Science, is a branch of mathematics, I can see there being a potential to say that people who excel at music can also excel at software development if they are interested in it.

Delmania on January 21, 2009 8:30 AM

Most people think of themselves as being defined by their job -- for example, I make money programming, so I'm a programmer but I'd rather think of myself as a musician, so check out my new album right now.

http://www.throbbingmattresskitten.com/

BTW, in addition to playing all the instruments on the album, I built the Silverlight audio player on the website as well.

I think the difference between programming and music as a career is that success as a programmer is primarily based on skill, whereas success as a "popular" musician is primarily based on luck.

Obviously there are exceptions -- studio musicians, orchestra members, etc., often have careers based on skill -- but for the singer/songwriter types, I think it's 95% luck.

In addition, functioning software is something people need, music is generally considered optional.

Timothy Lee Russell on January 21, 2009 8:30 AM

I'm not sure about this link between programmers and musicians, I just can't see it. This is coming from a person who loves music, plays in a band (perhaps not that well http://www.feellikefalling.com), but I also love and write about coding. I have also never written a song about programming, thankfully! Actually, even the thought of doing it is bizarre - I'm sure someone has though. I just can't think where I use my code writing skills as a musician, and having programming skills is not something I hear other musicians going around bragging about too often :-) It's just not rock n' roll.

Gregg on January 21, 2009 8:35 AM

Odd was I the only one waiting for the obvious Guitar Hero punchline?

But in all seriousness, I think the correlation has more to do with the fact that it's about creating and manipulating patterns, and then building on that.

OneOff on January 21, 2009 8:37 AM

Different parts of your brain do different things. While I don't know if music has any specific similarities to music in terms of actual structure or how one does it, I am fairly certain that it uses the same general brain functions to accomplish it for whatever reason.

When I was in college, I started out as a major in music and switched to a major in CS. I noticed something interesting. The chair of the music department had an identical twin brother who taught at a different school. His brother was actually a famous Computer Science professor.

Luke on January 21, 2009 8:38 AM

Yes there are programs that sound better than others.

Andi on January 21, 2009 8:40 AM

Forget reading your blog.....

If great musicians make great programmers, that would mean Britney Spears must be a fantastic programmer.

Brian on January 21, 2009 8:43 AM

Great post Jeff.

Two years ago when I quit being a professional guitar player to pursue my programming career finding this blog and then reading Code Complete was my programming equivalent to hearing Radiohead's OK Computer for this first time.

bryan on January 21, 2009 8:45 AM

I definitely think there's a connection between programming and music--but then again, I'm a programmer and a musician, having double majored in computer science and music.

I'm a music theory geek, and I've always thought that music theory exercises the same parts of my brain as programming does. Both are inherently mathematical/logical, and I'm writing counterpoint is a form of problem solving just like programming is.

I eventually synthesized my music and programming backgrounds to create a fractal music generator at http://fractalcomposer.com :).

Myron on January 21, 2009 8:56 AM

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.

Jon on January 21, 2009 9:07 AM

It's a shame you did not reference Morton Subotnik http://www.mortonsubotnick.com/about.html and his Silver Apples of the Moon album...

Steve on January 21, 2009 9:08 AM

I have heard many times over my career that mathematics, music, and intellect have a direct correlation. The answer to the question clearly lies in neuroscience.

Some anecdotals:

Those of us who are parents are aware of the whole "baby Einstein" thing where Mozart makes your kid smarter. There was a similar study that suggested listening to randomly sorted music tracks (both classical and rock were used with equal results) over the duration of the day temporarily increased the listener's IQ and problem solving abilities.

In addition to being a musician and a programmer, I am a classically trained artist, and I find all three tasks to be satisfying in very similar ways. - I've also noted that if I'm doing well in one of these areas I am less inclined to entertain myself in the others, presumably because I've already met some internal need. - There's a programmer management book that points this out, although the name escapes me. It might be a Beck/XP thing.

While we're on the subject of hobby correlation, let's find out what percentage of developers are also unusually fond of Lego...

RickCabral on January 21, 2009 9:11 AM

I think I've noticed a few patterns too!

Most programmers I know enjoy eating. I've personally observed them do it at least once a day since I started at this job.

I've also noticed that programmers are all about clothes. Since I got started in this business, I've never seen a coder arrive at work naked. Wild huh?

Echostorm on January 21, 2009 9:15 AM

Harry Nilsson was a computer programmer at a bank in the late 1960s until he was discovered by the Beatles and became famous with hits like "Coconut," "Without You," and "Me and My Arrow."

Also, CD Baby's Derek Sivers wrote about the similarities for O'Reilly: http://www.oreillynet.com/onlamp/blog/2004/05/programming_is_like_songwritin.html

Andy Baio on January 21, 2009 9:24 AM

Dude, I was a programmer that started with Code Complete, and then I heard OK Computer for the first time a couple of years ago. I started playing guitar before I was a programmer though. Coincidence!?

Seriously, though, they were both seminal experiences. I still remember exactly where I was the first time I heard Exit Music, coming off the highway and getting the shivers from "You can laugh..."

There is a world-building parallel between CS, physics/hard science, and music. In physics research, you work within the constraints of the physical world and draw out novel effects by looking at the world from a new theoretical perspective. In music, the rules of the world are acoustics and human perception, and the dimensions are instruments, found sounds, voice, tone, volume, rhythm, etc. In CS, you make up more of the rules, but more often you specialize and work within a certain genre like user experience, languages, or algorithms.

There are plenty of professions that don't build worlds, like finance, manual labor, the service professions, manufacturing (except for engineering/design), etc. It's mostly the artists, scientists, and engineers, just like GEB said.

Dan Lewis on January 21, 2009 9:25 AM

A very interesting community supporting this point is the Monome Community ( http://www.monome.org ). Its an open source device which allows for programming on a number of platforms. Some of the software that has come out of there is amazing.

Dan on January 21, 2009 9:26 AM

A professional tenor I know once put it simply as: Music *is* mathematics.

mgb on January 21, 2009 9:29 AM

"Let's be practical: musicians become programmers, generally not the other way around, simply because those gigs actually pay the bills."

What about Jonathan Coulton (www.jonathancoulton.com)? He went from being a "code Monkey" to full time musician.

kintech on January 21, 2009 9:33 AM

I'm also a (now semi) professional musician and a programmer. I think this correlation has to do with the fact that both skills require using both the left and right sides of the brain...

My favorite anecdote about being a developer and a musician... When I went to college between 1980-1984 my mother; while always very supportive - strongly encouraged me not to become a music major so that I would have "something to fall back on" because the music business is so unstable. (Her brother was a very successful musician - he played bass for "The Pointer Sisters" as well as once backing up John Coltrane when Jimmy Garrison was in Chicago and had the flu)..

I took advantage of the .COM boom in 1998 by quitting my "Day Job" and consulting part-time from home while pursuing music full-time. When the bubble burst - (in 2001) I wasn't able to find any programming work for about 10 months. But I had enough gigs lined up to keep myself in the black financially.

I loved to rub it in with my mom "The computer field is so unreliable, it's good that I have trombone playing to fall back on"...

When the music winter slump (I live in Chicago) of January-February hit - I went back to full-time working as a programmer in 2002

Daniel Sniderman on January 21, 2009 9:34 AM

For me, getting in the groove is a lot easier with coding than with music. Composing music requires a little extra creative spark (or maybe it's just a stroke of luck) that's sometimes there and sometimes not; whereas with programming, it's much more goal-oriented which makes it easier to make a little progress at a time even if I'm not in the groove.

wickethewok on January 21, 2009 9:38 AM

I was going to weigh in, being a semiprofessional musician and professional (theoretically) programmer, nigh onto 28 years now. But Jamie Phelps already made my point above. (It's a shame one can't automatically quote an existing message...)

> I think that musical ability and programming correspond but it's
> because of the ability to recognize structures and hold them in
> one's head. The same thing applies to linguistics.

I got started in programming because a friend who worked on Wall Street at the time said "You like to solve puzzle, right? Then you'd like programming."

He was a writer and thought writers made good programmers. In college, a CS professor told me that musicians made good programmers. Abstracting, I came to hold the idea that those good at processing symbols make good programmers.

However, not all musicians can BECOME programmers. For years I nudged my son, musically astute, to try programming. He took a VB course in high school but never really got into it. I'm guessing he never really had an interest in it.

In music as in programming, there's more to being successful than potential or raw talent.

SteveOwens on January 21, 2009 9:39 AM

For a moment there, I thought this post was going to flow into a passionate declaration of love and admiration for Wii Music...

Protector one on January 21, 2009 9:49 AM

I'm a coder by trade and my girlfriend is a musician, she can use use a computer but is no technical wiz and I can play a bit of guitar but nothing great. I don't think there's any particular link between the talents or aptitudes.

As many people have said, programmers love of music is explained by this being common in general amongst all people. Also a LOT of people play an instrument or at one time were in a band, the law of averages says a certain amount of coders will be former musicians and vice versa.

Alb on January 21, 2009 9:50 AM

You're the best, Jess. You nailed the missing link between musicians and (the best) programmers. Rock on!!

Jesse on January 21, 2009 9:50 AM

I work for a music company, most (hmm make that all) of the people here are musical. developers make up about 1%. Although we are pretty musical, I'm more of the opinion (as stated earlier) that music is just a human attribute it's something everyone loves and you're back to your 10,000 hours, which do you practice the most and yeah both require that same level of commitment and overlapping skills.
With cool/geek music tools like Tenori-on as well I think we'll be doing more music anyway ;-)

Dave on January 21, 2009 9:52 AM

So the commonality isn't in the process of creating music or code, nor is it in the requisite skills. Quite simply, we're both willing to create a product that will live or die not by its merits but by its sex appeal.

CynicalTyler on January 21, 2009 10:05 AM

As a side note, to link Programming to the Arts:

Paul Graham has always been using the Programmers are like painters analogy. Since that was his side interests.

I've always said that creating quality code is an art, that must be mastered. Evey object/thread you are using at a time must be orchestrated in perfect unison to create that beautiful result that we love.

Paul Graham's Hackers & Painters
http://www.amazon.com/Hackers-Painters-Big-Ideas-Computer/dp/0596006624

Glenn on January 21, 2009 10:08 AM

Just because you can't _play_ music doesn't mean you can't hear it. Being able to hear it allows you to appreciate on some level its complexities.

Corey Furman on January 21, 2009 10:25 AM

I started playing guitar and programming the same year, so I'd say there's some truth to this (I was 10). I'm still playing (and programming, obviously) and have been in some great bands.

Charles Callebs on January 21, 2009 10:40 AM

Karl Sanford on January 21, 2009 07:37 AM wrote: "Also, I always liked to think of programming languages as 'instruments', simply because if you've ever switched musical instruments, it is extremely similar to switching languages. Simply because the underlying concepts are greatly similar (notes, keys, reading music... loops, conditions, variables), you just have to learn the syntax of the the new instrument (fingerings, embrechure... key words, compilers). I have always aproached all new 'instruments' with this in mind, drawing on experience from both worlds, with great success."

With that in mind, going from imperative to functional programming is like going from a kazoo to a thermin...

apeinago on January 21, 2009 10:52 AM

there's another profession that programmers are like....prostitutes.

1. We work weird (night) shifts...
Just like prostitutes.

2. They pay you to make the client happy...
Just like a prostitute.

3. The client pays a lot of money, but your employer keeps almost every penny...
Just like a prostitute.

4. You are rewarded for fulfilling the client's dreams...
Just like a prostitute.

5. Your friends fall apart and you end up hanging out with people in the same profession as you...
Just like a prostitute.

6. When you have to meet the client you always have to be perfectly
groomed...
Just like a prostitute.

7. But when you go back home it seems like you are coming back from hell...
Just like a prostitute.

8. The client always wants to pay less but expects incredible things from you...
Just like a prostitute.

9. When people ask you about your job, you have difficulties to explain it...
Just like a prostitute.

10. Everyday when you wake up, you say: "I'm not going to spent the rest of my life doing this."
Just like a prostitute ........

FYI: I got this from http://clipgallery.blogspot.com/2007/01/truth-about-working-in-it-industry.html

Keng on January 21, 2009 11:04 AM

In Steven Levy's "Hackers", he talks about how many of the earliest computer scientists also dabbled in telephone system tinkering or model railroads. (They even "hacked the system" of the local Chinese restaurant!)

It's pretty clear that many programmers share some kind of love of "logical systems", and I think music falls into that category for many of us. Understanding which combinations of melodies and rhythms are nice to hear, or fun to play, or stir up different emotions is just another system for our analytical minds to "hack".

Music is also a fascinating combination of technical/analytical and emotional/artistic thinking, which can be a great outlet for someone working on mostly technical challenges all day. As Jeff implies, music is a safer place to express onesself than code!

Chris Jaynes on January 21, 2009 11:39 AM

There is a strong connection between math and music. There is also a strong connection between programming (computer science) and math.
I just blogged about that.
http://blog.jtbworld.com/2009/01/carol-bartz-essay-from-1997.html

On the topic you may find these links interesting as well:
http://tones.wolfram.com/
http://boris.reitman.name/math_music_hist.pdf
The link between numbers and music was observed by Pythagoras.

Jimmy Bergmark on January 21, 2009 11:39 AM

By the way. I love math, I'm a pianist and programmer. Not sure in what order.
Another link:
http://arts.ucsc.edu/faculty/cope/

Jimmy Bergmark on January 21, 2009 11:43 AM

"music is a safer place to express onesself than code!"

Hmmm... I'm not sure anyone who's performed an original composition in front of an audience would agree =).

jj33 on January 21, 2009 11:45 AM

I would say you'd be hard pressed to find very many people in any field who don't have a love of music. At least a little, anyway. And most people who have the opportunity and the technical skill will at least dabble in music a little.

Personally I find music easier because it comes more naturally to me. I already know what (in my opinion) sounds good or does not. The hardest part is turning the one into the other. It gets a lot more complicated than that, of course, but it's something you can begin, unlike programing, without any real learning curve.

I'm also a painter, sculptor, writer, and practitioner of most of the arts. One thing I am not is a competent programmer (though I used to be pretty good with some varieties of BASIC). But I enjoy it sometimes because of its beautiful simplicity and daunting complexity.

Ultimately I think correlations with the arts have a high probability in general, partly because such pursuits are based on aesthetics, which everyone has in some capacity, and because their definition is so subjective.

WurdBendur on January 21, 2009 11:46 AM

I'm a flutist (since 18 years) and a programmer (since 22 years). I've always thought that the answer is really simple: both music and programming are arts.

Fabio Xodo on January 21, 2009 11:50 AM

As another programmer/musician, I'll throw my two cents in.

I've found that my processes for attacking both software composition and music composition have many similarities.

* In both, there is a definite need for a delicate balance of concrete planning and keeping a creative, flexible open mind.

* It is easy to get bogged down in details of syntax and lose sight of the end product. I can't tell you how many songs I've left unfinished and how many snippets of code have suffered a similar fate just from losing that big picture.

* New ideas/solutions sometimes seemingly come from nowhere, and other times from brute force.

* Subconsciously or not, we are influenced greatly by the music and code we've heard and seen before.

* There are patterns that I've developed that work for me, both in writing a song and writing code - which also means I sometimes have to fight to break those patterns when necessary.

But the biggest similarity to me is the universal struggle with translating the mind's vision (a feature implementation or site design - or on the flip side, the initial inspiration for a song) with my weaknesses as a coder/songwriter and the delicacy of the translation technique (language syntax, IDE quirks, the sounds my instruments are capable of making, and even my skills as a musician, etc)

Great topic!
-Andy

Andy on January 21, 2009 11:53 AM

(Please forgive the poor grammar)
I think the analogy is a valid one. I consider Programming to be an art and a science. Their are the technical aspects, the habits of method, and the artistic elements, the habits of mind. Much like cooking one follows instructions of a recipe but one also improvises and makes changes using imprecise measurements. Like music, one must follow the instructions and interpret them, much as one does with code (albeit in reverse), but when playing in a group or in an orchestra you have to make slight variations (or larger ones) to stay with the rest of the other players. It's ultimately a search for balance between the scientific aspects and the artistic aspects of the skills.

Randall on January 21, 2009 12:09 PM

>> could it be true that all programmers are human?
No way, no how. You're pushing it! ;-)

Hartmut on January 21, 2009 12:28 PM

I've always considered code to be a form of art. Visually, it's beautiful to look at, and code styles often reflect the personalities of those that write it. As a programmer, I have a strong creative side that appreciates music, paintings, and code, all as an expression of the individual that creates it. And the number one reason I love music - it allows me to get into the zone so I can write more code.

John on January 21, 2009 12:28 PM

Nothing like writing code to Metallica, or any metal band for that matter.

Mark S. on January 21, 2009 12:54 PM

OK, so I am just going to chime in. I was introduced to computers at the age of 4. That is also about the time I started playing music. Programming is has been my day job for about 15 years now. Music has been my release for about 20 years now. I have generally worked for companies with strict guidelines on coding. Strict to the point of removing my ability to be creative. I would argue this is probably a good thing.

Music lets me be creative in ways that I can't in code. Sure there is a lot of math to music. And if played that way it will suck ballz.

Music and other art forms require you to use a part of your brain that goes beyond your everyday thinking process. You have to synthesize the fundamentals and create something where nothing existed before. So, it's no suprise that musician's (the real kind not the hack jobs that are in the mainstream today) tend to be smart. Look at a majority (not all) of the students graduating with high GPA's and you will find a strong correlation between the grades and particiaption in some sort of art form...


Wayne on January 21, 2009 12:54 PM

Blech. I'm a fan of your blog, but this post wasn't in your top 100.

Not a whole lot of value or information here. Might as well start posting tips about how to be productive in the new year. ;)

Hutch on January 21, 2009 1:03 PM

A proven way to enhance a child's mental ability is to get them a musical (real; not some push button thingy) instrument to play and play with as soon as possible.

Learning to play at a very early age wires the brain up in a manner that results in higher iq, better understanding of abstract concepts, better math scores in school, etc, and of course, better music.

It's just the right thing to do for your child and, as early as possible you should do it.

Don't discourage their playing, if they break it, get them another one. You will be simply amazed at how such a minor investment reaps such tremendous rewards...

Mac on January 21, 2009 1:32 PM

I tried to do website work for a group of (literally) rock star musicians. Their ideas were so head-in-the-clouds that I couldn't follow anything they were saying. They were talking about the Internet in imaginary terms, clearly not understanding the least bit about how data really flows through an application.

Good musicians do not necessarily need to have the thought-path required to figure out computer logic, apparently.

Good programmers have to have musical or some artistic talent because programming by itself is not useful. Programming is only useful when it's used to solve a logic problem in a creative way.


(F -> G7 -> C).. Done!

Harry on January 21, 2009 1:52 PM


I also program and have a very strong love for music. As part of my neverending quest for new music, I wrote a program to help get new mp3s from music blogs. Check it out:
http://www.musicbuddy.info

Enjoy!
-Greg

Greg on January 21, 2009 1:57 PM

Except that I cared that they are good musicians.

"Where's five, Vinny?"

travis on January 21, 2009 2:39 PM

I continue to be fascinated by the fact that neither my compositions nor my code actually exist. They are simply virtual concepts translated into series of instructions that are later interpreted by a [ CPU | better musician than me ]

But more importantly, the volume on my amps go up to eleven.

Yet-Another-Musician-Programmer :)

YAMP on January 21, 2009 3:23 PM

Interesting...

I studied at the Conservatorium in my neck of the woods only to leave it to study programming.

Money was the main reason I did it - I loved both, but there's no money in music unless you're really, really good (and up for practicing about 8 hours a day - which I wasn't).

Damian Brady on January 21, 2009 3:29 PM


For all the bravado of performing, the act of actually learning an instrument is very introverted and insular. These tendencies are often linked with young adopters of software engineering, along with having lots of free time to pursue their personal interests.

I've also noticed that at the top of their game, the musicians and great developers i've met tend to be physically fit, see their profession as a 'craft' and are interestingly prone to all sorts of 'escapist tendencies'.

Adam on January 21, 2009 3:33 PM

I dont really care if the programmers are a good fit for a musician or viceversa, what I can tell is that usually programmers that like to listen to music while programming are better programmers than those who cannot listen to music while doing because they "get distracted".

Sebastian on January 21, 2009 5:01 PM

Having written the comment on which this blog was based, I would like to make two observations:

1. The most obvious correlation between musicians and programmers is that if you take a group of four of either, you end up with five opinions ;0)

2. Recent research has discovered that playing music to haemorrhagic stroke victims significantly increases their chance of recovering speech due to exercising the plasticity of the brain.

Word of Mouth Mike on January 21, 2009 6:35 PM

See this interview with vibes and marimba player Stefon Harris:
<a href="http://www.jazz.com/features-and-interviews/2007/12/1/a-conversation-with-stefon-harris">http://www.jazz.com/features-and-interviews/2007/12/1/a-conversation-with-stefon-harris</a>

Chris W. on January 21, 2009 6:38 PM

> I have heard before that Elvis Costello was a programmer before he hit it big. I wonder if there are other famous musicans with a techie past?

I understand that Tommy Tutone is a programmer. He's famous enough, in my book.

TD on January 21, 2009 6:46 PM

Well I am a musician too! I play in a guitar orchestra called Orquesta de guitarras Armando Morales Barillas(I am from Nicaragua) and there is a lot in common in both skills.

Nice post!

Adolfo Fitoria on January 21, 2009 6:48 PM

As I was reading this post I remembered something I read on the Joel on Software site, long ago, that made me laugh at that time, something related with programmers and rock bands, so I went to search for it. here it is, it is actually a BIG DIFFERENCE that exists between programmers and musicians... ha! ha!

Source:
<a href="http://www.joelonsoftware.com/printerfriendly/items/2007/09/18.html">http://www.joelonsoftware.com/printerfriendly/items/2007/09/18.html</a>

"....As a programmer, thanks to plummeting memory prices, and CPU speeds doubling every year, you had a choice. You could spend six months rewriting your inner loops in Assembler, or take six months off to play drums in a rock and roll band, and in either case, your program would run faster. Assembler programmers don’t have groupies."

Steve on January 21, 2009 7:29 PM

Ha! Ha! thanks Keng for that analogy between programmers and prostitutes. it was really funny.

Steve on January 21, 2009 7:37 PM

@Sebastian - good point. I have found the same thing. I listen to music while programming and I'm a better programmer for it.

Philip on January 21, 2009 8:01 PM

I think that you are absolutely correct when you say that programming is kind of like music.

I am a guitar player and I love music and programming. Programming is to me like writing music, just the way my music fits beautifully together to form the song, my code fits in there to make a hell of a cool program...

Music = Programming... About 99% true.

Jehanzeb Naeem Khan on January 21, 2009 8:16 PM

I'm a senior software engineer and a classical musician, who switched from a professional career to software. The problem with these comparisons is that I hear them everywhere. Music and math. Music and physics (famous story about the lead (french) horn player for the Boston Symphony being a former physics professor.) Music and writing (Christopher Hitchens notes that it seems like you have to be conversant in music to be a fiction writer). And so on.

I think what's going on is that if you can perform or write music at a high level, you can do anything. One of the most enlightening experiences of my life was when learning to play the piano, I experienced my brain (to borrow a computer analogy) running out of CPU cycles. I just didn't have enough bandwidth. It took a month for my brain to (literally I believe) grow enough capacity to handle what I was trying to do. I never experienced that in any other activity. And I've done a few things.

I left music to get a PhD in physics, then moved into engineering where I rose to the top. Something special about me? No, other than I can play Chopin.

Dan on January 21, 2009 9:02 PM

I have to disagree with Jeff,resent blog post by Jeff and their titles and content are confusing and meant to do nothing but just for the sake of his blog on software development.THIS COMPARISON OR WHAT EVER SUCKS.PEOPLE WRITING SYSTEM PROGRAMS HARDLY COMPARE WITH MUSICIANS AND WELL PROGRAMMERS HAVE NO LIFE

zOrg on January 21, 2009 9:53 PM

Um, I'm a programmer, and I'm a graphical artist, with little musical skill, so I have to agree that Hackers are like Artists, not musicians... ;)

Robert on January 21, 2009 9:54 PM

I'm a musician, of sorts. I guess that if there is a connection, it is indirect - both music and programming having maths/logic/patterns in common. Oh, and playing piano definitely helped me learning to touch type!

You want other examples of famous programmer/musician?
The comment that provoked this post mentioned Alan Kay. Apparently Donald Knuth has a pipe organ in his house. And there's Zed Shaw of course.... :)

Ben on January 21, 2009 11:05 PM

Every professional (including programmer) who sees his job as an art naturally performs better.

britto on January 21, 2009 11:36 PM

Programmers seem to have way too much time on their hands because we keep coming up with silly analogies and spurious connections and wasting time and ascii blogging and rambling on about them.

I think one of the most important qualities of programmers is their ability to see connections and recognize patterns quickly and efficiently, it's a skill that is invaluable for a software developer, unfortunately it becomes a little over developed and becomes a detriment when it's taken outside the cold clear logic of writing software. :)

It's very easy for programmers to fall into the trap of taking a small example of a tenuous pattern or connection and extrapolating it beyond the breaking point.

Of course if you ask *any* group of non hearing impaired people they are going to say they love music and every group of any reasonable size knows someone in that group who plays in a band or plays an instrument or sings.

I've never heard of any culture on earth that doesn't play and enjoy music.

I've hung around programming discussion forums since the early days of 300 baud modems and bulletin board system and relay mail and there is nothing I've ever noticed about programmers that makes them any unique from anyone else other than the fact that they write code.

JohnC on January 21, 2009 11:46 PM

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

>>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.

:)


Samrat Patil on January 22, 2009 12:21 AM

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 ? :)

Laurent on January 22, 2009 12:48 AM

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?
:)

oren on January 22, 2009 1:27 AM

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.

James Kaleta on January 22, 2009 1:29 AM

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. :)

Anonymous on January 22, 2009 1:31 AM

When I studied music theory I made programs based on these theories to automatically create chords to a melody as well as create notations.

Jimmy Bergmark on January 22, 2009 1:58 AM

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.

Jim on January 22, 2009 3:05 AM

Jeff,

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.

Bill on January 22, 2009 3:17 AM

> 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
> great programmers.

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 :-)

Jim Cooper on January 22, 2009 3:34 AM

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?

fred on January 22, 2009 4:20 AM

"Music is a hidden arithmetic exercise of the soul, which does not know that it is counting."
-Leibniz

xyz on January 22, 2009 5:22 AM

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?

Mohit Nanda on January 22, 2009 5:24 AM

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.

Teemu on January 22, 2009 5:24 AM

(so that obvious joke would be something like...)

c# is to guitar

as

vb.net is to guitar hero?

secretGeek on January 22, 2009 5:33 AM

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.

Ex.
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.

anon for ranting on January 22, 2009 5:37 AM

... and that's the way I like it!

Josh Kodroff on January 22, 2009 5:51 AM

Well, if physicists are mentioned then let's not forget Brian May (yets, THAT Brian May) who got his PhD in 2007.

Rimantas on January 22, 2009 6:26 AM

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.

0zn0g on January 22, 2009 6:43 AM

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
http://en.wikipedia.org/wiki/Music_and_mathematics

this explains a lot as well and is quite interesting -- which i think most people don't know about....the golden_ratio
http://en.wikipedia.org/wiki/Golden_ratio


so it makes sense how programmers have a taste for music.

(but then again most people move music!)

dezwald on January 22, 2009 7:25 AM

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.

ADaveIKnow on January 22, 2009 7:43 AM

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.

Paul Herzberg on January 22, 2009 8:04 AM

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.

Erin on January 22, 2009 8:09 AM

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.

paul on January 22, 2009 8:34 AM

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."

tkotitan on January 22, 2009 10:21 AM

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.

Theo on January 22, 2009 11:10 AM

How about being left-handed, or right-eyed? Vision and hand control are two of the most dominant brain functions people have. There might be more fundamental factors than musicality that defines what you are good at.

http://www.sciencedaily.com/releases/2007/03/070323135954.htm

Tero on January 22, 2009 11:37 AM


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.

Tero on January 22, 2009 11:53 AM

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.

Ben L on January 22, 2009 12:12 PM

Thanks Jeff - now I can't get the chorus out of my head...

Little green roseta...........

ByteMaster on January 22, 2009 1:06 PM

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!"

dannygutters on January 22, 2009 2:09 PM

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?

Aarti on January 22, 2009 2:44 PM

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.

JohnC on January 22, 2009 2:54 PM

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...

Kyle on January 22, 2009 2:58 PM

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?

Pardeep on January 22, 2009 3:13 PM

@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
www.personalitypage.com/index.html

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.

Philip on January 22, 2009 4:29 PM

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.

Andrew on January 22, 2009 5:45 PM

many programers like beer, does this mean I drink beer to be better at programing?

brian on January 22, 2009 6:06 PM

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.

-Another musician/coder

Kevin on January 22, 2009 7:00 PM

Actually what i found is that more and more programmer loves photography.

JO on January 22, 2009 9:57 PM

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?


notnice on January 22, 2009 11:34 PM

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 :)

Joe on January 23, 2009 6:29 AM

In the 80s I remember reading that Mick Mars of Motley Crue dabbled in writing video games.

Rich on January 23, 2009 7:17 AM

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!

Franois on January 23, 2009 11:15 AM

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 is seriously worth examining, in addition to being a music creation programming language (that most programmers working with modern languages could easily pick up, even VB, PHP and JavaScript peeps) it uses Live Programming:

http://en.wikipedia.org/wiki/Live_coding#Live_coding

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?

Word of Mouth Mike on January 23, 2009 11:17 AM

@dannygutters

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?

Theo on January 24, 2009 6:36 AM

Of course musicians and programmers have everything in common: way before K&R appeared, Bach was writing songs in C!

Dalto on January 26, 2009 2:22 PM

I have my feet in both worlds, and my manager does as well. I originally met him through our shared interest in music.

Scott on January 30, 2009 6:04 PM

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.

Chepech on February 5, 2009 8:32 AM

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/

Jason Sheppard on February 5, 2009 12:00 PM

I have never made the correlation before.

But I have a sincere interest in music (played baritone, cello, and now guitar) and I write software (HTML, CSS, JavaScript, PHP, SQL, C#, BASIC, C) now. I'm not a rockstar but I toy around playing for mere personal interest. IE, no ego-bloat here.

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.

Evan Plaice on March 3, 2009 11:42 PM

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?

PunkRockGeek on March 25, 2009 4:56 PM

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/

Rainfly_X on May 4, 2009 10:44 PM
Content (c) 2009 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved.