Deep Work by Cal Newport
TLDR:
This book is a useful book for people who struggle to pay attention to their work. The idea is simple, if you want to do more valuable work, you need to practice deep work. Learning to deep work is learning to focus on one task at a time. Deep work applies really well to a lot of knowledge tasks such as writing, reading or software engineering.
My Steps to Implement Deep Work as a Software Engineer
I've realised that reading a book is a waste of time unless I try to implement lessons from it. So for 2025, for books I read, I am going to create checklists that I can use to apply lessons from books.
Here's my list for Deep Work.
- [x] Schedule Deep Work Blocks in diary daily.
- [x] Eliminiate Distraction.
- [x] Set Clear Goals for each Deep Work Session.
- [x] Limit internet use in deep work blocks.
- [x] Keep a tally of Deep Hours completed.
- [x] Batch tasks
I will expand on each of these below. This is just my approach. Feel free to change this however you like.
-
Schedule Deep Work Blocks
The aim here is to have sessions, ideally 90 minutes long where I can work uninterrupted. The focus here is on tasks like coding, debugging or learning new technologies. I have a macbook. I set a countdown timer on a spare monitor screen and I try to stay on that single task for the length of the timer.
-
Eliminate Distraction
This is easier said than done. Task switching and interruption have a terrible effect on concentration, way more than we realise during the day. There is a heavy price to pay for interruption. I think the best way to eliminate distraction is by choosing an environment that facilitates this. Some things that help me are: working in a quiet space, wearing noise cancelling headphones and turning notifications off.
-
Set Clear Goals for Each Deep Session
This will help in 2 ways. The first way is simple. I simply ask, did I achieve what I planned to achieve. The second way is a little different.
By estimating what I can get done in a block, I will improve on my estimations of how long certain tasks take. As I am pretty new to working as a software engineer, this is helpful to know.
What are some examples of targets I might have for a session? In my case examples might be to create an api, write a block of code or format documentation. At the end of a session it's easy to check whether I did this or not.
-
Limit internet use in deep work blocks.
It's so easy to look up one topics on Youtube and end up in a deep dive about 15th century history or how Da Vinci designed a helicopter. Some steps that help me are having Co-pilot or something like chat gpt to do an internet search. The interfaces lend themselves to staying on point. For other things that I might need to look up, I will use a tried and tested approach. Pen and paper. If something random pops into my head, I just jot it down on pen and paper. I can just look it up later.
-
Keep a tally of deep hours completed
You can get "good enough" at almost anything in 20 hours of focused effort. The problem is, most people spend years delaying the first hour".
- Alex Hormozi
This quote cuts through so much noise. If you find yourself not progressing as much as you would like, start counting the hours you are directly spending on that thing. Deliberate practice is where you are working on a task that is right at your limits of ability. Once you have 100 hours of deliberate practice done, you will notice the needle moving. I am the same on this as anybody. Plus having a way to tally an input each week is a great way to think about beating it the next.
-
Batch tasks
How many times a day do you check email at work? I wouldn't like to estimate. Most of us are the same. But every time you ping off a quick reply, you suffer from task switching and lose your train of thought. I've already discussed this above. Most emails are shallow work. By batching tasks like that together, you are limiting their effect on work areas that actually move the needle.