The classical guitar way of working effectively

By Rodrigo Villalba on 28 Jan, 2021

developmentproductivity

In 2020 I picked back the guitar after a while, I have been on and off with the instrument since I was a teenager. Yes, I have not been consistent at all, and last year with all that time at home I decided to try getting serious again with my practice. I watched a lot of videos from classical guitar players, where many of them talked about the importance of effective practice. One would think that guitar playing is pure fun and playing songs, but no, most classical guitarist have very structured and disciplined practice routine, for them playing an instrument is like work.

And that got me thinking about the importance of having an effective way of doing your work in software development. There are actually a lot of parallels between practicing an instrument and programming that I wanted to mention in this post, maybe it can spark some new ways of approaching your own work more effectively.

Plan your work

Guitarists plan their practice beforehand, they write down every exercise and song they are going to play, and how much time they are going to spend in each item, and they stick to that plan strictly.

I don't like to write todo lists for my day, but I like to write what I need to work on for the next 1 or 2 pomodoros (more on that later). That helps me stay focus on only one thing, one single task to complete, and not get distracted and go on a refactoring spree of some old code that I did not even write.

Viktor Rentea even recommends that you should write the commit message before starting writing the code for that commit, I guess is like visualizing what the final code would look like before starting writing it.

It's useful to give the mind a destination to stay focused on.

Be mindful of your technique

This I don't see many people talk about or pay attention too, but I think it is extremely important.

Guitar players try to be constantly mindful of their posture and hand technique, even when they are just warming up or doing easy exercises. They say that the mind picks up every motion that the finger does and records it as a habit, even the bad ones. So it is essential to teach the mind good habits, because the bad ones are very hard to unlearn.

The same I think is true for writing code. Whenever I pick up a new code editor I spend some time developing good technique using it. I try to learn the shortcuts, so I can be effective in my writing and don't waste time searching for things with the mouse. If you use tools like IntelliJ or VSCode it would save you a lot of time if you learn the shortcuts, IntelliJ can even automate most of your refactor.

I also try to be mindful of other small things like my posture, how many tabs I have open, where I poistion my windows (the work chat window to the side or hidden, the editor front in center), and so on. Those details seem like insignificat but when they add up they can slow down your work and you will get tired more easily.

Work in small chunks, and take breaks

You're talking about Pomodoro, right? You may ask and you are right. I'm not going to spend time here describing Pomodoro because it's a very popular method and a lot has been written about it on the Internet. Even people who don't use the term "Pomodoro", apply the method to their daily work, like guitarists. They practice for 30 to 40 minutes and then they take a break or change to another exercise, that is basically doing a "pomodoro".

This has been the most useful method I have incorporated in my work day since I've become a professional, and if you take nothing else from this article but learning about Poomdoro, I have done my job.

End your work day on a happy note

Guitarists end they practice playing a song they like or doing something that makes them feel relaxed, the idea being that you should give yourself a reward for working hard and end on a state of mind that will make you wanna pick up the instrument again the next day.

I try to do something similar with my work. I like ending my day with something that is working, no matter how small it is, it should be working and without bugs. If I'm working on some new feature, I try to finish part of that feature, and finish it well. I should be able to click on the app and all should be working smoothly, or my unit tests should all be passing and green.

If the thing I'm working on seems to be more complex than I expected, and I notice I'm not going to be able to make meaningful progress that day, I try to reduce the scope and focus on some smaller section of the task, something that I would be actually able to finish that day, and finish well.

End on a high note and make yourself wanna come back the next day, and come back motivated.