Standing on the podium, Michael Phelps stares at the American flag and listens to the National Anthem after winning Gold once again. After watching Phelps win 21 gold medals (at the time I’m writing this), it’s natural to ask: “Was he simply born for greatness?” I don’t so. Yes, his body type has helped him take advantage of physical elements of swimming. However there are millions of individuals with his height and wingspan who watch him at the Olympics from their couches every four years.
There is no magical swimming gene that Phelps was born with. Instead the secret to his success can be found in his discipline to a practice called Deep work. Muscle Prodigy research claims:
“Phelps swims minimum 80,000 meters a week, which is nearly 50 miles. He practices twice a day, sometimes more if he’s training at altitude. Phelps trains for around five to six hours a day at six days a week.”
If Malcom Gladwell’s 10,000 hour rule is even close to being accurate, Michael Phelps surpassed this benchmark years ago.
In case you’re wondering how this applies to coding, don’t worry, I haven’t forgotten that this is a show for developers 😉
Definition of Deep Work
If you have watched this show you may remember that one of my favorite books is Deep Work by Cal Newport. (The fact I’ve referenced the book a few dozen times may have given it away). So what exactly is Deep Work?
A dead simple explanation of deep work is:
Deep work is the ability to focus without distraction on a cognitively demanding task.
Whether you believe that swimming is cognitively demanding or not, I believe that Phelp’s example is fitting. If you have ever attempted to train with the level of intensity that Phelps does, you can attest to the mental toll that training takes.
So essentially deep work can be simplified by saying that it has the following characteristics:
- It’s a real world action. It’s not a theoretical concept, it’s something that you can practically implement.
- In order to work properly you have to eliminate 100% of your distractions.
- The task has to be challenging.
Deep Work Strategy for Developers
Let’s dissect the definition of deep work and build a practical strategy for how it can be implemented from a developer perspective. Let’s imagine that you want to learn about the computer science topic of asymptotic analysis. If you’ve never heard of asymptotic analysis, don’t worry, you can trust me that it qualifies as a challenging topic.
Let’s start with the fact that deep work is an action. With that in mind you will need to make a clearly defined time slot. If you have never practice deep work studying before, I’d recommend limiting the slot to around two hours. As you’ll discover deep work is a draining task. For our example let’s imagine that you have designated 9am to 11am as when you’re going to study asymptotic analysis.
With your time slot set, now it’s time to remove any and all potential distractions. Let me be 100% explicit, this means:
- You cannot check your email
- No phone calls. In fact, turn your phone on airplane mode to ensure no one calls or text messages you.
- Don’t even think about checking Instagram, Facebook, Twitter, or Tinder. All of your swipe rights will have to wait for a few hours.
If I missed any distractions you can add them to the list. It may also help to listen to classical music to block out any potential sound distractions while you study.
Study Hard and Smart
Now that you have dedicated a few hours to studying asymptotic analysis and have removed all of your distractions, it’s finally time to get down to business. If you think that now you can simply start reading a few Wikipedia posts, I’m sorry, that won’t earn you a deep work badge.
In order for deep work to be truly effective, it has to be difficult. If I was learning about asymptotic analysis for the first time and wanted to practice deep work while studying it, I’d take the following approach:
- I’d begin by reading a number of online resources on the subject.
- Next I’d watch an online lecture while taking notes.
- I would then find practice exercises where I would attempt to figure out problems from scratch.
- Next I would write a blog post or record myself teaching the concept.
- Lastly I would have another student or instructor review my teaching and exercises to ensure that I understood the concept properly.
Do you see how much more comprehensive this type of studying is? Even if you had never heard of asymptotic analysis before your deep work study session you would be fluent in it after you were done.
When I mentioned earlier how you should limit your deep work sessions to around 2 hours, I don’t mean that you can understand any topic in that period of time. Some complex topics may take days, weeks, months, or years to properly understand. So it is completely fine to spend a number of sessions working through the same concept. If you are going to do this I recommend that you make notes for what you were doing when you stopped. This will allow you to pick up right where you left off.
I hope that this has been a helpful introduction to what deep work is and how you can practically implement it as a developer. If you want to learn more about the topic I suggest that you pick up Newport’s book. It will give you a great set of tools for learning how to use deep work to constantly improve as a developer. When it comes to learning, deep work is the closest thing you can get to steroids. Good luck with the coding!