March 27, 2003
Sometimes blog entries, like code, just need to be scrapped and re-done. Like this one.

PragDave writes:
At the same time, Andy and I had been discussing a set of music tapes he had. Originally designed to help musicians practice scales and arpeggios, these had been so popular that they now encompassed a whole spectrum of practice techniques. We were bemoaning the fact that it seemed unlikely that we'd be able to get developers to do the same: to buy some aid to help them practice programming. We just felt that practicing was not something that programmers did.

I replied in this entry a couple of days ago.

My first point was simply that the analogy between performing music and writing code was not as good as the analogy between writing music and writing code. In addition, there is no parallel between performing music and performing code, because the computer always performs the code**. So making the jump between music performance practice tools and code writing practice tools seemed too much.

My second point was that all of the music tools Andy referenced helped performers practice, not writers, and I made a weird jump that it's therefore probably hard to make such tools. Andy quoted me on this point and replied. (The quote is good, even though it ain't here no more.)

With his quote, Andy came up with a quick list of both music and code writing exercises that I thought were pretty good.

There still seems to me to be a distinct difference in the performance tools and the writing tools. Pianist needing finger strength? Try Hanon. Jazzer needing a rhythm section in his living room? Try JameyAbersold. These performance tools seem concrete and more necessary to a practicing performer than whatever writing tools would be to a practicing writer. But this is where I start getting brain fuzz on my own points, and I'm not sure if I agree with myself.

So in trying to work out brain fuzz, I did come up with the following:

I don't practice writing music. To me, there's enough room for experimenting in the process of writing any piece that there's no need (or maybe it's that every time I start writing, I'm practicing, and only those sessions that produce something permanent become ‘not practicing’). And maybe coding is the same way.

So in a previous version of this entry, I said I think practicing coding/writing is a good thing. But I also seem to think that practice naturally happens as a part of producing final products. If so, then I probably wouldn't pursue Code Practice Tools, which adds confirmation to Dave and Andy's bemoanings that coders don't practice. (TopCoder, however, puts an interesting spin on things. Maybe coders need more incentive to practice).

Performing music is different, though. It requires practice, because it has rigid boundaries. Specific tempo, specific feel, specific notes and/or progression with a specific form. If a metronome or a recorded rhythm section can help me get this right, I'll take it (probably :)

** although, this does make me think about the session PragDave and Glenn (I think it was them) gave once on reading code, and also code reviews -- these might be some form of ‘performing the code’

tags: ComputersAndTechnology