What Musicians Can Teach Software Developers

Music expresses that which cannot be said and on which it is impossible to be silent – Victor Hugo.

Music is all around us. We turn it on in the car, we hear it at the mall or in the elevator.  When we need to tune out the world and focus on coding, we put on our headphones, turn up the volume and crank up the tunes.  Many of us do their best work when they have some music in the background.

The Huffington Post recently published an article on why musicians make great software developers. While you might consider musicians flighty, artsy types, there is much to be learned from our musical friends. As the article points out, “thanks to their performance background, attention to detail, and innate need to perfect their parts, musicians tend to be analytical, logical and methodical—skills that the best coders also possess”

This article resonated with me, as I have a musical background, myself. Not only do I enjoy listening to music, but I’ve been playing music, off and on, for most of my life. In grade school I learned to play the violin and kept at it all the way through college. In the past few years, I’ve been learning the piano, taking lessons alongside my kids.

After all these years, I’ve noticed a thing or two that software developers could learn from musicians. Today I’ll share three observations about those who study and play music that also apply to the software development world as well.

They master their instrument

If you ever watch an accomplished musician, they make it look so easy. World class musicians have learned their instrument so well, they no longer have to think about it. Gary Burton said that many great jazz artists “see” the notes of a particular chord “light up” on their instrument. They’ve mastered the mechanics of playing the instrument so that they no longer have to think about how to play, they can concentrate on what to play.

Software developers can take a cue from this observation. Learn to use your development tools. You want to know them inside and out so that you no longer have to think about the mechanics of writing code. Instead, you’re able to focus on which problems to solve and how to solve them.

  • Learn to type. Each time you have to focus on what key you need to press next, that’s mental energy that is being drained from solving the problem you’re working on. Just as musicians practice scales over and over, programmers should learn to type so that writing characters on the screen is just as automatic as playing a C-major chord is for a pianist.
  • Learn the IDE. Understand the commands and features of your development environment. Even more importantly, learn the keyboard shortcuts for those tools. Know how to flip between files, jump around within a file, run refactorings, generate stub code, build and run your code, all from the keyboard. Every time you reach for that mouse has the same effect as a musician that has to stop and turn the page before resuming the song. For me, there are some operations that are so automatic now that if someone asks me what the key binding is, I have to physically perform the operation to see what keys I ended up pressing!
  • Learn the language. It’s hard to get into a flow and solve a problem if you have to stop and look up something in the language reference guide. If a musician had to stop every other measure to look up that “f” means forte (loud), and that the note on the top of the staff is G, you wouldn’t have music, you’d have random notes. Go deep and learn the nuances of the language, and let the IDE help with auto completion so you can focus on the problem.

They collaborate

It is a joy to watch a great jazz ensemble. Everyone in the group is a talented musician in their own right, but no one person dominates the group. They each have their time for a solo, a time to shine, and the rest of the group listens and supports that individual. They’re all working together, with give and take, to provide an overall experience to the audience.

Software development is much the same. Rarely does a developer work alone. You are usually part of a team, working with other developers, QA, product owners, customers, IT, vendors, and more. Each member of the team has their own strengths and weaknesses.

Just as a song is enhanced by the multiple layers of instruments, a well-functioning team is much more efficient and productive than a single developer, working alone. Working together allows each individual to contribute and shine, with the support of the team members supporting.

They are always improving

No two jazz performances are ever the same, each time, the musicians involved are looking to improve it, make it more their own, make it fresh. Even your favorite rock/pop band doesn’t play their songs at a concert the same way as what’s on the album. They’ve found a new way to interpret it, or make it more interesting.

As software developers, we should always be looking to improve in our craft. It may be iterating on a design to make it more extensible and clear. Perhaps we’re learning a new language or framework. Maybe we go to conferences to learn about some of the tools and techniques that are out there we should be looking at and using in our own work.

Whatever it is for you, find time each week to constantly improve yourself and your skills.

Coda

Musicians might make good coders, but even if they never make that jump, there is much we can learn from them about how to become better software developers. I hope you’ll take these lessons to heart and apply them to your own work. Master your tools, collaborate with your team and always seek to improve.

Do these things and you’ll be asked to do an encore after the final code has deployed to production.

Discussion Question****: What lessons do you think software developers can learn from muscians?