In this short little post, I want to share some thoughts on deliberate practice and how it affects coding, learning how to program, etc. I will argue that, in the long run, you can only become a better programmer with some systematic (self-)education, be it from books or academic classes. Tutorials alone, on the other hand, get you actionable quickly but do this at the expense of providing “the bigger picture” which will ultimately harm and slow down your progress.
The concept of deliberate practice
I have been intrigued by the concept of ‘deliberate practice’ for a few years now. It mostly comes up in the context of the so-called 10.000h rule (popularized by Malcolm Gladwell’s The tipping point – which is full of blatantly false information by the way and has been debunked by Steven Pinker, see Resources).
Deliberate practice is needed for expertise and reaching a level of mastery. If you just want the ‘quick fix’, don’t bother using this approach. But maybe consider using it still. For your own betterment, even if that sounds like an increasingly cheasy idea in our times. Read on to find out why I think you should.
Urging you to go grab a book instead of reading a tutorial probably is weird advice coming from someone owning a tutorial blog. What I really want to say is that you should choose the medium through which you learn wisely and deliberately. You don’t need to use the same medium all the time but keep track of the ratio of how much you use the quick fix and how seldom you actually take the time to learn and really understand things. For getting things done quickly, a tutorial is great. But in the long run, if you want to become good at some point (and you should have that goal), you need to learn systematically.
Adopt good learning habits, relearn the basics and do it well.
Get a teacher, get constant feedback and a systematic learning progression. If you have acquired your skills merely through ‘coding along’ so far, you might want to do some serious catching up by reading a book. Even if it’s an introduction you deem below yourself, seeing as you might already have years of experience under your belt. Go learn your basics. They’re the hardest part but easiest to overlook. Deliberate practice concepts all agree that you need to deconstruct a skill into the absolute basics and master those smallest building blocks. It’s not the ‘big concepts’ which will ultimately make you good. Don’t sweat the small stuff. Go learn your basics. And go for mastery this time.
Why don’t you just… read a book for once?
I don’t want to say either that one could learn programming from reading books alone. But what I do say is that a book is, obviously, an overall larger thing than one short standalone tutorial. So it is bound to have some more structure. It has room for some more general explanations than a blog post. In a blog post, lengthy explanations of background information would be distracting as the goal is to get you going as quickly as possible. For your overall learning, however, this is harmful. Getting the easy ‘quick fix’ is not challenging. But without challenge there is no learning process.
Reading books to learn something is not the right approach when you’re in a deadline-driven project and just need results real quick. But even in that situation, I encourage you to take some time for deliberate practise: Read a book on the topic in your free time, in a moment of calm where you’re not pressed for results. This is what the Humboldtian idea of Bildung is: Self-realization, learning something which has no immediate use but will make you grow as a person and in your expertise.
The culprits: Lack of didactic guidance, missing big picture
When you learn programming by tutorials and StackOverflow only, there usually isn’t a lot of didactic guidance involved. It seems like the effective way to do things because you get going immediately and only learn what you need to know right now, so you can always keep things relatively simple. But you also don’t get the big picture. You might get actionable advice, but in the long run, this kind of learning alone, while making sure you get started quickly, will also make sure you remain mediocre forever.
Training progession and learning
If you learn without a progression, there is not training effect. I spent all my youth on strict training plans for long distance running, so tackling learning this way is all natural to me. But I realized that for a lot of people, it isn’t. They would never even dream of structuring their progress in learning in accordance with well-known training principles. But that is why a (the desired?) training effect is never going to come. If you don’t train, you don’t get better.
And by “training” I don’t mean the fun part of coding along happily, hacking things together so they merely work. Training is the hard work part. It means dedicated, systematic learning with the goal to improve systematically, following a pre-planned progression. You wouldn’t expect to run a marathon without planning out your training like this, why do people expect that it should be any different with other kinds of learning? But they do. And then they sit wondering why they don’t get better.
You won’t get fit if you don’t make a plan and follow thorugh with it. These things don’t happen by chance. With learning, we sometimes are lead to believe that it doesn’t require this continuous dedication like atheletic fitness does. You learn it once and get to keep that skill level forever. That’s why most people get worse once their schooling is done – they just stop learning. Of course, years at the job give you experience. Doing what you’re already good at is fun. But if you want to make any measurable, visible progress, you have to leave that comfort zone and do the work.
Dedicate yourself to getting better or you will stay where you are. Forever. Just ‘showing up’ and doing the work the same way you always did, making the same mistakes you always did, will not make you an expert. There is no way around deliberate practice with a reliable feedback loop. You have to measure your skills before you can improve them. So you see that you really aren’t anywhere near close to where you want to be. This is painful but necessary. You need to acknowledge where you lack skill. Then come up with a plan to expand your knowledge systematically and fill all the gaps. “Just coding along” is not going to do it in the long run.
What you do every day… counts more than what you do once in a while
I want to share the one baseline that resonates with me the most: Do it every day. Even if it’s just 5 minutes of habitualized deliberate practice. Get better every single day. Challenge yourself to get better daily. Even if it’s just a ‘mini habit’. What you do once in a while can never beat what you do every day. What you do ‘once in a while’ has a tendency not to happen. If you aim to study for an hour once a week and that doesn’t happen a few times, you will go without practice for weeks. So go for 5 minutes daily. There isn’t anybody who doesn’t have 5 minutes per day. No matter how busy you are. There is no excuse for not taking these five minutes out of your day for conscious improvement. I think it would even be totally justified to do this during your paid work time. 5 minutes more or less can’t hurt your productivity. And the investment will surely pay off.
Late New Year’s resolutions
In the “coding world” classic “book learning” is frowned upon. People favour just getting what you need right now from a quick tutorial or reading up the solution on StackOverflow. I argued, however, that never taking time to do the real, hard work and actually learn it is not a good habit in the long term. So I suggest that you replace it with better ones from now on. It’s not too late for New Year’s resolutions yet 😉 So much for today.
Yours,
the LaTeX Ninja
Resources
Some books touching on ‘deliberate practice’
Cal Newport, So good they can’t ignore you, NY 2012. I found that the book isn’t what the title suggests (it sounds like your common bullshit American self-help manifesto, but it’s really very sound advice). Contrary to the common “passion hypothesis” (live your dream and make your pre-existing passion into your career), he recommends to adopt the “craftsman mindset” which focuses on producing really good output. His Deep Work is great as well. http://calnewport.com/
Josh Kaufman, The First 20 Hours: How to Learn Anything . . . Fast!, London 2014. Was not as good as I had hoped. I really liked the summary on deliberate practice and the idea behind it, but found the book itself a little lacking in depth. After the introduction where he explains deliberate practice (which is the part I loved back when it came out. He really is responsible for my first getting into the idea of deliberate practice), it’s pretty much over. All he does is apply his theory to multiple projects. If you’re not particularly interested in the skills he deconstructs, you really don’t need to buy the book.
Timothy Ferriss, The 4-Hour Chef: The Simple Path to Cooking Like a Pro, Learning Anything, and Living the Good Life, NY 2012. Also with Tim Ferriss’s mimimum effective dose (MED), mainly described in The 4h Chef, the common denominator is that the books mentioned all question the concept of “mastery”. The 10.000h rule stating that you need 10.000h of deliberate practice (that being 4h per work day, 20h per week, 50 weeks per year for ten years) is geard towards “world-class mastery”. Even if you really want to achieve world-class mastery, studies have found that you can get away with way less hours if you practice the right way (deliberate practice as opposed to ‘just showing up’). But Ferriss and Kauffman both bring up a different aspect altogether: They point out that most people don’t actually want that kind of “real mastery”. Kaufman’s great idea behind his book is that mostly, we just want to get started in a skill really, know enough that we can say “I know how to [INSERT SKILL]”. And 20h of real deliberate practice mostly is more than enough for that. Afterwards, we are ready to continue on to real skill acquisition if still interested. Ferriss is unique in how he stresses the idea of doing the least possible to achieve your goals (the minimum effective dose) which supposedly will save you most of the otherwise wasted time.
And of course: Malcolm Gladwell, The Tipping Point, Boston 2000.
Other
Steven Pinker: Malcolm Gladwell, Eclectic Detective, in: The NY Times, NOV. 7, 2009.
Buy me coffee!
If my content has helped you, donate 3€ to buy me coffee. Thanks a lot, I appreciate it!
€3.00
3 thoughts on “Learn programming from a book vs. tutorial? Thoughts on deliberate practice”