By Laurence MacNaughton for Hack Reactor
Do musicians make better software engineers? Scientists have long studied the relationship between musical skills and higher-level cognitive skills.
Numerous studies have shown that individuals with musical training have a greater aptitude for executive functioning processes: being able to remember instructions, formulate a plan, focus on the task at hand, and switch between multiple tasks. These are all core competencies for software developers. So does that mean that musicians make better developers?
To find out, we asked Ian Salmon, who was a professional violinist and teacher for nine years and is now a Hack Reactor coding bootcamp grad and software engineer at Cloud Elements.
He says that musicians and developers share several crucial skills.
1. Breaking down complex projects into bite-size pieces.
Whenever a musician sits down to learn a new piece of music, they know that they can't learn it all at once. It's too overwhelming.
“Aiming strictly for the finish line is a horrible idea because the study of that piece is often going to take weeks or months before it's ready for a performance. It's a marathon,” Salmon says.
In order to make any headway, and still enjoy music practice on a day-to-day basis, a musician must break down the entire process into smaller and more manageable goals.
The same is true on long-term software development projects, which can take months to complete.
“You get a user story and you break it down into code sprints. Then you break that down into daily subtasks,” Salmon says. Some of these code sprints last a few days, while others can stretch on for weeks, he says. In order to make it through such a labor-intensive project, you must break it down into smaller weekly and daily goals.
2. Practicing through repetition.
When you're learning how to play a new piece of music or a new instrument, there are plenty of technical challenges involved. Often, the only way to overcome those challenges is through hours of repetition. Once you've broken down the task into more manageable subtasks, you have to decide how you will practice it.
“How many times in a row do you want to do this correctly?” Salmon says. “For example, isolating a particular phrase in a piece. You might make it a goal that today you're going to play that phrase 10 times in a row successfully.”
The same is true with code. Whether you're learning a new programming language or tackling a particularly difficult project, often the best way to learn something new is through repetition. While it can be tedious at times, it’s frequently the fastest way to improve.
3. Developing a love of learning.
Ask almost any skilled musician whether they enjoy learning to play new music, and they will say yes. Being a musician is a process of continuous learning. Those who love to learn will become better musicians over time. Those who don't, won't.
That's just as true for software engineers. As a developer, you must constantly master new technologies in order to stay relevant in a constantly changing marketplace.
For example, among developers today, there is a tremendous need for experts in React, a front-end library made by Facebook that is becoming as popular as Angular. But while React isn't necessarily any more challenging than Angular, there currently aren't enough React developers to meet employer demand. Why is that?
“Because you have to learn it. It takes time to learn, and it can be stressful. But if you have a love of learning, if you love to learn new services, new libraries, new frameworks, then you can make a hell of a career in software,” Salmon says.
Does learning to play music make you a better software engineer?
There isn't a direct line between playing music and becoming a better software engineer. But mastering a musical instrument develops many of the same skills needed for a successful technology career. Playing music helps you develop the skills to learn faster, solve complex problems, and come up with creative solutions.
The best way for a musician to make the transition into a career as a software engineer, Salmon says, is to start off with some entry-level classes and work on developing fluency in a programming language. You may even want to take a coding bootcamp online.
At some point, though, you'll have to dive into the actual creative process and find out whether you enjoy doing it. The key, Salmon says, is to be honest with yourself.
“Ask yourself: do you enjoy this? Do you enjoy it in the same way that you enjoy music? If you are finding joy in this, then you should keep studying. You might be on the right path,” Salmon says. “This might be a great career for you, but you've got to love it.”