Deliberate Practice

Peak: Secrets from the New Science of Expertise is a book studying deliberate practice, the act of pushing yourself to learn more about a subject while constantly reviewing your progress and applying feedback.

Many of the examples in the book are of activities that can be easily quantified; playing chess or memorizing numbers, for example. You can graph your progress from day to day, allowing you to spot weaknesses and improve those areas.

As I read Peak, I thought about how it applies to programming. How do you quantify your skill as a programmer? Number of algorithms you understand? Features implemented? Bugs fixed? There isn’t really a metric for it. But, you do know when you are learning something new.

Avoiding Stagnation

For the last few months, I haven’t made a lot of meaningful progress as a programmer. I read blogs, browse programming books regularly, and work on small side projects when I can, but I haven’t really gone deep on something new for some time now.

There was a period of time where I learned Ruby, Haskell, Rust and Go, while also studying network security and malware analysis. Since then, I have mostly just coasted along, learning new iOS APIs where needed, but not pushed myself beyond that. This is one of the most harmful things to a programmer, and I’m not sure why I fell off the rails. Avoiding stagnation should be priority #1.

Building a Schedule

Peak has been extremely motivating for me. It was a solid wake-up call that if I want to stay competitive, there needs to be a massive improvement in focus and dedication.

Since I read Peak, I began sitting down every day from 6:30 AM until 8 AM to study. For myself, the choice of topic has been C++ and 3D graphics, two topics that I’ve danced around for years but have not spent the time to become truly adept at. C++ is so widely used in the industry, from compilers to operating systems, that it felt foolish to not attempt to master it (if that’s even possible with such a large language). 3D graphics are a way to stay sharp with mathematics while concerning myself with very low level details of programming with C++.

I encourage other programmers reading this to do the same. Pick something you’re interested in, and set aside the time to practice it every single day. Every single day. It’ll be tough going, and you won’t be writing amazing code to start, but it will be worth it.