Anders Ericsson (not sure if that’s the right spelling) was the first person to talk about deliberate practice. He wrote a book on it called Peak.
There’s a theory popularized by Malcolm Gladwell in his book, “something”, that to be the best at something it takes 10,000 hours of practice. According to Ericsson counting hours is a fundamentally incorrect view .
Improvement comes with lots and lots of practice but the practice needs to be deliberate and purposeful.
Purposeful practice - You pick a target, something that you want to improve and you find a training activity to help you improve that particular aspect.
Deliberate practice - You’re not aiming for a vague overall improvement. You need feedback to be able to tell you what adjustments you need to be making. Focus on improving one aspect. Deliberate practice also means getting out of your comfort zone. Do something that demands near maximal effort.
How do I apply this to programming?
Becoming a better programmer is not about the hours you sink into programming. It’s about continually challenging yourself. I think that’s why people always tell you to have a side project, to build something you’ve never built before. Building a side project has a clear end goal. It has a clear feedback loop (whether you reach the goal or not) and you’re out of your comfort zone.
I’m bad at a lot of things as a programmer; reading source code, solving problems without googling the answer, refactoring, writing well structured code, the list goes on. It’s about time I start improving on these aspects.
- Freakonomics podcast, April 28, “How to become great at just about anything”.