I’ve been playing through a bunch of Billy Joel songs this month in Rock Band, and I’ve thoroughly enjoyed the experience. Mostly repeated chords and chord progressions, but they’re interesting enough chord progressions for me to have fun playing them, and there’s a fair amount of melody interspersed throughout the songs as well.

One song that stood out, however, was She’s Always A Woman. It’s full of chords and chord progressions, to be sure; but the chords are all arpeggiated, and the chord changes are relatively frequent. That (combined with the fact that the game only has you playing with your right hand, so you don’t have the grounding of the bass part) means that, while the chordal structure of the piece is on display, it’s hidden a little bit more than in the other pieces: you can feel it in your hands, but there’s an extra layer of artistry masking it.

 

I’d been looking for a finger picking piece to learn on the guitar, and I found a good candidate last week: a really lovely arrangement of 風の丘 (Kaze no Oka, which means something like Windy Hill) from Kiki’s Delivery Service. It’s everything that I was looking for: not just lovely to listen to, it also has distinct melody and bass lines, with arpeggiation relating the two.

These two pieces are both somewhat similar, with arpeggiation hiding underlying chordal structure. In 風の丘, you have the added benefit of the bass line grounding you, but the flip side is that the arpeggios aren’t as worked out and there are more purely melodic bits, so on the whole the structure is a bit more hidden.

Or maybe it’s just as obvious but I’m simply a much worse guitar player than piano player (that last part is unquestionably true), so my hands aren’t nearly as good at seeing the structure that’s there? Certainly it’s the case that trying to memorize 風の丘 is like pulling teeth: I’ll play a couple of measures, and by the time I’m done with the second measure I’ll have completely forgotten the notes that began the first one. Or at least that’s the case if I’m approaching the song as a collection of notes: if I can find a chord that’s a decent match for a half-measure, then I have a chance at being able to remember that half-measure the next time I play it.

Only a chance, though: I’m very bad at translating melodic relations between notes into places to put my finger on a guitar, frequently not even choosing the correct string. Also, for me, every guitar chord is an island, I just don’t have common chord progressions ingrained into my hands yet. I’m amazed at how much more easily I can pick out melodies on a violin than on a guitar: the technical challenge should be very similar indeed, and I’m certainly not a good violinist, but apparently those middle school orchestra years stuck with me more than I realized?

 

Anyways: programming. One of my favorite parts of programming is refactoring; which is a good thing, because I seem to unable to not spend a lot of time reworking legacy code! When it’s going well, refactoring can be magical, with latent the latent structure of the code being teased into visibility by your fingers.

And when I was playing She’s Always A Woman, my main thought was: why isn’t programming like this for me more often? That reaction is certainly a sign that I should step up my game more, really dive whole-heartedly into code and see what I can learn from reworking it.

I’m not sure that this is analogy between musical structure and programming structure is a particularly good one, but if we run with it, where does it lead us? One of the interesting things about She’s Always A Woman is that the structure isn’t completely obvious: there’s an extra level of arpeggiation on top of the chords. Should I try to imitate that while programming, getting close enough to the core structures so that they provide a solid foundation for my code, while masking them with an extra layer of artistry?

Or maybe I’m wrong in fixating on chords: maybe the arpeggiation itself should be thought of as an extra layer of structure, increasing the structural richness of the piece rather than hiding it? I’m fairly sure that my difficulties with 風の丘 support this interpretation, because while figuring out the best chord to match each half-measure has been a huge help, it’s clearly only a first step. In particular, the fact that I’m not comfortable with melody on the guitar, that I can’t play through scale after scale, is a significant hindrance.

Also, returning to chords: it’s not just chords that are important, it’s chord progressions, relationships between chords. Abstracting a bit, what this is pointing out is that patterns alone aren’t sufficient, you really want a pattern language to relate them.

(And: dissonance! Glorious, wonderful dissonance!)

 

Having written this, I still don’t know how much to make of this analogy, though the response I got from the eight-tweet version of this blog post suggests that I’m not the only person who is drawn to both sides of this discussion. Be that as it may, the next steps are clear: dive into the details, on both the musical side (memorizing 風の丘!) and the programming side, and I’ll be a better person when I come out the other end.

And I should listen to my hands.

Post Revisions:

This post has not been revised since publication.