As programmers we want to do work that pushes our cognitive abilities to their limits and puts us in the state of flow. We enjoy the feeling of joy we get after solving a hard problem. But many of us rarely experience that as we are often too distracted and consumed by mundane tasks.
In this article I will talk about how dividing my work into two categories, deep and shallow, and changing my daily routine to respect that, increased the amount of fulfilling work I do and made me more productive.
Two Categories of Work
I divide my work into two categories: deep and shallow.
Deep work pushes my cognitive abilities to their limits, and it requires a distraction-free concentration. It is often creative in nature. To do deep work I need to doodle, wonder around, and talk to myself. Deep work often results in “Ah ha” moments, when I have finally figured out how all the pieces fit together.
Shallow work, on the other hand, is noncognitively demanding, logistical-style tasks, that I can do when distracted. I can do shallow work pretty much at any time of the day, even when I am tired. The amount of shallow work I can do is more or less a function of time.
The names Deep Work and Shallow Work come from the book Deep Work by Cal Newport. A friend of mine recommended me this book a few week ago. And after reading it, I realized that I had been practicing what the author is advocating for some time, but I used a different terminology. I used the terms Demanding Work and Simple Work, but I found the depth analogy more appropriate. So I’ll use the book’s terms in this article.
Why Should I Care About Deep Work?
Many professions do not require large amounts of deep work, but creative professions, such as programming, do. The joy of programming is not typing away streams of characters while listening to music and being half asleep. The joy of programming is solving hard problems.
I strive to maximize the amount of the deep work I do for a couple of reasons. First, there is some evidence suggesting that deep work creates more value. And I feel good knowing that my work helps my company, my community, and my career. But the most important factor is that solving hard problems, while being in the state of flow, is one of the most enjoyable things I have in life. So no surprises, I try to maximize that.
Schedule Time to Do Deep Work
Deep work requires such a high level of concentration that I personally cannot do it in the office. Even someone passing by can distract me enough that a fragile thought of an elegant solution just vanishes. I use noise-cancelling headphones, and they help to a degree, but it is still not enough.
The situation would have been different if I had a personal office. But since open offices are all the rage, it is not going to happen any time soon. I accepted it. That is why I do most of my deep work at home before reaching the office. I do it in the morning, from 7:30 am to 10:00 am, right after I have done my morning run and had a light breakfast. During these two hours I do not check email or social media, I do not listen to music. I just work.
Collect Information the Day Before
Since I have only two hours in the morning, which is pretty limiting, I do not spend them on doing research or googling. All this is done the day before. I google, take notes, save links, so that the next morning I can use all this information efficiently. Collecting information is valuable, but it is not a creative activity, and it does not require a high level of concentration. So it should not be done during the deep work hours.
Do Not Polish
I also do not spend my two hours polishing the emerged solution. Often the result of my morning is a rough idea written down on a piece of paper, or a spike implementing an interesting feature top to bottom. I spend the rest of the day reimplementing my morning solution in a careful way, with tests and documentation. While doing this, I can come across another hard problem that requires creativity to solve it. If I cannot crack it in twenty minutes, I just write it down to solve the next morning.
Drink Coffee to Maximize Your Peaks
This is what my productivity looks like on a typical day when I do not take any stimulants. And by productivity I mean an ability to solve hard problems in a reasonable amount of time.
I’m very productive in the morning, and have another spike of productivity at around 4 o'clock in the afternoon. A couple of years back I would do what most people do every day. I would drink coffee to boost my productivity when I felt tired. This would make my lows a tad higher, but, at the same time, my highs would get a bit lower.
When I started partitioning my work into the deep and shallow categories, I realized how inefficient that way of consuming caffeine was. Since I need to be at my very best to do deep work, I should take stimulants to maximize my efficiency during these periods. True, I get even less productive during the rest of the day, but it doesn’t matter. I can do most of the shallow work while being really tired anyway. Remember, the amount of shallow work is more or less a function of time. So these days I usually take four or five shots of espresso during my morning hours, and another two before the productivity spike in the afternoon. And the result looks something like this:
I am uber productive during my deep work hours: my thoughts are fast and my mind is clear. But I can only do simple work during the rest of the day.
Dividing work into two categories, deep and shallow, allows me to schedule work more efficiently. Every morning I do the most challenging tasks in a distraction-free environment, where I can push my abilities to their limit. And I spend the rest of the day finishing things up, collecting information, and interacting with co-workers. To achieve this I had to change my morning routine, my commute, and my coffee consumption habit. But it was totally worth it. I feel I accomplish more and, most importantly, have more fun while doing it.
If you found this blog post interesting and want to learn more, check out the book as it covers this subject in depth.
Follow Victor on Twitter to learn amore.