Why do musicians make good programmers?
On abstract thinking as a complement to software engineering
I would say that, without hesitation, practicing music develops one’s ability to hold mental models of intangible phenomena. Aside from symbolic representations of the music such as notes on paper, there is no tangible music beyond that which can be perceived by the ears. To work on specific aspects of a composition requires the composer to hold the remainder of the musical structure in their mind. Similarly, until there is a working model, there is no ‘software’ aside from the vision and intention of the designer. The final result must be held in mind by the architect of the project, while being able to work on smaller, discrete portions of the project.
“You must be a musician…”
This wasn’t the first time I had heard this. Heading to San Francisco on the Ferry Boat from Sausalito. I had just lead a group of fellow software engineers from Hack Reactor on a bicycle ride over the Golden Gate bridge.
We were discussing our experiences with forming and working with groups on our current projects. As is likely in the Bay Area these days, the man sitting next to us introduced himself as an engineer and asked what company we were at. We spoke for a moment about which engineering bootcamp we were attending, and he asked whether we were “…musicians, or just really mathy?”
He said he had been in the industry for about 15 years, and had put together many engineering teams, and the majority of his engineers were also musicians. I also received a similar comment during one of my technical interviews as I was preparing to attend Hack Reactor.
It would be an over-simplification to say that my musician background makes coding ‘easy,’ but I can say that, upon reflection, I do seem to have a relatively easy time visualizing the overarching patterns of software design and development. I can see the shapes made by data flowing through a system.
This skill has been notably beneficial when undertaking aspects of software engineering such as algorithm design, logic development, and being able to see the “forest”of an engineering challenge prior to focusing on the “trees”.
Referring back to the man with whom we were speaking on the boat, his understanding of the parallels between software and music had to do with the structure of music and code. Ultimately, a software package can be compared to a musical composition. The complexity of the overall structure consists of a large number of relatively simple aspects, interwoven in deliberate patterns to create a complex result.
I believe this model can be extended to the skills of math, as well. Aside from an agreed-upon symbology, there is no math to hold or experience. A practitioner of this skill would also have mental training, similar to music, that would be an advantage when approaching the skills of programming and software engineering.
I’d love to hear comments as to whether or not readers have found other examples of cross-disciplinary skills that are complementary. Thank you for reading!
If you would like to read more on this topic, I just discovered (via the referral links on my stats page for this article) that this article was quoted in the following Huffington Post story: http://www.huffingtonpost.com/entry/composing-code-why-musici_b_10714288.html
Originally published at www.lexjacobs.com on April 12, 2014.