Pure Danger Tech


Sight reading your architecture

25 Apr 2007

Here’s my software analogy of the day: sight reading music is like doing an architecture spike in software.

I play viola in a local community orchestra and we just started rehearsing this week for the next concert, which meant sight reading a bunch of music (Brahms 4th Symphony). When you sight read, your goal is first and foremost to make it to the end, hopefully together. :)

The focus is typically on places of transition where there is a change in key signature, time, or tempo. Often the conductor will stop or help you through these places to explain in detail how the different parts of the orchestra fit together and how his beat can guide you. Listening is always important when playing but even more so when sight reading. This kind of reading requires broad attention to what is happening around you and your place in the whole.

Equally important is that your goal during sight reading is not to play every note or dynamic correctly. Certainly, you should do your best, but it is more important to unfocus your attention and hear the whole rather than obsess about hitting every note correctly.

So, my analogy is that this kind of reading is similar to doing an architectural spike in software development. The goal is to rough out a spike through the entire architecture, enough that you have the skeleton of the app. The details are typically faked with hard-coded data or simply missing entirely. The important thing is to rough out subsystem boundaries, transition points between software layers, etc. It’s sometimes desirable to have enough of the architectural spike be real that you can actually do some preliminary performance and capacity planning assessment. The goal is not to finish any of the subsystems or layers of the architecture.

In fact, you’ll often find that some part of the architecture is not going to work. State is held in the wrong place, data transfer is too great, footprint on one machine or another will be too big. Similarly, in sight reading you might find that certain conducting styles, bowings, or other communication is not ideal (particularly at the transition points) and needs adjustment.

In later rehearsals, you typically carve out a movement at a time and go over it in detail, figuring out fingerings, bowings, page turns, and all the minutia that goes into playing music. Similarly, after your architectural spike, you’ll get into all the details of how each part of your system actually works.