(This article also appears on Tucows Farm.)
I had the distinct honour of being invited to play an accordion opening number for Adam Keys’ most amusing presentation, AC/DC, Stravinsky and Rails. I played AC/DC’s You Shook Me All Night Long, and did a bonus round of Big Balls at the end of the presentation based on a request by someon ein the audience for more AC/DC on accordion. To Adam and the guy who asked for more accordion, I salute you with a filet mignon on a flaming sword!
Adam Keys at the start of his presentation.
Here’s a fact about AC/DC songs: if you know the title of the song, you also know its chorus. Consider the songs on Back in Black: You Shook Me All Night Long, Shoot to Thrill, Hells’ Bells and so on — they’re both the songs’ titles and refrains!
Something similar happens with Rails: if you know the URL of a page in a Rails application, you can easily infers it controller and possibly even an action within that controller.
Explore the Space
“AC/DC are masters of the tasteful use of space,” asserted Adam, who then demonstrated this by playing the opening sequence to Back in Black. It’s a pretty clean opening, with straight-out chords and only a little riffing. “Imagine this song dones by Van Halen,” said Adam, who then proceeded to pantomime Eddie Van Halen playing the opening chords by packing them full of the wheedly-wheedly-wheedly guitar noodling that is his stock in trade. By showing restraint, AC/DC made the song great.
The design of Rails encourages tasteful restraint, a necessary antidote to the programmer tendency to throw “everything including the kitchen sink” into an application. Adam summarized it by saying “Rails codifies resistance to this urge”.
One of the nice things about AC/DC is that in their 30 years, they’ve been consistent. “You know they’ll never slip a ballad on you.”
Rails enforces a similar consistency by making it easy to write to a specific set of conventions.
The space that AC/DC leave in their songs lets them rock out. It allows lead guitarist Angus Young the freedom to run about on stage while playing. The simple structures of their songs also make them easy to grasp — “Why dig when you can just know?”
Rails is also set up in a way so that it’s easy to “rock out”. The directory structure of a Rails app makes it easy to find things. Other frameworks force you to go spelunking. The “why dig when you can just know?” philosophy is just as apt with Rails.
The “Bus Factor” is the number of people in a project that have to be hit by a bus before the project becomes defunct. In the case of AC/DC, who suffered a tremendous blow with the death of frontman Bon Scott, the Bus Factor is greater than 1. They ended up taking on Brian Johnson as their lead singer and came back with their best-known and best-loved album, Back in Black.
Adam pointed out how Van Halen weren’t quite the same after the departure of David Lee Roth (they’re better referred to as “Van Hagar”) and the Rolling Stones would probably be doomed if either Mick or Keith left.
Although Ruby on Rails has a formidable “face” in the form of David Heinemeier Hansson, each member of the Rails Core group makes significant contributions. Their organization is quite flat — they’re more a “trusted group of people” rather than “a wizard and his monks”. Even if David were to be hit by a bus — or, more likely, killed in a supermodel “walk-off” competition a la Zoolander — there’s enough talent in the Core group that Rails could go on. Like AC/DC, Rails’ Bus Factor is greater than 1.
Flatten the Cost Curve
Let’s face it — an AC/DC song can be conceived, written, rehearsed and recorded in a single day. The same can be said for Rails apps — Rails makes it easy to put together a working application in a small fraction of the time it would take using other languages and frameworks.
Stravinsky’s Rite of Spring
At this point in the presentation, Adam introduced Igor Stravinsky’s controversial Rite of Spring. If AC/DC’s music could be used as a metaphor for Rails, Rite of Spring, with its complexity, could be a metaphor for frameworks like J2EE.
- Rite of Spring requires a conductor. The orchestra required to play the piece is comprised of 100 musicians.
- Rite of Spring has unchanging requirements and “big design up front”. It’s classical music. The ink is dry.
- Rite of Spring is complex. Adam showed the audience a single page of the score; it has been described as “piano music for a monster 29-handed alien”.
- Rite of Spring has hard-to-grasp rhythm. Whereas all AC/DC songs are in 4/4 time; Rite of Spring changes meter and uses odd time signatures, such as 11/4. Adam made the statements that software “should be closer to nursery rhymes” and “shouldn’t be more clever than our users can handle”.
- Rite of Spring is unapproachable except by experts. In order to even be considered to be a musician in an orchestra that will play the piece, you should have at least 11 years of musicianship under your belt; with an orchestra of 100, that’s 1100 combined years of experience. “Let’s not make software like that,” Adam said.
AC/DC came in two flavours: the Bon Scott version and the Brian Johnson version. Rite of Spring comes in at least a couple of flavours too: there’s the full orchestral version and a two-piano version. As for Rails, you can omit things from the core distribution, or augment it with plugins, gems and monkeypatches.
Adam says that AC/DC music has most certainly led to brouhahas, and as a DJ at an engineering students’ pub, I have to concur. Rite of Spring, with its strange meters, atonalities and dissonances and theme of human sacrifice, caused the audience at its 1913 premiere in Paris to riot.
Rails is no different. As “opinionated software” put together by an opinionated developer, and as a framework that’s making moves onto territory claimed by Java, it too has led to all sorts of arguing. Just Google the terms “Rails” and “Java” to see what I mean.
All these are examples of different things inspiring passion, which is just as important as tools and people.