I was lucky enough to be born into a musical upbringing. My dad had played the guitar for 30+ years when I was born, and continued to play with his friends well into my adolescence. He would noodle endlessly, on the same Fender Jazzmaster and Roland amp for years. Although this tapered off, it left me with a hunger for more. What was this musical magic, and how could I wield it?
That’s the thing about the hacker mentality -- it can apply to anything, including music. I approached music the same way I approached tech early on: scattershot, with a short attention span and a hunger to get hands-on experience. So I picked up a guitar and started picking away.
My dad taught me the basic scales, a few chords, but I was more interested in playing by ear. It’s still how I play today. Even though I learned music theory in high school, getting a more rigorous education on what makes certain notes feel a certain way, and how to evoke those sounds in a mathematical context, but it just never stuck the way that touching an instrument and plucking out the notes myself did. I play by ear, and it works.
What’s been the effect of this musical context in my life? The first is that I listen to a wide variety of music: hip-hop, jazz, metal, punk, industrial, various electronic subgenres...pretty much anything except pop, and its similar-sounding subgenres. That’s not to say I block out pop when I hear that it’s pop -- I just don’t see the appeal in the same 3 chords in different arrangements (unless it’s punk, but those are different chords). I can like a pop song, even. It’s just rare that those same 3 chords are going to evoke anything meaningful for me.
This has led to the first positive effect of music on my tech career: I keep an open mind when I’m hearing new approaches to problems, or new programming paradigms. It still takes time to wrap my head around new concepts, but I rarely dismiss a concept out of hand. Music was the first hacking I really did. Rather than follow the “instruction manual” of a formal education, I opted instead to pluck out the notes and hear the differences myself, discover the emotions invoked for myself.
This has had an immeasurable influence on my coding, one I’m only beginning to realize as I write this. For example, rather than refer to a programming manual and find the API call I want to use, and check the options for, say, a “gzip” option, I might just add the damn thing and see if it works. There’s rarely any harm in doing so, and when it works, boy does it save time. Not only that, it keeps me in the zone. It keeps me from focusing on the wrong things, like API details that don’t matter in the moment.
Another aspect of musical ability relates directly to programming: the degradation of skills over time. I’ve found that a skill “rots”, as I’m sure many, many other software engineers have, as well as musicians. If you don’t practice, you get rusty, right? Same applies to programming. I’ve also found that a baseline skill level applies, and the more practice you’ve put in over time, the higher that bottom bar is. So if you’ve put 10,000 hours into Perl, you’re much less likely to forget it a few years later than someone who’s put 100 hours in.
This had led me to practice certain languages on a regular basis, even if I’m unlikely to use them professionally anytime soon. Need a script? Why not write it in Ruby, rather than JS? Ruby is probably more “idiomatic” than JS, meaning it maps more closely to my mental model of the world and has method names I expect, so...why not? Or Python! Python is excellent for OS-related scripts, scripts that touch files and directories and essentially replace the functionality of Perl while still remaining readable later on.
The third and final aspect of musical influence is harder to put my finger on. I tend to code creatively. This may mean I take a novel approach to a problem. It may mean I meander, rather than going straight through on a purely logical warpath to the solution. But what it really means to me, is that my code won’t be the same twice. It means it won’t be the same code I’d write 5 years from now, because my creative self evolves as my logical self does not, by its very nature.
Is this a good thing? I like to think so. As you grow, so does your code. Why wouldn’t you want this? Of course, you don’t want code to be overly-clever or tricky -- that’s a recipe for disaster. But! You want code that expresses ideas in the most natural terms possible. As you express with your creative mind, rather than only your logical mind, you will find solutions that make intuitive sense. What’s better than that?
I wouldn’t give up my musical upbringing for anything, not for a million dollars. It’s given me an incredible, irreplaceable creative mind, something that would otherwise be nigh impossible to attain. If you’re a programmer, and you don’t play an instrument: try the keyboard! It’s my (current) favorite instrument, and it makes logical sense while allowing for creative freedom. You can get a decent 25-key board for around $100, which will allow you to play with melodies while preventing you from trying two-handed play, something I honestly still haven’t mastered.
Once you master the art of the melody, you can try for harmony on a 49-key (or even a full 88-key!) model, something more expensive. You can plug into your computer, and use software like Logic Pro or Ableton to power the midi magic.
If I could leave you with one notion, one idea from this post, it’s this: try creative endeavors! Try something creative other than coding. It’ll expand your horizons. It’ll make you a better coder. It’ll make you think differently. After all, isn’t that why we learn new programming languages? Try it, and discover the vast mysteries of musical expression for yourself. I promise you won’t regret it.