Playing in the Key of Code
Living in New Orleans should be the envy of all, because the quality of its music is rivaled perhaps only by the quality of its food.
This city thrives on a vibrant musical presence that continues to have a global impact on the craft. Ask any New Orleanian; if there ain’t no music, there ain’t no soul.
For the past 15 years, I have had the pleasure of learning and playing music alongside everything else I have gotten to do. I am by no means a world-class musician, but I absolutely love the feeling of getting in that groove sweet spot with a group and making great music.
Lately I’ve realized that my passion for music and my efforts to become a better developer may have much more in common than I thought.
To those looking in from outside, coding might seem to be a cold, rigid process of obtaining and displaying information, while music is a creative realm for the right-brainers of the world. Obviously, stereotypes paint with far too big a brush, and the more time I’ve spent with other developers, the less true I know those stereotypes to be.
So where do coding and playing music intersect? Honestly, this could be the first part in a long series if I wanted to try to get exhaustive on the topic. I’m going to explore three points of connection that are most interesting to me:
One of the things that makes music great is its stability. Having a set scale (A-G) and clear rhythm notation allows any musician to pick up an instrument and start playing a song. I can be pretty confident that playing a G chord with quarter notes on guitar will sound the same 100 years from now, even if it will probably be played on cyber laser guitars.
Having this kind of consistency provides a wonderful structure to work within. It creates a safe space for experimentation, and there’s no rule book for the “right way” to play with notes and rhythms.
Coding clearly needs structure as well. No matter what language you write in, you’ll usually find a constructed system that gives some guidance for proper use and then leaves the door open for solving problems in creative ways. You can dive as deep as you want to go if your project or curiosity calls for it, but things will still work if you keep it simple.
Room for Collaboration
One of the great things about playing music is the ability to learn and play as an individual musician and then take those skills into a band. Different perspectives and backgrounds can collide and intermingle, sometimes in epic fashion.
Jamming together is at its best when people can ask things like, “What if we tried this in a different way?” Collaboration allows musicians to challenge their own conventions and find new inspiration in other people’s efforts.
Some of my brightest moments of clarity or understanding in coding have come when I’ve been working with others. Often, I’m blind to my own mistakes, and having like-minded folks who are willing to talk through a problem makes life better.
I’ve also been inspired to try new things and think differently about development as I have seen other people’s projects or read their code. As long as I’m able to keep my insecurities in check and not feel intimidated by others’ prowess, I can learn and improve and bring my own skills to bear. If comparison is the thief of joy, collaboration could be a remedy.
It’s true for coding and music: there are no shortcuts.
Practice and learning through experience are paramount to understanding. I loathed practicing when I was growing up. Getting through my drum rudiments sheet or revisiting my part for a song was difficult because I was so focused on not messing up. That kind of fear would paralyze me.
It took me a while to see that I had to build up my chops to sound as good as I wanted to sound. That was going to require a lot of failing, learning, and asking questions of people better than me.
Looking back, I’ve noticed an interesting cycle that began to form. I found that when the practice paid off with a great performance, I would want to learn even more.
Those old fears still visit me as I try to grow as a developer. I’m tempted to not try something new or unfamiliar in my code for fear of messing up or making something lame. I’m doing my best to hold my performance loosely, giving myself enough grace to make some mistakes so that I can learn from them.
Coding has as much to do with developing chops as my playing drums does: Practice, practice, practice. That cycle of practice and small victories is pretty true for development too. It makes me want to learn more about a particular language and find new applications for the things I know.
Just as in music, I know I’m never going to “arrive” as a developer. There’s always going to be something to learn, something new to try.
So, wherever you are in your development career, stay hungry. Don’t give up. Find your part in the song, and don’t stop playing.
What do you think? Are there other overlaps you’ve seen between the music and coding worlds? Let me know your thoughts here or on Twitter: Ross Young