Lessons from learning music: how to get better at software
Tags: career
Published: 2020-06-05 17:11:38

Programming is only for geniuses. Music is only for the gifted few. Right?

As a professional software developer and musician in training, I don’t think so. These are long journeys, where genius is not mandatory. Here are some tips that music can give a career in software and vice versa:

## Take one step at a time

No one plays a solo or writes a sophisticated program with half a dozen classes. This ability is gained in small daily doses, with much repetition. Those who learn to play wind instrument first learn to produce the notes, then connect them, and only then study scales to be able to perform melodies.

![](https://live.staticflickr.com/7209/6960939955_df60b8523b_z.jpg)

As per the cliché, it takes much more perspiration than inspiration. What matters isn’t how long the step is, but to not stop walking at all. The experience is accumulated during the journey.

No one learns programming by just opening an IDE. Before that, people learn to interpret and solve problems, structure the solution in plain English or pseudo-code and only then start to work with code at all. There is a lot of ground to cover between inception and major architecture design.

## Do your bodybuilding

Professional musicians study each day from their first contact with the instrument. Among French horn players (which has the most beautiful sound in the world!), there is even a debate about whether or not to have a day off.

![](https://live.staticflickr.com/3892/14906759648_d183590e2e.jpg)

In order to be able to play, musicians practice regularly so that their movements are precise and automatic and their bodies and minds are always in a position to play.

If you are already programming daily, it is very likely that this strengthening happens naturally. If not, try to exercise. Even with all his decades of experience Uncle Bob practices katas everyday to test and keep his skills sharp. Repetition makes us write code more automatically and frees the brain for other concerns. This is very important as we cannot pay attention to everything at once.

## Hit the nail on the head

When you study a solo, for example, you don’t spend much time going over what already sounds good enough. Instead, you practice the stretches that are often bad or not good enough. These are played bar by bar, slow at first then faster, until things are better and the song is played well from start to finish.

Do you already write code comfortably but are unsure about writing tests? Set aside some time for yourself. Read Kent Beck’s TDD book , or Steve Freeman and Nat Price’s version , then start cooking!
Anticipating a future discussion: delivering tested code is your obligation!

## Rest, alternate and insist

![](https://live.staticflickr.com/7189/6965845383_f5635dfa53_w_d.jpg)

The muscles and brain get tired. Sometimes we get stuck at some point and repetition at a slower pace doesn’t help. Coffee and small talk usually helps. The next day, coming back to the problem with rested muscles and brain, the struggle evaporates like magic.

Are you reading a snippet of a technical book you can’t understand? Get up and drink some water. Go do something else and then go back to reading. It’s late in the day, you’ve been racking your brain for 40 minutes and still can’t find the root cause of that bug? If it’s not very urgent, get up and go home. You will come back the next day and find out the solution in just 5 minutes.

## Learn from multiple sources

Everyone has a unique story. The best musicians in the world go through various teachers and this is absolutely normal as everyone has their own strengths, experiences and levels of knowledge in music making. When starting a class, my first teacher will always make me play several scales (major, minor, harmonic minor… etc), whilst the second will require my bass to sound like a foghorn.

Drinking waters from various sources makes you understand water better. Donald Knuth, the greatest living computer scientist, advises us to read code from more experienced people. Read books from people in the industry too. They exist in large numbers and are excellent for learning from professionals with decades of experience. Did you buy a book and see no value in it? Keep it, because the Dunning-Kruger effect is probably running through your veins. I assure you that after a few years you will have had many problems in practice — and the knowledge of that book will most likely help you alleviate this pain.

## Pay attention to your surroundings

Rehearsal is when you learn from your peers. You need to bring your part ready from home. It is time to understand how harmonies, melodies, solos and accompaniment fit together, work on the interpretation and make the audience cry in their chairs — of emotion, preferably.

It’s true we have no essay in this format in the software industry. But we do not work alone. Soft skills and good communication are key. I don’t know a company or coworker who is interested in people who just do their part and who doesn’t connect with what happens around them. Don’t isolate yourself behind the headset. Listen to the environment. Tell your opinions. Help your peers. Allow them to help you.

## Prefer environments where it is safe to make mistakes

![](https://live.staticflickr.com/3446/3245065570_f2412c8f87_c.jpg)

Have you tried singing to the point you crack your voice? Have you blown a note so high the note actually cracked? It’s a must! :-)

Having the time and place to make mistakes without being punished is critical to gaining the courage to try. Courage, in turn, is transformative.

There are many ways to catch problems before they are eventually deployed to production. Good companies, besides encouraging the use of this tooling, understand that people are in different stages of development. They get more experienced people to nurture those who are coming and encourage them to try.

>   -- Who will be in the trenches beside you?
>   -- Does it matter?
>   -- More than the war itself
>   (Ernest Hemingway)

(Originally published at https://edsoncunha.github.io/licoes-da-musica-para-evoluir-no-desenvolvimento-de-software/)