
We discussed how testing ourselves can ensure that the practice we are doing is effective. But how can we make sure that we design effective, deliberate practice in the first place? The first thing we need to do is make sure that whatever we are learning stretches our abilities. It has to be just enough of a stretch to expand our abilities, but not so much that we get discouraged and can’t reach it. It also has to be repeatable.
What does that look like for improving our software development skills? If we’re practicing our typing skills it could be as easy as reaching a higher speed goal, or adding a new key to our “muscle memory”. One small step at a time to stretch ourselves to a higher level of performance.
If we’re learning a new refactoring technique, we would be unfamiliar with the steps to implement it. It will take a little practice to understand and be able to reproduce the steps without following a step-by-step guide. This is beyond our reach initially, as we don’t know the steps. But after following the steps a few times, we can challenge ourselves to try it without the guide. Then we can find some different code to try it on. If we have trouble implementing the steps on unfamiliar code, we go back to the reference. We keep trying until we can implement it successfully on unfamiliar code. Each step takes us further down the road to mastery.
The same goes for learning any new skill or technique. We start with training wheels. We use that until we’re comfortable taking one off. Then we take off the other. Then we can ride the bike! Each step is just beyond our current abilities.
What is one small step you could take that would help you grow today?

