Software and music are two things to which I have dedicated a large portion of my life. Music was spoon-fed to me. Software came along later, basically when I needed to make a decision about what I was going to do professionally.
At first sight, software and music are very unrelated things. Software is easily associated with geeks that give logical instructions to machines through cryptic lines of code. It may seem as something cold and scientific. Music, on the other hand, is an expression of emotions that speak directly to the heart and soul of people. It is something warm and artistic.
Despite this obvious difference, there are more similarities than one might expect. Understanding these can actually help to develop better software.
It's all about the experience
Music is all about the experience. Great music takes people on a journey and moves them. Musicians communicate a story to their audience. It evokes reflections of the past and dreams about the future. Emotion puts their mind and body in motion. It’s something intangible, but it has the power to make people laugh, cry, dance, relax and so much more…
Software is typically considered as something functional. Good software supports the needs of people and the business. It helps to get things done in an effective and efficient way. Nothing less, nothing more. Great software has the potential to transform the behavior of people. It’s no longer about the quantity of the features (the notes), but about the impact they make. To the customer, the experience is the service.
The journey of a listener
The journey of a customer
Designing software is an act of composition
In order to deliver software with an exceptional experience, it’s no longer sufficient to take the sum of all features. It needs to tell an interesting story. It needs to connect with people at an emotional level. How do musicians succeed at doing this? The secret starts during composition.
As you probably know, composition is the process of creating a new piece of music. Like all works of art, it’s a creative, non-linear process. Even a genius like Mozart did not make his masterpieces by simply writing note by note. Writing music involves a lot of experimentation and prototyping. It requires playing and listening. It’s sketching with notes, trying out what works and what doesn’t. Along the way, some fundamental rules of the game have emerged. Some things naturally sound better than others.
This whole process is quite similar to design. It requires a creative mindset and process. The discovery of value and what to build is a non-linear path that iterates through activities for understanding the problem, identifying potential solutions and validating them. What complicates things is that technology, the instrument on which software is played, is changing continuously and evolving rapidly.
Writing software is an act of performance
Performing music is different than composing. It’s a matter of execution and playing the notes right. Everybody knows talent isn’t enough. It takes years of exercise to master an instrument completely. Practice makes perfect. You also need to be able to perform as a team, listen to each other and be in tune.
Although playing music is about creating something, the amount of creativity required for performing music is less than for composing. Plenty of people, even professionals, play music and do it very well without creating something entirely new. They read the score, interpret the composition and produce what others have imagined and written down before. They may even do it with a quality and precision that exceeds that of the composer.
Developing software is comparable to performing music. It requires technical know-how and mastery of tools to produce the intended design effectively and efficiently. Unless you are able to get all the details right at once, you will benefit from approaching development in an iterative way. Coding is rehearsing. Great programmers don’t just write code. Like good musicians, they interpret the design and augment it.
Some people master both composition and performance. Singer/songwriters and jazz musicians are good examples from the world of music. Designers that know how to code and programmers with design skills are a similar kind of breed. It’s not a necessity for an individual to have all of these skills, but both sides are needed to deliver the end result. The exact mix determines the style. Traditional development processes can be compared to classical music. The complete analysis and design of the software is done before development starts. Lean and agile methodologies are more comparable to jazz. Designers no longer provide a detailed up-front description of the software to build. Instead, they establish a vision and a structure that leaves room for developers to improvise.
In order to deliver better digital products and services, those involved in the creation of software need to understand and appreciate the difference between composition and performance. The focus, skills and approach of these activities are different. Not everyone can be good at both, which is why we need to complement each other through cross-functional collaboration.
The style of your process, traditional or agile, influences the balance between composition and performance. Traditional processes have a clear separation between these activities. Agile processes leave more room for improvisation during performance.
In the end, both software and music are about people. Musicians as well as software creators aim to provide their audience a great experience. The experience takes place when listening to or using the end product. As software developers we need to focus more on the end experience it evokes with people.
Thanks for reading. I’m not sure how this article would sound, but here’s an idea: