The Coding Musician
Anecdotal evidence suggests that musicians make great coders. Whether this is true or not is debatable but there seems to be a strong correlation between the skills required to be a musician and those of a coder. Many musicians who have gone on to pursue careers in the world of coding have found many similarities to their journey of learning music.
Another Language
People often view music as a form of language. Notation, tempo, key and rhythm allow the musician to read, write and convey their stories and emotions. Learning to read music and understanding music theory can feel a bit like learning a new language. You start out with the basics and through time and repetition slowly become more fluent. Similarly coding also has many languages. Ruby, Javascript, C, Python, etc. Once again you start out with the basics. Not being very fluent at first, but over time evolving on a never ending path to competence and mastery.
Practice, Practice, Practice
An aspect that a musician knows all too well is the concept of practice. Much like learning an instrument, learned to code takes countless hours if not years of consistent practice. Chipping away day after day, constantly learning new tricks and methods. The ability to put your head down and practice endlessly throughout the day comes second nature to those who know what it’s like to practice guitar until their fingers bled. The repetition of doing the same thing over and over also similarly mimics the method of practicing a musical instrument.
Repetitive Patterns
In coding, the same methods and syntax are used over and over again. Much like the versatility of bar chords or scale shapes on the guitar, methods in code are reused (with slight variation) to fit the task at hand. On the guitar, the same chord shapes and scale shapes are played on different frets of the guitar to accommodate the key of the song being played.
For example, when associating classes in Ruby the same method “structure” is used with variation to accomplish different tasks. An artist can find all the songs in an array of songs that belong to that particular artist. That same method can be used by a doctor to search through an array of patients to find those who are assigned to that particular doctor.
Analytics Combined With Creativity
While there is an analytical aspect to music there is also the ability for one to freely express themself and display their creativity. While coding most certainly requires the careful analysis of the code being written and how it interacts with other code, it also allows for creative expression. A straight forward task can be accomplished through different methods or a method written with a different syntax.
With another Ruby example, the “max” and “max_by” Enumerables can allow for two different ways to write a method that accomplishes the same task. Let’s say that an artist wants to find the best selling album among an array of albums. This data can be retrieved by using either of these Emunerables allowing for the coder to use their preferred “style.”
The art of web development as a whole brings the creativity to a whole new level. Every musician, especially those who write their own music, knows the sense of pride, accomplishment and satisfaction that comes with creating something that is truly theirs and an expression of themself. That same satisfaction can come from creating projects, apps and websites. Coming up with an idea from scratch and building it piece by piece until you can finally show to the world your pride and joy.
Complexity Downsized
A major part of coding is breaking down complex tasks into smaller more simple ones and building it up from there. The most elaborate websites and apps are built from combining many small and “simple” methods into an entire project. A website containing millions of lines of codes is built with methods that can be as little as one line of code.
Turning small parts into a large production is something that a musician can relate to. A song can start with a simple drum beat, a basic chord progression, maybe a short melody. Layer after layer gets added until the final result is complete. A professional major label song with 100+ tracks gets built much the same way a website would.
Learning Is A Lifelong Journey
Part of being a musician is the fact that no matter how many years you have been playing or how much you practice you can alway get better. It’s that never ending journey where we continue to hone our craft throughout our lifetime. There’s always something new we can learn. Something we can do better. Someone that we can learn from. The great world of coding is much the same. Never do you get to a point where “now I know how to code and I know all there is to know.” It’s a career where you never stop learning. Technology will always evolve. The most advanced software engineers are continuing to learn new things and getting better. I believe this is another reason that musicians feel at home with coding. It’s that continual grind of striving to improve. That curiosity of figuring out what you don’t know. That love of learning something new. That satisfaction that comes with looking back at your improvement over time. Seeing how far you’ve come, how much you’ve grown.
Problem Solving And Collaboration
That chord progression really doesn’t seem to work well for the bridge of the song. The midrange of the vocals is clashing with the horn section in the mix. The drummer wants his 10 minute solo but the rest of the band doesn’t think it’s appropriate for that part of the set. Writing and producing music comes with countless struggles and challenges to overcome. Being a musician appoints you the position of being a problem solver. Not only on an individual level but also in collaboration with others. A band is a group of creative individuals working together to accomplish a common goal. Much the same is a group of software engineers working on a project. Coding on a team or at a company is not a one man operation. Being able to work with others is a detrimental aspect. Not just working with others but working in a creative and abstract capacity. Respecting other’s creative process while contributing your own is what allows for a functioning band or successful team of engineers alike.
When Worlds Collide
As technology evolves so does the tools and methods for creating music. The genre of EDM (electronic dance music) brings the use of computer technology forefront to the world of music. Once again we see a parallel between the creation of music and the methods of coding. Repetitive patterns being combined in conjunction with one another manifesting into a single functioning project. Digital audio workstations like Ableton Live allow for the use of “looping.” A pattern is programed or recorded onto the workstation and continually looped over and over again until the loop is instructed to end. Similar to how a “for loop” would function in Javascript. The “for loop” iterates through an array until it reaches the end of the array or until a conditional statement is met.
These are just a few of the countless similarities between music and coding that should hopefully shed some light on why we see many musicians gravitate towards and thriving in the field of coding. Much of their experience simulates and potentially prepares them for the nature of a career in software engineering. On top of that, many aspects of coding in a sense feel sort of like a continuation of what they’ve already been doing for many years. And let’s not forget the sense of satisfaction that comes from being able to say that you’ve created something.