I am classically trained in tabla, a drum that originally comes from India and I’ve been a software developer for the past decade. In my experience, the theme of “collaboration” often arises in both music and software development. Steve Jobs describes the creative process as “just connecting things”. Similarly, collaboration can be described as connecting things that come from different origins or the act of creation.
These days musicians of different genres of music are creating more unique collaborations than ever before (i.e. Jazz meets Indian classical). To do this, musicians need to figure out how to communicate in order to create music together. Often this is unchartered territory that is organized by relying on the foundation of their daily practice.
Similarly developers need to collaborate on several different levels. They need to work with other individuals of different backgrounds (education, working style etc.) and make systems communicate (i.e. the inclusion and customization of open source code within your application). They too, might be travelling unchartered territory so will need to rely on basic principles learned during previous working experiences to make progress.
Below, I describe 3 basic principles that I believe will increase the chances of collaborating with others in music and software development.
Creativity still requires a systematic approach. Professional musicians make sure that they practice daily, stay on top of the music scene by regularly putting out recordings and perform often. Similarly developers need to make sure the stay on top by showing up to work (even if you work from home – ha ha) but also by being diligent about steadily working towards solving a problem by working smarter and not harder. I had a manager once who said that he always made sure he learnt at least one new thing each day. By doing this you’re ensuring that you are steadily working towards solving your problem and not being lazy.
Nowadays material is rarely purely original, so choose ideas that make sense and re-use them! For musicians, you cannot “steal” a main melody line unless you sample it and pay royalties. You can definitely try to mimic the feeling or concepts behind a piece though. This might be an instrumentation configuration, a stylistic approach or even the bass line or beat. In software you cannot steal software implementations, but you can “steal” approaches to software design such as the Agile approach philosophy, architectures or design patterns.
In both music and software development there are known etiquettes that when followed will make you easier to work with. An example of following etiquette in the musical sense is by listening to musicians that you are playing with and responding. Conversely, an example of not following etiquette is when a musician does not listen to anything else but themselves. A guitarist can play the meanest lick but if it’s not placed in the right part of the song it might sound irrelevant. Similarly developers can step on each other’s toes when checking in their code and not paying attention to merging conflicts. The developer might have written a great piece of code, however if it is not checked in properly it will not be effective or may clobber someone else’s work.
In both software development and music the end product is tangible, however, it’s only you as the artist or developer that intimately knows the details of the process you used to get there. In my experience in order for the collaborative process to happen, you need to: show up, steal (like an artist) and use etiquette.