RailsConf panel: AC/DC, Stravinsky and Rails

Well, this is pretty cool. The first thing I got to see at my first panel was the famous “Accordion Guy”:http://accordionguy.blogware.com/blog
!http://static.flickr.com/60/173287100_f1ae408843_m.jpg!:http://flickr.com/photos/kastner/173287100/

That’s an awesome start to this panel, Let’s see where it goes from here.
(I posted this early, there will be updates)

Then Joey performed “All night long”!http://flickr.com/photos/kastner/173292403/

!http://static.flickr.com/60/173292403_ecdec3a0af_m.jpg!

“How software can better be constructed”

h3. AC/DC “Black in Black”. One of their best albums, good throughout.

1. Discover yourself
Adam’s law of AC/DC: You know the title, you know the chorus.
Adam’s law of Rails: If you know the url, you know the controller – and possibly the model. Convention over configuration.

Let’s listen to “Back in Black” (the song) – what isn’t there? Notes. Lot’s of space in-between notes. Most programmers fill all space with code. Rails is the opposite of that.
One example is not writing code just because you think someone WILL want it down the line.

2. Consistent
AC/DC is consistent, it’s hard rock, and it’s about sex, drugs or rock-and-roll.
Rails is consistent with MVC, always. You need data – Model. You need front-end stuff – Views.
Rails pushes you to be consistent

3. Intuitive (GREAT slide of a t-shirt about the how to do devil-horns)
AC/DC is there to ROCK OUT.
Rails helps you ROCK OUT, in a web-way. By using conventions, you know what to do and where to do it.
“Why dig, when you can just Know?” — Bruce Williams

4. Bus Factor – How many people need to get hit by a bus before your app dies.
AC/DC has a bus factor > 1. Their lead singer died, and they continued to rock. (another great slide – from zoolander)
If DHH died, would Rails? No.

Have your own core, like Rails. Everyone should know the code and be able to have access to it. Write comments, write a journal, write a blog. Explain your decisions.

5. Easy
AC/DC’s music is VERY easy, and that’s why some people don’t like it. He then showed a tablature for Back-in-black, it’s very simple.
Rails – your apps should be just like it. Very simple, very clear and using conventions (i.e. Patterns will save your soul)

Is there something like tablature that you can use for your code to have a high-level overview of your choices

6. Flatten the cost curve
AC/DC – you could write, record and release your very own AC/DC song in about a day.
Rails can reduce the cost function of software. If you stay “in the lines” it goes even lower. Automated tests, automate deploy, etc. It discourages you from doing bad stuff like tons of code in yoru view.

Keep your app aesthetically pleasing.

h3. The Rite of Spring

1. You and one hundred of your closest friends
Stravinsky – it takes a LOT of people to play The Rite of Spring. Much like J2EE
With Strav, requirements never change.

2. You ain’t seen complexity
Some software has to be complex – Banks, Laws, etc etc. But too often, developers impose it on themselves unnecessarily.
Now a slide from the Rite of Spring. It’s VERY complex

3. Non-conformist expression
The 11 / 4 bar. Most music is 4 / 4 time, one bar of The Rite of Spring has 11 notes. That is nuts. Why didn’t he make it simple and idiomatic? B/C it’s art. In your own time, on your own projects, go for it. Do whatever you want. But when you’re doing something enterprise or even maintainable – it sould be more like a nursery rhyme then The Rite of Spring. Also, don’t be more clever then your peers.

We just heard a small section of the piece. It is very hetic and difficult.

4. How do you get to Carnegie Hall?
The training for being able to play the Rite of Spring is huge. Somewhere around 8 years of a single instrument. To conduct is even more.
Somewhere around 1100 years of training for one orchestra to be able to play the piece all the way through.

h3. Rails

1. Different Flavors
AC/DC is two ways – two different singers
Rite of Spring has two different formats, the orchestral version and a two piano version.
Rails has the ability to drop parts like ActiveRecord, or add parts like plugins.

Don’t think of your rails app as just a DB on the web. Mashups, widgets, embed in an executable.

2. Fight!
All three have the propensity to cause riots. The Rite of Spring caused an actual riot when it premiered. AC/DC has caused more then a few fights. As has Rails. Passion is the common thread.

In your apps, passion is important, and moves you above and beyond the pack.

3. Aesthetic
All three are an expression of a particular aesthetic.
Aesthetic in software is under-rated. Marketing shouldn’t be the driving force behind software choices.
And taking a journey through choosing what you find beautiful in code. After you pick it, you need to…

4. Evolve
The first versions of Back-in-black, the Rite of Spring and Basecamp (rails) are different then the versions we have today.
Change IS going to happen, optimize to have it.

5. Create!
Rails lets us create. Be intuitive, be creative. Software is a craft.

This was an awesome panel. Very funny. Very enlightening.