Last year I began a previously unimaginable journey. I decided to quit my career as a successful music producer and audio engineer to become a software developer.
I could write a book on that subject alone, but the tl:dr version is I spent over two decades pivoting in response to an ever-changing industry to maintain a viable music career. Not only was it taxing, I eventually realized I had pivoted myself away from nearly everything I originally loved about making music. (Also…in case you haven't heard, the music business is terrible.) Knowing I needed to make a switch was the easy part; the difficulty was in figuring out what that switch was.
Discovering the world of software development was like finding a source of fresh oxygen. In part because I knew I'd found the next chapter of my life, but also because I was pleasantly surprised to find how much of the skill set I'd honed over years of writing and recording music directly transferred into the process of writing code.
These are some things that were a daily part of my career as a musician that I've found very applicable to learning to be a good software developer:
- Creativity: Music is obviously a creative endeavor, but I was surprised to find how much creativity is involved in writing code. There might be a clear goal an app is supposed to accomplish, but there's usually more than one way to do it. How you choose to make your software work is up to you, and that requires creative skills.
- Language: If you don't understand what notes work with each other in a given key, your song will likely be the musical equivalent of broken code (barring that you're one of those rare prodigies who doesn't need to know such things). Learning a programming language is similar to learning musical scales and theory. Knowing the structure allows you to compose things that work inside of it.
- Problem-solving: This might be obvious, but the majority of writing code is solving problems. Whatever part of my brain has lit up a million times over the years trying to figure out why a guitar part didn't sound quite right or why a chorus wasn't working is also what ignites when I'm figuring out why the DOM is displaying
[Object object]instead of the lovely string I expected to see.
- Pattern recognition: Music is patterns — in fact, there's research that shows patterns are why our brains love it so much. Being able to observe the patterns in a piece of code is a big part of understanding it, and it's a necessary skill for being able to optimize your software. When you create a function that gets used in multiple places in your application, you've identified a pattern and made your code more efficient and less bloated.
- Muscle memory: Learning any instrument takes patience and persistence. You're putting in the time in order to eventually be able to use these skills without having to think too much about them. The same is absolutely true of learning to code (and like playing an instrument, your coding skills will get rusty if you don't keep them up).
- Accomplishment: I've experienced the feeling of hearing songs I've written and/or produced in their final state countless times. It's a special kind of satisfaction. And I'll be damned if I didn't feel the same thing after writing my first piece of functioning code! To be able to sit back and see something you put yourself into that works can be exhilarating.
I'm sure there are many professions that translate well to becoming a software developer. And don't get me wrong — regardless of any basic similarities, there is a ton of work involved with learning any new skill. But if you're taking on an endeavor as big as becoming a software developer, recognizing the skills you already have that will help you know how to think and learn can be a huge benefit.