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
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. ;)
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...
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!
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:
Except that I cared that they are good musicians.
Where's five, Vinny?
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.
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).
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'.
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.
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.
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.
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.
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? :)
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. :)
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.
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.
I'd have to agree with jammus... it's not just programmers/developers... it's most people that love music.
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.
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.
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.
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!
....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.
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.
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).
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.
Ha! Ha! thanks Keng for that analogy between programmers and prostitutes. it was really funny.
According to his bio, Grady Booch sings and plays harp. No clue if he is any good, though ;)
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...
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.
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.
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.
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'.
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.
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.
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 =).
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:
(at the bottom).
@Sebastian - good point. I have found the same thing. I listen to music while programming and I'm a better programmer for it.
Hey Now Jeff,
Carl is stellar, I've seen him live with a guitar.
Coding Horror Fan,
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.
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.
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.
For the programmer-musician, I would recommend the book This is Your Brain on Music
It explores musics effect on the mind and why we enjoy it so much.
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.
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.
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...
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
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:
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.
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.
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.
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.
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.
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.
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.
Yes there are programs that sound better than others.
Forget reading your blog.....
If great musicians make great programmers, that would mean Britney Spears must be a fantastic programmer.
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.
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 :).
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.
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.
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...
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?
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.
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.
A professional tenor I know once put it simply as: Music *is* mathematics.
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.
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
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.
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.
For a moment there, I thought this post was going to flow into a passionate declaration of love and admiration for Wii Music...
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.
You're the best, Jess. You nailed the missing link between musicians and (the best) programmers. Rock on!!
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 ;-)
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
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... ;)
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.
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
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.
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.
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...
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
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
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.... :)
Every professional (including programmer) who sees his job as an art naturally performs better.
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!
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 =).
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.
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.
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.
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)
(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.
could it be true that all programmers are human?
No way, no how. You're pushing it! ;-)
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.
Nothing like writing code to Metallica, or any metal band for that matter.
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...