I believe that both programming and music are at their best when they are shared experiences.
We all have the image of the coder living in a basement, staring into their screen. The stereotype never has
any live human contact; they are a lone genius in monastic isolation. The programmer is driven by abstract
structures and the image of a perfectly engineered product. They probably smell a little.
We also all think of the musician locked in a practice room. For 12 hours per day - maybe more - they drill
every detail of a performance to reach perfection. The abstract structures of the musician's thoughts are not
so different.
But where the similarities really shine is when a musician steps onstage. A live performance is a
shared experience with hundreds of people. The performers and the audience feed off of each other, making
the piece into something much more powerful than notes on the page, greater than it ever was in the isolated
practice room. When we talk about music that changed the world, it's not the notes on the page. It's the shared experience
of a performance that made it happen, from the premiere of Tristan und Isolde, to Woodstock.
Code is also a shared experience. The lone basement-work that creates the Firefox web browser is all preparation
for hundreds of millions of people to use it at once. We write code for the shared experience of using it. In this
way the relationship between performer and audience is a lot like the relationship between programmer and user.
Just like with music, when we talk about code that has changed the world, it's the group experience that made it happen.
It's not the code in the repo that changes lives, it's the users, from Twitter to Google.
In both code and music, the ultimate experience is shared creation. As moving as a concert can be, nothing beats
the moment when the whole audience sparks their lighters and sings along. It's why generations of families have gathered
to sing songs together, it's the reason for every jam band ever formed. It's also the case with code. The real power
of Open Source is that shared creation experience, when we build something amazing together with a group.
In both fields, it doesn't actually matter if you have professional experience or not. I don't want my sing-along
audience to have degrees in music, and I don't want my beta testers or documentation writers to be professional
coders either. In fact, it's the lack of professionalism that makes some kinds of participation tick.
Simply put, both music and code only grow when they are shared. Musical experiences are only made more powerful
in a group, and code is the same.
This is the unifying thought that drives my work in code and music. I try to bring the same message to both fields: