If you have ever heard of 10.000 hour rule you know that this came from a research that was made by Anders Ericsson. There were numerous books written on this subjects:

  • “Talent is overrated” by Geoff Colvin
  • “The talent code” by Daniel Coyle
  • “Bounce” by Matthew Syed

The 10.000 hours rule on becoming good at any skill was popularized by Malcom Gladwell in the book Outliers.

After reading the book “Peak” by Anders Ericsson I now see the reasons why Anders would want to write his own book on the subject of deliberate practice. The reason why he wrote another book on this subject is that other book authors didn’t completely understand his research. Anders was kind enough to enlighten us on the subject.

Main differences comparing Peak and other books:

  • Practice doesn’t make perfect. Practice makes permanent.
  • 10.000 hour rule is not rule at all. In some cases it is 200 hour and in other cases it is more like 25.000 hour rule.
  • Most skills can be obtained in your 20s, 30s, 40s and beyond.

The one thing that stood the most out for me in the book “The Talent Code” is that most genioues lost one or both parents when they were quite young. The author suggests that this brought great pressior and sense of hostile environment. All this pressiored young geniousses to practice evan harder.

That said I want to talk about my own experience and what I noticed when following other great programmers. What I found out is that most good programmers that I know were tramatized by some difficult experience by either losing their job or being threten too loose their job. This forced them to become good.

You could ask me: What about Peak? What was the most notable thing about that book? For me it was the authors suggestion that knowledge while being important to acquire skills are evan more important. This changed how I learn things about programming in my spare time. I first do deliberate practice and than I do the “easy” stuff like reading books.

But what kind of deliberate practice should I do?

Remember that deliberate practice should not be enjoyable thing you do. At best it should be neutral. If you are doing deliberate practice and enjoying yourself stop and think if what you are doing is the most efficient thing you are doing in building up your skills.

For programmers there are a lot of categories to get better at:

  • coding challenges (the best current resources is leetcode.com and EPI book)
  • system design (search for Grokking the System Design by Educative)
  • TDD (search for TDD katas)
  • Refactoring (search for refactoring katas, pick up Refactoring book by Marting Fowler)
  • SQL (executeprogram.com, academy.vertabelo.com)
  • creating clone/toy app

I think programming is one of the best fields to be in because there is always something to learn but remember that fundamentals are the most important. The shiny new things like learning the latest new framework is necessary but will be obsolete in few years. Fundamentals like learning networking, operating system, SQL etc. will probably stay the same for decades to come.

And remember practice to every day. It is much better to practice every day for 90 minutes than doing the same amount of cumulative hours on the weekend.

tldr;

  • You need to practice coding every day.
  • Practice sessions need to be intense. If it is not hard you are not learning efficiently.
  • You can have this practice sessions twice a day. 2h in the morning and 90 min in the afternoon.
  • sleep at least 8 hours every day.