Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I liken coding to playing a musical instrument.

Some people are musically inclined, they can learn easily and fast and they tend to the best. But most people require some level of training complimented by the dedication of what amounts to mostly self-practice. So in a way, you're self taught.

The vast majority of people are willing to buy an instrument, just to see if they are musically inclined, but when they find out they aren't they don't have the dedication to do it the hard way.



> I liken coding to playing a musical instrument.

Except with a musical instrument, anybody can judge whether you are good at it. Not so with programming. Everybody who ever wrote one line of HTML can call themself a programmer, but only trained people can tell whether you are a good one.

You might say at this point: so what? But I think the distinction is important, because it may be the reason the "driving force" is missing for a lot of people. If programming really had "rock stars" we might have had a lot more good programmers.


Pop music is quite capable of working with "stars" who can't play their instrument or sing, especially since the invention of Autotune.


Counterpoint, I can knock out a first class "Stairway to Heaven" in the local electric guitar shop simply by remembering where my fingers should be but not having any clue about what chords and notes they are.

Can I be judged to be an accomplished musician upon that sole rendition?


Of course not. There isn't really a programming equivalent though. I guess you could memorise the syntax for one specific, complicated program and you're right, that wouldn't make you a programmer.


No, definitely not. But you could certainly get a few others together, start a band, play some gigs, maybe even make a little bit of money.


This is a pretty fair comparison. Music has a pretty standardized format, relatively speaking, in what 'sounds good' and what sounds 'bad' based on one's cultural upbringing. As in, certain tonalities are pleasing to the ear. From basic understanding and competency comes the ability, in theory, to 'compose' pieces. My experience with coding is similar in that there are good ways to structure a composition, and not-so good ways. In coding, a compiler or testing the program is what reveals if something works or not, much in the same way that playing back a recorded version of a composition can reveal what's good or not good about a musical piece.


I've always used this comparison too. Of course this same explanation can be used for many fields and career choices, but for technical fields I think it's easy to make this comparison. It's important to point out exactly what you just said though - "the hard way".

It's the whole nature vs nuture argument. I wish I could have told myself many years ago to focus more on my "nuture" side. It's amazing how far you can go when you previously wrote it off as being not naturally inclined.


Quoted in SICP:

A computer is like a violin. You can imagine a novice trying first a phonograph and then a violin. The latter, he says, sounds terrible. That is the argument we have heard from our humanists and most of our computer scientists. Computer programs are good, they say, for particular purposes, but they aren't flexible. Neither is a violin, or a typewriter, until you learn how to use it.

Marvin Minsky, ``Why Programming Is a Good


Although I try to be careful with analogies, I do think this is an excellent one, largely because it can help explain why coding can be seen as simultaneously easy and extremely difficult.

I remember reading an interview with Andre 3000 a while back about how he composed "Hey Ya!". It turned out (this is all from memory) that the reason he used the chord pattern he chose was because he was relatively new to the guitar and those were the chords he knew. So in short, Andre 3000 was able to take very limited knowledge of a new instrument and produce something very compelling and interesting. However, this was certainly after a lifetime of building an interest in and understanding of music.

Shortly after reading that interview, I was hanging out in a music store, and a guy was amazing everyone with his acoustic guitar ability. He did some very cool stuff with his fingers while hitting a harmonic and going back down the neck, at a rapid pace, without faltering even slightly. He was available for lessons and corporate events.

Truth is, it actually is possible to do something very interesting with programming with relatively little experience, though you do need to be a creative and technically minded person. At the same time, you know, nobody would have hired Andre 3000 as a session musician. Sometimes I think that those coding tests, where you have to find the least common ancestor of two nodes in a binary tree, handle tricky threading issues while avoiding deadlock or race conditions, or doing complex outer joins, are really done by companies looking for the equivalent of a session musician. They're not saying you aren't creative or incapable of writing novel and useful software if you don't pass. They just can't add you to a band, at least not yet.

Lastly, I am increasingly in agreement with the last paragraph, which is that our "profession" does need to take initiative in determining how basic competence is established.

"If the main point of a professional qualification is filter out people who can’t code, does it really matter if what is being tested for is out of date, or irrelevant to current industry practices? Maybe our tentative qualification would involve the completion of a reasonably serious program in LISP?"

This is insightful. I've been very ambivalent about it, because I am scared of what happens through regulatory capture. But at this point, I do sometimes wish there were an industry-wide, well recognized exam that covered the paces that you go through when you interview at google, amazon, and small companies that are copying them. I've read/heard people say that they'd happily take such an exam formally if it meant they wouldn't have to re-take this exam, in a more capricious way, every time they apply for a new job.


>This is insightful. I've been very ambivalent about it, because I am scared of what happens through regulatory capture. But at this point, I do sometimes wish there were an industry-wide, well recognized exam that covered the paces that you go through when you interview at google, amazon, and small companies that are copying them.

I'm just as worried about regulatory capture as you are, but it might be possible to create a de facto standard exam in this vein just by making a good one and then relying on its merit to make it well known. I mean, fizzbuzz has already reached this status as an easy flunk-out interview question and lots of people take it as a positive test of programming ability. (Which it obviously isn't.)

The basic problem with an 'open exam' in this vein is that it is very easy to copy the work of others. So whatever problems you pick need to be things that are objective enough to be verifiable that someone has solved them but general enough that it won't be something where we all need to worry about whether you pasted your solution in from someones blog.


This is a great comment that I'll be saving.


Learning anything will result in a similar process. "Talent" gives you reasons ("wow, i'm good at this") to persist in learning, without it you either persist, or not.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: