Beginner Guide to Deep Work for Developers
Posted on September 17, 2019
Have you ever dreamed to wake up one morning and realize you felt different, more powerful? As if you had this super power inside of you that it waiting to be used. You'd meet someone very old and wise. He would tell you that you've actually had this super power for a very long time. But you need to go through a very difficult training phase to master it.
Good news: as a developer, you do have this super power. And although you will need to practice, I promise you it sure won't be that difficult. This super power is called Deep Work. It was made famous by the author and computer science researcher Cal Newport in his 2016 book of the same name. Here is one definition of Deep Work you can find in the book's abstract:
“Deep work is the ability to focus without distraction on a cognitively demanding task. It’s a skill that allows you to quickly master complicated information and produce better results in less time. Deep work will make you better at what you do and provide the sense of true fulfillment that comes from craftsmanship. In short, deep work is like a super power in our increasingly competitive twenty-first century economy.”
Why do I need deep work?
Deep work will improve your life as a developer in several ways. The first obvious one is that you'll feel (and be) more productive. You'll deliver your tasks quicker, with a better quality. And you'll feel more involved in your projects. Without falling into the myth of the “10x-developer”, you will impress your coworkers with the exceptional rate of your work.
You'll also improve your level as a developer. Because you'll work faster, you'll also progress a lot faster that before. Suppose you're a front-end developer and use to work on UI stories (updating a form, creating a new screen). It won't be long before you'll have so much experience that you want to find ways to optimize everything. Testing new libraries to make things easier, improve performance, and make a lot of refactoring. And all this will be a huge plus for your career.
Last advantage of deep work that I can see, you'll separate better your personal life from your professional one. You'll be better at stopping thinking about work when you leave the office. And you'll even be better at enjoying your leisure time on evenings and weekends.
“The key to developing a deep work habit is to move beyond good intentions and add routines and rituals to your working life.”
The thing is, working deeply is not difficult in theory. You just have to... well, work. The hardest part is actually what you do when you don't work deeply, to help you when you do. Let's see what routine you can put in place to be able to apply deep work in a classic day of work. I'll imagine you're a developer in a company because it's my personal situation. Of course most principles will apply if you're not.
🕖 Arrive at the office, the earlier the better
Everything starts as soon as you arrive at the office. If like most developers you work in an open plan office, you can guess why it is not an optimal condition for deep work. It's often noisy and distraction is all around (conversations, phone calls...). Focus loss can also come from instant messaging, emails, more or less useful meetings. But above all, a lot of context switching. A colleague interrupts you for an innocent easy question. It takes only a couple of minutes of your time. But the damage is done, you lost your precious concentration.
One of the solutions I applied to counter this is pretty drastic: I started to arrive at 7 a.m. every morning. As I explain in a previous post, by starting working this early, I had a lot of time to work deeply, before any of my colleagues arrives. For more than two hours, it's only me and my work: no meetings, no noise, no context-switching. Imagine how it feels to have delivered several tasks before your colleagues even have their first cup of coffee.
Of course it may not be that easy to arrive this early. If your employer doesn't let you adjust your working hours as you want, or if you have kids, or if you're definitely not a morning person, don't be afraid. There are still other tricks to be able to work deeply.
One of the first thing I do when I arrive is trying to plan my day. First by having a look at my agenda to see if I have important meetings (or less important ones, that I can miss). But it's more important to define what your day will look like. Not exactly which specific tasks you'll work on (we'll talk about that further). But try to plan when in the day you have deep work sessions, when you have a break with colleagues, or when you do shallow work (i.e. non-deep work). Try not to be too much ambitious at first. Two hours in the morning and two in the afternoon may be enough to begin. You'll already produce a lot more than before.
Last step before starting your first deep work session of the day: have your morning ritual. Cal Newport suggests that before starting a deep work session you do a few actions you set for yourself. Like a routine to tell your brain “prepare for a very intense work session”. For me this ritual consists first in preparing a large cup of coffee. Then turning off all notifications (phone, IM, e-mails). Making sure that only work-related windows and browser tabs are open. And finally choosing an album or a playlist to listen. By the way, my noise-cancelling earphones are my best friends. The day can begin.
🕤 Time for some shallow work
If you came to the office early, it must have been quiet until now, but here comes a time when everyone else arrives. The office is now very noisy, everyone talking about the series they watched last night. Good time to have a break, and a cup of coffee with colleagues. Also a good opportunity to do this shallow work you still need to do. Like answering some emails (or simply read some), planning your next team's lunch, etc.
For me, this time usually includes the daily scrum at 10 a.m. After it, I also check my Twitter and RSS feeds. It may be a good time for technology watch (and you really need it in development). Be careful though to define first how much time you want to dedicate to this (while planning your day for instance). Maybe not more that 20 or 30 minutes. It's very easy to start and never finish going from Twitter to Reddit to nowhere all day long. Even if it looks like just checking development stuff.
After that, starts another session of deep work until it's lunch time. Or maybe you need some help about a specific problem?
🕚 I need help from a colleague
Let's say you need to ask a coworker some help about a complex problem. (I'm not talking about a simple question such as asking for access codes.) First, suppose she might be in a deep work session herself, so ask her (by IM or email) when would be a good time. Don't expect an answer in the minute, remember you wouldn't like to be disturbed during a deep work session.
Open plan offices defenders will argue that they encourage the kind of communication you need to solve these problems. Everyone is ready and available to answer any question. More generally, open offices would be better for creative ideas to emerge. Cal Newport refers to this idea as the theory of serendipitous creativity.
Of course in a deep work philosophy this doesn't work. If you're always available, it could mean you never have full focus on a task. So should you say goodbye to communication and creativity? Of course not. A help session between two developers can be deep work too. Cal Newport refers to this as the white board effect. Define what problem you want to solve and what elements (answers) you'll need to continue by yourself. Also make sure nobody will distract you (find a meeting room for instance). Obviously the white board is not required, but you understand the idea.
🕛 Lunch break
I wouldn't dare to tell you what to eat or how to enjoy your lunch. But there is something interesting you can do after. This will improve your deep work practice a lot. I'm talking about taking a walk (or a run, or bike session) and meditate productively. The idea is to find a work problem and try to solve it for instance. Or think about how to plan an upcoming meeting. Or prepare a presentation. It's not quite easy to keep focus while walking or running, especially if you can't take notes. But it's an excellent way to improve your memory and ability to concentrate.
Interesting fact about memory that Cal Newport raises. Some people are able to remember a very complex things (a deck of cards, some number decimals...). Studies evaluated their memory, and their conclusion are surprising. Their ability to memorize things is not significantly better than anyone else's. But their ability to concentrate is. In other words, the remembering part relies on tricks more than memory. But these tricks need an ability to focus that must be trained. Have a look at this method to memorize a deck of cards.
🕒 After the scrum planning
Let’s imagine that afternoon started with a sprint planning. So you now know what you’ll have to do for the next couple of weeks. Choose one of your tasks, and take the time that you and your team estimated it would take. Now estimate for yourself how much time you could use to do this task if you were perfectly productive. This could divide by two or three the original estimate, but commit to yourself (or better, to your team) about it.
For example if a task was estimated to four days and it’s Monday, commit to finish it before Wednesday’s daily scrum. This can be rough, but having this goal will imply you’ll know exactly what to work on for the next days’ deep work sessions.
According to Cal Newport research, this method is inspired by the one that Theodore Roosevelt himself used when he was a student. You’ll be surprised by how it actually works most of the time. Of course there will still be times when you’ll need some input by someone else, or another task to be delivered before you can finish yours. Still, most of the time it does work. In my team it even became some kind of a recurring joke: “estimated to five days of work, so it’ll be done by tomorrow, right?”
🕓 End of the day, go home
Your day of work ends, you go home, stop thinking about deep work and do everything exactly like before. Right? Well actually, there are still a few tricks to know, that will help you for the next days deep work sessions. Don't be afraid, I won't tell you to work deeply on the evening, unless you want to of course.
First, remember when I talked about having a ritual to start the day of work? Well having one to end it can be very useful too. Cal Newport calls it the Shutdown Ritual. Be sure you answered important emails, update your tasks status if you need to, clean up your desk... (Cleaning up my coffee cup is an important part of this ritual for me.) In other terms, make sure that on the next day you'll be able to start working deeply as soon as you arrive. This is also important to prevent thinking about work on the evening.
Because here is the second important point: once you leave the office, stop thinking about work. This may seam obvious. Yet I know a lot of people who still receive (and read) work email or IM notifications after they left. I can understand why. It's kind of practical to feel updated about what happens, even if it doesn't lead to any action from you. But this makes your brain not fully dedicated to the non-work activity you could have on the evening or week-ends. Even if you just read notifications . You could not rest as much as you want to, and as a result not be fully able to focus on the next day.
So if possible, turn off all work-related notifications on your phone, and obviously don't work once you left the office.
Conclusion: what about personal time?
Far be it from me to tell you what you should do at home in the evenings and weekends. If you want to be fully proficient at deep work though, it's important to understand that it goes way further that what you do at work. We live in a world of constant distraction. Your cellphone vibrates several times a day, to show you a picture on Instagram, or the latest retweet of some people you follow on Twitter. But more disturbing when you think about it: we ourselves are constantly looking for distraction. Waiting in a line? We have a look at our smartphone and open Facebook, Instagram or Twitter. Sometimes we even know that there won't be anything new to see because we just had a look a couple of minutes ago. But it has became a reflex.
The thing is, this addiction to distraction is not here only when we do “nothing”. It is when we work, when we try to focus, or when we're having a discussion with someone. We try to ignore it and stay focused. But at the first moment of weakness it's so easy to switch windows to the browser and open Twitter or Reddit. Or without even noticing, we check our smartphone for new notifications. Without taking care of the person we're talking with.
If there was one point to keep from Cal Newport's book, I would choose this one: focus is an ability that should be trained. Imagine it as a muscle: if you don't train it regularly, it becomes weaker. And it's worse if you give it too much junk food (addictive and easy distraction). But, if you care about it and make sure to develop it on a daily basis, you'll be impressed by how quickly you can achieve things. Accomplish tasks, learn things, or just enjoying more your work or personal projects.
Cover photo by Avi Richards.
Check my latest articles
- 📄 A better learning path for React with server components (May 26, 2023)What if we took advantage of React Server Components not only to improve how we use React, but also how we help people learn it from the beginning?
- 📄 Display a view counter on your blog with React Server Components (April 24, 2023)A short tutorial with a cool use case for React Server Components, Streaming and Suspense with Next.js: adding a view counter on a blog, calling the Plausible analytics API.
- 📄 Using Zod & TypeScript for more than user input validation (March 8, 2023)If you have ever created an API or a form accepting user input, you know what data validation is, and how tedious it can be. Fortunately, libraries can help us, such as Yup or Zod. But recently, I realized that these libraries allow patterns that go much farther than input validation. In this post, I’ll show you why I now use them in most of my TypeScript projects.