views:

357

answers:

13

I remember some time ago reading in Dr. Dobb's Journal, years ago, that there may be some correlation between people who program and playing musical instruments.

Do you play a musical instrument? Do you think this might affect how you program? What about other arts -- painting or other visual arts, writing, acting?

A: 

I'm just a student so I can only speak of my limited experience, but I can see no correlation between the better programmers and the ones that play an instrument/paint etc. Why do you ask? If it's a way of improving you're after then I'd suggest to just work on your craft, if it's an excuse to branch out and try something new then ya don't need a quantifiable reason for that.

Tarks
+5  A: 

I can't comment on musicial instruments, but in general to me it seems that those that expand their horizon's beyond black/white topics might be better formulating solutions to obscure problems. Although we are dealing with bits and bytes, 1's and 0's, those who have a creative side tend to think more outside the box and think up more creative solutions to problems. It could also be because they are more meticulous (or perfectionists?) in nature which also lends itself to producing quality software.

public static
+1  A: 

This is likely to be a very hard question to answer as it is so subjective, but I tend to dabble a bit in the arts myself (i.e. drawing, photography) as well as music (i.e. piano) and it does seem that most of the other programmers who I have worked with also tend to do the same.

In terms of music, this is somewhat easy to understand as there are patterns and rules to music that someone with years of experience programming might be able to pick-up subconsciously. While this might not turn someone into the next Bach or Chopin, they might be able to play a respectable preference of a song.

Likewise with visual arts, there are some rules that you can apply to make something that is functionally "interesting" but once again, not likely to be the next Picaso.

However, this does in some ways make you wonder how good of programmers some of the great names in art would have been. It is fairly well accepted that being good at some forms of math tends to make for a good programmer, or even be mandatory for some types of programming; but I haven't seen much in regards to the arts.

Rob
+1  A: 

I definately don't play any instruments, and don't feel "artsy" in any way. But other than that, I consider myself quite "handy" when it comes to solving practical problems. Putting together IKEA-furniture? No problem! Fixing other real-life stuff? Yeah!

I think there is a stronger correlation between people who are good at solving real-life practical problems and good programmers, than there is between "artsy" people and good programmers...

Espenhh
+5  A: 

I think there's definitely a correlation. I saw this in college when I was in the Michigan Marching Band - surprisingly, over 50% of the members were in the school of engineering. You can also see it in the high number of music-related startups. People tend to follow the old axiom "do what you know".

For a more scientific look at this, check out the book Musicophilia: Tales of Music and the Brain.

Kevin
+1  A: 

I play a variety of musical instruments, and write songs here and there. I don't know if doing so has made me a better programmer - but I do feel as if I go through the same rough mental process when writing a song that I do when designing a piece of software.

jeremiahd
A: 

There's an amazing correlation between programming and music - which is weird to me, because I've tried a couple of times to learn to play an instrument and choir bells are about my limit.

On the other hand, I love photography, even if I'm not very good at it, and, I'm sorry, but I really do think balloon animals are an art form, even if only an ephemeral one.

Mike Heinz
A: 

I don't play music except for some music classes a long time ago, and if I did I'd definitely be a better programmer than musician. I have heard others reference the commonality between thinking in program structures and musical patterns, but I'm not convinced there is necessarily a correlation that causes a cross-improvement in skills.

There's an old joke at a shop I used to work at. They needed an app and they had heard of this "Java" thing and wanted it to be written in Java because it was supposedly the langauage of the web. They found out too late that the consultants they hired to build it were actually a bunch of full-time musicians that were programmers on the side (sort of the reverse of most of the readers here, I'd guess). Long story short: disaster!

The relationship between programming and music composition is a fascinating one to ponder, but I think a truly outstanding music writer has to have uncommon talent. I think programming is more tedious and regimented (in some ways) but can be done competently by people with more discipline than talent. This isn't to say someone supremely talented in both won't find some synergy, but I think the two pursuits are probably more different than they are similar. In music, after all, it's ok to repeat yourself.

Bernard Dy
+1  A: 

I'm reminded of the following quote from Donald Knuth in this interview:

Knuth: There is a very profound change that I can't account for. In the 70s, the majority of our students were very interested in music. The first thing we'd ask them when they came in was "What instrument do you play?" We had lots of chamber groups and so on. Now almost none of the students are interested in music. I don't know if it's because a different kind of people are enrolling in computer science, or because it's true of all today's students, or what. If you ask computer science students now what their hobby is, the chances are most of them will say "Bicycling". I recently had one who played a harmonica, but there were almost no musicians in the group.

CLB: Any changes in the quality of the students?

Knuth: Not the quality... but they don't know as much about mathematics as they used to. We have to do more remedial stuff in college, even at a school like Stanford.

lindelof
A: 

Having knowledge in the arts isn't a plus per se; but if you know how to apply it in your field it becomes a plus. I dunno about playing musical instruments (I do know, however, that years in training for the piano paid off by me sporting the correct RSI-proof stance even before I touched my first computer keyboard) but knowledge in, say, the visual arts, helps a developer in appreciating the aesthetic aspects of their UI and code structure. An artist will not be able to stand ugly code (if he knows what ugly code is, that is).

Jon Limjap
A: 

I can recommend two books that are somewhat relating to this issue...

"Gödel Escher Bach" by Douglas Hofstadter

"Hackers and Painters" by Paul Graham

Excerpt from Hackers and Painters

epatel
A: 

You should take a look at what Richard Gabriel, Paul Graham and Donal Knuth say about this.

I've been talking about this issue from some time and have many posts related on my blog: Agileandart. In one of my posts I argue:

"Refactoring is a well known technique in software development. In short terms, refactoring is to execute a sequence of small well defined steps with the intention to let your code base more clear, more beautiful, more elegant. The result of a continuous refactoring practice is a simpler and easier to maintain software project. There many times also when refactoring takes the programmer to create new abstractions and code generalizations.

Let's go to a simple example: suppose we are programming a Person entity class. This class contains attributes like name, weight, age, gender, spoken language. After some time, I find out that I need to insert cats in my system for some reason. Then, I create the Cat class with its attributes name, weight, gender and hair color. After that understand I've created an ambiguity. Both and Cat and Person classes have some attributes in common. By doing a refactoring, I can then create the Animal class, with the common attributes (name, weight, gender) and make the Cat and Person classes "inherit" the animal properties.

The idea of extracting abstractions is to identify the essence of a system and describe its most deeply characteristics with simple elements. To achieve this essence you need a lot of experience and sweat. You need mastery you programming skills and use the tools and programming languages in the most proper way. It is an Art.

Take a look at the video bellow to see how refactoring was made by Pablo Picasso in his paintings:

http://www.youtube.com/watch?v=ZpILjXqkt0Q

First, the painter draw a ordinary bull, which can be recognized by a 5 year old child. Irrelevants parts are being remove at each new stage of the draw (there are 11 pictures), besides the main idea of the bull remains. The whole genious desconstruction proccess takes six weeks. Even with few drawn lines, the last painting can still clearly represent the bull. They are the animal's essence.

Every capable programmer, software creator, needs to know how to recognize essential aspects of the domain he is programming for. The technic helps to execute it, but geniality is rooted in intuitive thinking and the artistic capacity of identifying and extracting the essence."

Daniel Cukier
+2  A: 

I think this quote from Carl Franklin of '.NET Rocks!' sums it up pretty well.

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

Ryan Hayes