I have been a musician and music teacher most of my life, and I’ve spent a lot of time thinking about how people learn. When it comes to playing the piano, I’m always trying to understand how I learn better, because I have had to learn a lot of music.
A lot of people who are learning the piano get stuck, and if they could take a lesson from the programmers, they might find that they can solve the problems they are having. So I’ve come up with a few tips from my time learning computer science that might be helpful to people learning to play the piano, and here they are:
- Break down large problems into smaller problems.
- The best solution is the solution that gets the result you want with the least amount of effort.
- Always consider the listener’s (user’s) experience.
- Just because it works once, don’t trust it. Test everything.
- Lay down the framework first, and then add the details.
Let’s talk about these one by one:
#1 Break large problems into smaller problems.
Piano students sometimes get discouraged when they look at a long piece of music to learn that has a lot of challenging passages. They wonder if they’ll ever be able to learn the whole thing.
They need to think like a programmer. What is the first thing a programmer does when they want to learn a new framework or language? Hello World! That’s right, the most basic task in any language or framework is to get the computer to print “Hello World!” on the screen. So that’s where you start. What is the most fundamental version of the problem that I can solve, and start there.
In a difficult passage of music with a thousand notes, you don’t have to learn all the notes right at first. Start with playing the first note going to the second note. How was that? Can you do it accurately, at the speed you want? If so, try the first three notes in a row, etc.
What if you can’t play a scale smoothly? Suppose you had to program a robot to play a scale. Say it was a replica of the human hand. How do the fingers have to move? How does the arm have to move? Map out the steps exactly. You don’t need to write it down, but just pay close attention to how the arm and hand needs to move to get the result you’re looking for.
2# The best solution is the solution that gets the result you want with the least amount of effort.
Don’t just look for any old solution. Look for the best solution. The best solution is the easiest solution that gets the job done. If one solution allows you to get the result in 8 hours of practice, and another one only takes 2, go with the easy one. Unless the result you want is to be able to solve a particular problem using a particular solution. For example, say you have to use a certain framework that may not be the best for the job, but for some reason you are locked into using it. In that case, do what you have to do, but always look for the easiest way.
#3 Always consider the listener’s (user’s) experience.
The listener doesn’t care what fingering you use. In fact, the listener doesn’t even really want to know about that, the same way a user who visits your website doesn’t care which framework you used. They just want the website to work, and be easy to use.
Out of consideration for the listener, try to keep a steady tempo and speed up and slow down. That’s more important than playing the right notes. Remember the scene in “It’s a Wonderful Life” when the girl was playing the Christmas song with bad rhythm? That’s the reason that George got mad at her. The bad rhythm is annoying, and that’s how she ruined Christmas.
#4 Just because it works once, don’t trust it. Test everything.
You may have gotten something right because of luck, which means your luck might run out. You want to make sure you can get it right consistently, over time, in many circumstances. Programmers know this, which is why they test their code to make sure it will do what they want it to do. You have to give your program a variety of inputs to make sure that it will work no matter what happens.
As a piano player, you have to do the same thing. Can you play if you have a bad piano? What if you get distracted? Do you know it well enough to play it anyway? Can you start anywhere in the piece? If you make a mistake, can you keep the music playing, or do you have to stop and start over? Remember the user experience? The user is not going to have a good experience if you keep going back to correct your mistakes.
#5 Lay down the framework first, and then add the details.
If you’re building a website, this may mean to start building the pages and make sure you can navigate between them, even if they aren’t complete. Say you have a home page, a contact page, and an about us page. You may start with three simple pages with nothing on them, and make sure that you have buttons on each that allow you to move from one to the other. After that, you can choose fonts, colors, layout, and add cute images to make your website really pop. But what’s the point of doing that if the user can’t even get to the page.
I say the same thing about learning to play something on the piano. Start with the melody and the fundamental bass line. If you don’t have that, nothing else really matters that much.