What music taught me about programming

With many years of experience in the music business and some years working as a developer, it was not hard for me to realize that many of the lessons learned in one field applies to the other.

I decided to write here some of the most important ones and you should feel free to disagree with me and leave a comment below 😉

You practice at home and not at work

Every musician knows that practice makes perfect. You buy your instrument, practice a little every day, rehearse with the band in the scheduled day. Following this steps, you will be better at every show.

A live presentation serves to put into practice what you know, performing your best at each song. If you go on stage without studying the songs previously and do not work on the skills to play your instrument, no good music will come out of you. Yeah, but everyone knows that (or should know) and all of this sounds too obvious. So why the hell would you only learn about the technologies you will need to use when it’s already time to use it? You may know “just enough” about the technology you need and go to Google to help you solve most of the problems. Well, it may work, but the solutions you may find are not the best suited for your needs and you must end up having no progress. “Ugly” solutions are acceptable in the case you just learned about that technology, but unacceptable if you already have experience in that kind of stuff.

A person can spend one year playing C, D and E in 4/4 every day and look like a good musician. Then you ask for that person to play Master Of Puppets. Yeah…

Choose well your instrument

And this mainly involves your taste and needs. You’ll never be a good guitar player if while you play you only think about how it would be cool to be playing drums. If you do not like what you are doing, you will not have the will nor the patience to study and practice, which ends up in the previous topic. Okay, you play drums and love it. Which drum kit will you use? What kind of set configuration? Well, for a beginner it may all looks like the same thing and, honestly, will not make such a difference, since the main goal for a beginner is to master the basics and for that any kit will do. But an experienced drummer already knows what he/she needs to do to play the songs and the configuration of the set that will facilitate the use of certain techniques. You do not need 500 pieces on the kit to play punk, but you can’t play Fall Of Sipledome without having a drum kit with double bass.

If you like C#, then use C#. If you like PHP, use PHP (which is way cooler than C#). And, once learned enough about the language you chose, then you can have fun testing and choosing different tools, frameworks and IDEs. After all, you already know what you want and what you need.

Really like what you’re doing

The “love what you do” stuff is, for most of the time, your only fuel to practice and keep trying. If you like what you are doing, it is much easier to get over the problems. And I can say I know something about that situation, since I was finishing the work needed to graduate in college and was recording an album in a city far away from where I live. I spent my Sunday nights and early Monday mornings at the studio, had to go straight to the office and, once left my workplace, went straight to college. No sleep. At all. I made it through lack of money, lack of sleep and lack of time. Yeah, those were hard times.

If you really like programming with PHP, it’s easy to get excited and read, search, create your own projects and contribute to projects of other people. And, by doing this, getting better every day.

Do not underestimate the self-criticism

The only way to improve yourself is to realize that you still have a lot to learn. One of the best ways to stick to that thought is knowing that you are not as good as you would like to be or as you think you are. As a musician, besides getting the notes right, you must know if everything else is sounding good. And for that, we need to pay attention, much more than “just play a song” and believe it’s all fine. It is difficult to see all the details and failures during the execution of a song, so it’s important to listen to it later. In NoWay, we usually record our shows or search for videos from the public to figure out what was good, what was bad and why we didn’t realize where was the problem before. With that in mind, we rehearse to avoid what was not good. Even at home, alone, I usually record myself singing and listen to it, so it’s easier to know where I didn’t sound good and what exactly needs to be improved. In terms of software development, the way to go is the same: re-read a code that you wrote two or three months ago. Is it easy to understand? If you do not remember what you were doing there, just by reading the code you can understand what it does? Is there anything that could be done in a better way? Who has not, for some reason, had to look at an old code and thought “yuck, did I do this?”?

Sometimes you may think you are amazing, without realising you really suck at something.

Find people better than you

Here must stop being full of yourself and listen to your self-criticism. Someone better than you can identify your weaknesses and strengths much easier than you. Being in a band with better musicians than you brings a great advantage: you will be more concerned about your performance and try hard to “at least play at the same level” and hence getting better almost without realising it.Besides finding a more experienced musician that can help you to focus on the right things and greatly accelerate your learning pace.

The same thing applies when we talk about technology. May it be a team, a friend or an experienced developer who can help you, try to find someone better than you. It is not so hard. Remember, for everything you do, somewhere in the world will be an asian with 8 years old that can do that better than you.

And finally…

Do not let your ego control you

And here we have a BIG and usual problem in the music business and that, unfortunately ends up being common among “devs” of life: the inflated ego. And why is it a BIG problem? From the moment you feel you are good enough and can’t find anyone better than you at anything, you let go the need to learn. “Okay, I know it already, nothing to worry about anymore.” In just one month you are already a only a “reasonable” musician who knows how to do the same old things fairly well, without any progress and being left behind by many people without even realising it and even getting a bit worse (see, Lars Ulrich ? I want you to play live Dyers Eve and making it sound as good as it is in the album…), besides being an asshole with colleagues, beginners and veterans and destroying all your friendships and networking. Oh, and no one survives alone.

Unless you are Ritchie Blackmore. He’s an asshole, everyone knows he’s an asshole, but an asshole we really like to hear playing, because he is really good and important. But an asshole.

Do not be an asshole.


Developers suffer from this idea of “I’m badass because I can make code and no one can make code as good as me because no one knows what they are doing and so…”. Besides stoping your mental growth by ignoring all your learning capabilities, you will lose a lot of friends and professional opportunities because, like you or not, everyone ends up knowing everyone.

I’ve written too much, so let me stop here and leave a book indication here: The Passionate Programmer by Chad Fowler.

Categorias: Programming, Career

Tags: study