I’m not sure if this is a musician’s perspective of learning or something more universal, but it’s something that I think about often. When learning, there’s value in training, lessons, reading, and other learning opportunities, but there’s much more value (IMO) in practice – but I’m not sure if that’s how everyone sees it (or if I’m even right for that matter).
One common example from my life is the mediocre musician who decides to get better by taking lessons from a master. This isn’t a bad choice by itself, but in many cases, months go by, and while they may make some minor improvements, there are no dramatic (or often, noticeable) improvements. Meanwhile, another mediocre musician makes huge advancements without a single lesson. The difference is that the latter musician invested in deliberate practice, while the former assumed the lessons were enough. The joke about the way to get to Carnegie Hall applies well here.
The same thing applies outside of music as well. Taking a skating lesson will help you with basics, but you need to practice to improve those techniques. You need to learn what works for you, and how motions feel, and need to get confidence in your abilities until you hit a point where additional lessons or training may help you make another leap forward.
Of course, this also applies to software engineering practices. Whether you’ve taken a class, or read a book (or even a Wikipedia article), you don’t really know the practice until you’ve tried it yourself (you certainly wouldn’t give a skating lesson or write an article on learning how to skate after an introductory lesson). For anyone interested in improving or learning, you are responsible for finding approaches you haven’t used before (not just those you haven’t read about before), and using deliberate practice to discover the details about what works, and does not work for your context.
I’m not saying practice alone is enough, but you need a balance (note, “Balance” does not necessarily mean 50-50) between deliberate practice and increasing your capacity to learn. One way to increase your capacity is to take a lesson or a training course. As I mentioned, you can also read about something new. For musicians, playing with other musicians is a fantastic way to learn and increase capacity – this is why I recommend pairing and coaching in software engineering so much – it’s a great way for all parties to learn and increase their ability to take advantage of deliberate practice.