It’s the Discipline.
When I started learning about software development and studying languages, I kept running into people who would tell me, “Yeah, musicians actually make good software developers.” At first, I thought it was just some attempt at encouraging me, and not based in reality, but I kept hearing this response and claim over and over again.
I started to wonder if there might be something to it, so I searched the web for articles about this topic, and did find more people claiming that musicians make for excellent programmers. Take this article published in the Huffington Post, for instance. Or this article from Medium.com.
I particularly enjoyed reading this quote from the Huffington Post article, having grown up near Cleveland and being a huge fan of the Cleveland Orchestra.
“Tech Elevator student Drew Sullivan—who has performed with the world-class Cleveland Orchestra and was only the second doctoral-level clarinetist student ever at the renowned Cleveland Institute of Music—agrees that analytical-minded musicians are well-suited to coding. “Musicians enjoy the ‘why’ and ‘how’ of music,” he says. “Musicians can learn, as I am, to ask the computer the same types of analytical questions we’ve been asking ourselves of the music for years.”
I have always had a love for complex and formally structured music, such as the music of Bach, Mozart and Brahms. There is something about the logical structures and mathematical features inherent in some of the works by these composers that I have always found compelling, not only on an intellectual level, but an emotional one as well. I think this combination of engaging the creative part of the brain, as well as the analytical side of the brain simultaneously also has something to do with why musicians might make good programmers. I believe that the utility of the stimulation and use of the brain in this way by musicians translates to the process of analyzing problems and creating solutions in coding.
The process of learning an instrument and developing the skill of performing on it to a high degree also translates well to the process of learning how to code. Namely, it involves breaking down a large problem (how to get your body and mind to work together to execute a complex phrase or piece of music) into small achievable steps to reach the goal. The solution, or steps to take to achieve this goal often require logical thinking, ingenuity and creativity. This is analogous to having a goal in a program or website build in mind, breaking down the logical steps necessary and assembling creative solutions to make that goal a reality. The process of learning an instrument also requires an immense amount of practice and persistence to develop and improve. I’ve realized that what has helped me so much in learning software development are the good habits of self-discipline, persistence, creative step based problem solving, attention to detail and focused concentration over a long period of time that I developed learning how to play an instrument (drums and percussion, by the way).
In other words, learning to play an instrument well is extremely difficult and requires constant focused attention, effort and years of study (contrary to popular belief, that most musicians are just “talented” and don’t have to work very hard at it).
In my formative years, I would practice for 8+ hours a day, intensely focused every single day on getting better at my craft and thinking about it day and night. I find myself revisiting that mindset and routine now and understand the process and work that is required to achieve a high level of competence in a given skill. Sitting in front of a computer trying to solve a problem and debug a program for hours on end is really not that different in my mind than sitting in a room working on a musical phrase or piece for hours to get it just right.
Like a software system, a piece of music has an architecture. A Beethoven symphony, for example, is made up of small cells of material which are composed together to create the whole piece. The art is in how these small cells are combined, varied and organized to give the piece a sense of unity, structure and logic that makes it interesting and coherent. Having a sense for this also helps in thinking about how to approach designing Software Architecture, since it is considered good design to build a complex system by the composing of small components (just as Beethoven created a complex structure in his symphonies from the combinations of musical cells). In my opinion, there are a lot of things about composing a piece of music that are similar to creating a piece of software. Of course, one must study software architectural and design patterns formally, but I think it helps to have an analogous mental model in the art form of music to draw on. Some have said that building software is as much an art as a science, and connecting ideas across disciplines is usually a beneficial exercise.
Another skill that is very useful to have in all fields is the ability to work in a team and with others to complete a common goal. Playing in many different bands and working with all sorts of people and personalities has taught me how to get along with others and make whatever situation you all are in as good as it can possibly be. Maybe the sound isn’t quite right, or one of the other members in the band is not quite as strong a player. You smile, support each other and do what it takes to get the job done and be professional. This professional attitude is called for (and tested) all the time in the music business if you want to be successful. This transfers very well to being able to work on a team with other developers towards the common goal of completing a project and ensuring that interaction is harmonious and drama-free.
I had no idea that my background as a musician would translate so well to programming. I thought, ‘how could playing drums possibly help with creating websites and web applications?’ and ‘why are all these people telling me that musicians make good software developers?’ Upon further reflection and thought on the matter, I understand now why that seems to be the case. What I’m really interested now is exploring how deep and manifold the connections between software engineering and music actually are.
If you’re interested in my musical background, you can check out my artist website at https://sites.google.com/site/brentmarquez/.