How I Easily Code For 8+ Hours Without Feeling Tired (My Productivity System)
I've been coding wrong my whole life.
I thought it was okay to just sit down at my desk, open my laptop, take a task from my to-do list, and code it until I felt tired.
But in reality, this style of work always killed my productivity levels after 2-4 hours of coding. I felt so tired that I didn't want to do anything except different low energy tasks (like code review).
Today I can code 8+ hours without feeling like crap after.
What has changed?
My approach to work.
After 62+ self-development books, dozens of articles and studies about productivity, and my trials and errors, I have created a productivity system that helps me to code, write, create, and live at my maximum capabilities without procrastination, tiredness, and brain fog.
Here it is.
My Productivity System
My productivity system stays on 3 main pillars:
- To-do for tomorrow.
- System 69 (!)
Let's look closer at each of them.
Everything starts with a schedule. What, where, and when I do.
My schedule looks like this:
I’m using a whiteboard to constantly remind myself of what I should do at the exact moment.
I always neglected to create a schedule.
“I know what and when I should do!” I told myself.
But in reality, I always forget to do or overdo my daily activities (even with a habit to do them).
For example, when I woke up at 7:00 in the morning I knew that I had 1 free hour before my work. In that hour I wanted to have time to do a morning ritual (eating, stretching, showering, breathing) and to read for 30 minutes. But many times I could have breakfast in the morning for an hour, forgetting to take the time to read. Even if I kept in mind that I have to read for 30 minutes every morning. I overdone my activity (breakfast) and stole my time from another activity (reading).
I have also noticed that without a schedule it takes a lot of time to decide what I should do next. I could finish the workout in the afternoon, take shower, sit at my desk, open laptop and then decide which task I should pick next within 10 minutes. If we count how much the same decisions I made during the day, 10 minutes becomes 60 minutes. One hour! It’s a lot of time.
The other thing is that in the process of deciding what I should do next, there is always an angel and a demon sitting on my shoulders and "helping" me decide whether I should work on the essential things to me or do some light work, or even take a break to relax. I often had to use willpower to force myself to do the "right" things without a schedule.
“If you waste resources trying to decide when or where to work, you’ll impede your capacity to do the work.” – Guardian
When I made the schedule, these problems disappeared.
Now, I always have time to do what I have planned.
I always know what I should do next.
I don’t need to use willpower to force myself to do essential things.
Schedule puts my decision-making process on autopilot.
If you want to create your schedule I recommend using Google calendar for it, so you can easily edit or share your schedule with someone else. Also, I recommend having a schedule on some piece of paper or whiteboard, to always remind yourself of what, where, and when you should do.
To-Do For Tomorrow
If the schedule helps me decide what, where and when I should do, the to-do list helps me decide exactly what I should do next.
I could spend the "perfectly planned" day, but not do what is essential to me.
For example, when I opened my schedule and saw a “Deep Work” block from 08.00 to 09.30, I could do deep work, but it didn’t guarantee that I would be doing important things during it and not some light work.
Our brain is always trying to spend less energy and will do everything to convince you not to waste energy.
That's where the to-do list comes in.
It helps me even more to put the decision-making process on autopilot and spend less time and cognitive resources on it.
It guarantees that I will do only essential things (most of the time).
My to-do list is simple, I use a plain paper notebook to make it and Notion as a digital copy (I use Notion for everything, but that's for another article)
When I create my to-do list I create it in the evening for tomorrow day.
When you plan your day in the morning, you are thinking about every task that needs to be done today. It is good when the task is clear and simple and you know what to do (like “code review last commit by John”). But when you don’t know what exactly needs to be done, it will take time to figure it out. Like when you know that you need to write an article, but don’t know about what. It will take time to research your ideas and choose the right topic to write about.
And in addition to the fact that such tasks take time to research, there is a chance that you will fall into the trap of your thinking process (when you start imagining results, details, processes, and other various things related to the task, and you spend 5, 10, 15, or even more minutes on it).
The process of creating a to-do list in the morning wastes your productive morning time, your cognitive resources, and has a chance to distract you.
That’s why I create a to-do list for tomorrow and not in the morning.
When I started coding I did it like this:
- Open laptop.
- Open Code editor (VSCode).
- Pick a task.
- Code until I feel tired.
- Take a break (spending time on social media).
Until I read about Pomodoro.
The Pomodoro Technique is a time management method when you break down work into intervals, traditionally 25 minutes in length, separated by short breaks. For example, 25-minute coding and a 5-minute break after. And divide the entire workday into such breaks.
25 minute coding.
5 minute break.
25 minute coding.
5 minute break.
25 minute coding.
etc. until the end of the working day.
I tried it and it worked, but not as great as I imagined. I definitely became more productive, but for an additional hour. And I found the 25-minute work intervals are too short for me (It took me 5-10 minutes to activate the flow state, so I couldn’t perform a "deep work" for more than 15 minutes with such intervals).
So I went further.
I found the 52 + 17 rule.
52-minute of work and a 17-minute break. Similar to the Pomodoro Technique.
I tested it and it worked better for me than 25+5 intervals. Now I could work productively for two more hours, but I still felt like crap after a workday.
So I didn’t stop on the 52 + 17 rule.
I started researching more about productivity and motivation and learned about effective breaks.
When most people hear the word “break” the first association is “doing anything except work.” Like scrolling Instagram feed, chatting with friends, or watching Youtube.
Technically these are all breaks, but not effective ones.
The main sign of an effective break is that it gives you energy, not takes it away.
Example of my effective breaks:
- Light workout.
- Walking (without the headphones).
- Breathing (box breathing, Wim Hof method).
After I learned about effective breaks, my workday became almost perfect - 52 minutes of work (45 minutes often in a flow state, because I need 10 minutes to reach it) and 17 minutes of an effective break that gives me energy.
Everything worked perfectly, and I have to stop there…
But I went further.
I was obsessed with the idea to make every hour of my work the most productive hour on earth.
And I think I did it.
One thing that kept me from being in a flow state all the time was distraction.
For years I didn't pay attention to it. To all the notifications that pop-up on my phone, the noise of people around me, the hundreds of open tabs and windows on my laptop, all those distractions.
I set a timer for 52 minutes, started to work, got in a flow state, and then BAM! A new notification pops up. And I like, “What’s in there?”
The flow state is gone.
Focus on the task is gone.
Productivity is gone.
One tiny notification instantly ruined my productivity.
I never paid attention to it until I started to deep dive into the personal development field (I wish I started earlier).
Now, when I work I turn off all notifications, tell people to not bother me, put on my headphones (if I work in a noisy environment), close all the browser tabs that are not related to the task, and do everything I can to avoid distractions during my working hours.
So far so good, my system seemed perfect.
But can we go further?
The last piece of the puzzle is NO multitasking.
When I hear today that someone can do multitasking, I smile.
Multitasking is not working.
There is only one study that shows that 2.5% of subjects can do multitasking with the same efficiency levels as performing one task at a time.
Other 97.5% are not.
So when I pick some task and start doing it, I focus only on it.
One task per time.
This is a rule I follow during my working hours.
Okay, now we have all the pieces of System 69.
Let's glue them together and see what we get:
- 52-minute of work.
- 17-minute of an effective break.
- Remove all distractions.
- Focus on one task at a time.
This is my System 69.
In the end…
These are the three pillars of my productivity system.
Literally, you can use my productivity system to successfully do any kind of job, not just coding. But use it wisely.
Have a great one!
– Nick Bull
And also before I forget, every week I send out a "3–2–1" newsletter with 3 hand-picked articles from me, 2 web development guides from others, and 1 useful Tweet I enjoyed.
Really well written post. I had a journey similar to this where I found that the Pomodoro technique doesn't work for me because is too short a timeframe.
But judging by the title I think the important part is not if one can or cannot code for that much time it's more if one should do it at all. After all, productivity is not doing more things in a certain span of time. It's about doing what we're already doing in less time.
Also, if you want to go further (because it can be done) checkout Steven Kotler's work on the flow state, maybe looking at one of his videos or reading one of his books like "The Rise of Superman" or "Stealing Fire"
Do you suggest listening to any type of non distracting (such as lo-fi) background music while coding?
There are 2 situations:
When you're coding on "autopilot" (you know what you need to code and how to code it, what you just need is write it)
When you're coding what you don't know how to code and you need some time to think about how to do it in the process of coding
In the first situation listening to music doesn't how fast and good I write code. In the second situation, listening to music makes it harder for me to think.
Try what works for you.