By September 2, 2019

How Programmers Can Use Pre-Planning to Fight Procrastination

You may absolutely love programming. Yet every day you come to work and find yourself struggling to get started on your project. Instead, you feel a strong urge to browse the web or watch some videos on YouTube.

If you have been working as a programmer for a while, you have probably been in this situation before. Perhaps, you have even been wondering whether the profession of programming is for you. Could it be that you have lost all passion for it?

The good news is that the urge to procrastinate has probably nothing to do with the loss of enthusiasm. Very often, we procrastinate when we feel overwhelmed by a seemingly large task, especially when we don’t know when to start. Fortunately, there is a solution.

One of the best things you can do to fight procrastination is split a large chunk of work into microtasks. This helps increase your work turnover and stops you from becoming overwhelmed. However, although microtasks are an effective weapon against procrastination, the process of splitting your work into microtasks may also sometimes seem like a chore, especially if done first thing in the morning.

The good news is that you can pre-plan your tasks before you even start your day so when you start your work, you will know exactly what to do and how you will do it. This way, the urge to procrastinate will be minimal, and you will set up a momentum of productivity for the rest of your day.

How Pre-Planning Is Done

The process of pre-planning doesn’t have to be complicated. At its core, all it consists of is writing a list of small tasks, in chronological order, that you will work on the very next day.

There are several benefits of doing planning at the end of the day rather than the beginning. Compared to programming tasks that have already been performed during the workday, the planning action will seem a lot simpler, making it easier to convince yourself to do it. And your brain will already be in a productive mood due to the momentum from your prior work.

The process of splitting your work into microtasks is unlikely to be interpreted by your brain as a small and well-defined task. This is why it needs to be done before the start of your day.

But the tasks should not be just created randomly. For every task that is placed on the list, you will need to have a reasonably clear idea of what actions need to be taken to complete it.

Of course, not all programming tasks involve working with technologies you are an expert in. Sometimes, obtaining new information is a prerequisite to your progress on any given piece of work.

In this case, finding the information resources should be a part of pre-planning rather than the work itself. Instead of outlining a task to find out how the basic syntax of a particular programming language works, you should find the resources that provide tutorials on it as you are planning and then outline a task of completing those tutorials.

There are some situations, however, where it is not clear at all what approach to take to tackle any given task, so you can’t just pre-plan completing any specific tutorials or reading any specific pieces of technical documentation. This is where you can vaguely define the scope of the task, such as determining the best way of enabling a particular feature. But even then, it helps to pre-compile a list of resources such as books and websites that will give you some hints on where to start.

Instead of having “find out how technology X works” as your task, you may find some websites that talk about technology X, assign yourself reading every one of these pages as a separate task, and then assign yourself a task of building a proof of concept app to try this technology in practice.

The idea of pre-planning is that you never finish your day without outlining a list of actions for the next day. You can think of it as a mini Kanban or a mini sprint that lasts just a day.

The Importance of Momentum

The biggest value of pre-planning is that it sets the momentum of productivity for the day.

The first Neutonian law states that the body in motion stays in motion until an external force is applied to it. This is, for example, how momentum happens when you roll a ball on a flat surface. It will keep rolling for a while until the force of friction gradually slows it down to a standstill.

The same principle applies to productivity. If you start your day by aimlessly browsing the web and checking your social media feed, it will then be hard to switch into a productive mode. If, however, you start your day productively, maintaining high productivity level will be easy.

Although many believe that willpower works like a muscle and gets exhausted, there are some who are convinced that willpower can be inexhaustible if you maintain the right momentum.

Jocko Willink, a former Navy SEAL who became a motivational speaker, swears by this idea. He wakes up at 5 am every morning and spends the whole day exercising, working on his business, and practicing Brazilian Jiu Jitsu.

He says that not slipping on any of the mandatory tasks he has set for himself in the morning makes doing the right things in the evening effortless. For example, if he gives in to the urge to quit at any point during the day, it will be hard for him to resist the urge to have some unhealthy food for dinner. Otherwise, if the day is spent as he planned, he will automatically want to grab a healthy snack and won’t even contemplate the thought of getting an unhealthy meal.

Regardless of whether willpower is a finite resource or not, the power of momentum definitely works..

Another prominent Navy SEAL, Admiral McRaven, has talked about the importance of making your bed every morning. There is nothing inherently good or bad about making your bed, but performing this simple and well-defined action will be a small win that you’ll start your day with, which will set you up for other small wins throughout your day.

Having a list of small and well-defined actions at the beginning of the day serves exactly the same purpose. Each action you complete gets registered by your brain as a small win and increases your motivation to do more. This is why it helps if those actions are pre-defined well in advance so you don’t have to think about what to do and can just get on with doing them.

The State of Flow

Any programmer is the happiest when he or she is in the state of flow. This is a state where a person gets completely absorbed in their work and all the actions become effortless and logically follow one another.

Unfortunately, the mega-productive state of flow cannot just be entered instantly on demand. Normally, it takes around 15 minutes of uninterrupted productive work.

And nothing makes prolonged uninterrupted work easier than having a list of small well-defined tasks following one another where you don’t have to stop and think about what to do next. If those tasks are related to the same feature and are organized in a logical sequence, it’s even better. This will help to minimize friction, as you will not have to mentally switch between unrelated activities.

Starting on your productive tasks as soon as possible eliminates the energy-draining friction of context switching and will help with getting into a mega-productive focused state of mind.

When you start, you may feel some internal resistance, as the work ahead may seem like a chore. However, it will just be a small chore, so it will be easy to convince yourself to do it even if some willpower needs to be applied.

After a few minutes though, you will not even have to exert any willpower anymore. And you will not even have to think about the list of tasks. Your work will just flow from one task to the next automatically.

More Is Better

When you plan the list of tasks for the following day, it’s always better to overestimate how many you will have to do than underestimate. There are a number of reasons for this.

First of all, it may save you from needing to do the planning session on the following day. If the number of tasks left to do on any given day is roughly equal to the number of tasks you’ve already done so far, you can just continue working through your list on the following day. As before, you will know exactly what to do when you start your day so the flow of your work will remain uninterrupted.

Secondly, it’s way more efficient to have a single planning session related to a single piece of work instead of splitting it into several planning sessions. When you start a planning session, the big picture of a larger piece of work ahead of you will still be fresh in your mind, so you will be able to define a full list of sequential microtasks from start to finish.

For example, you may have an idea of how a mobile application should be structured and how its different components interact with each other. Even if it takes more than a day to complete this application, it’s better to put your ideas on paper immediately while the big picture is still in your head no matter how long it would take to complete the application.

Even when you have your initial planning session, you may have some very good ideas of what logical steps will be taken toward the end of your work on a particular feature of the application. However, if you don’t expect to reach those steps the following day, you may forget them if you choose to only plan for a single day ahead, and it may be hard for you to come up with new tasks to replace those. Therefore, it’s always better to write them down as soon as the idea pops up in your head.

You Don’t Have to Follow the List Religiously

One important feature of this type of plan is that you don’t necessarily have to follow every step of it exactly. There may be times when, as you progress through your list of tasks, some new information becomes available, and you’ll think of better ways to achieve your goal than you originally planned.

The main purpose of pre-planning is to ensure you never start your working day without having at least a few items to get started on. Its purpose is not to prescribe the exact way of doing things for the rest of the day.

As you get into a productive mental mode and gain momentum by completing a number of small tasks, you may adjust the remaining workflow if you see better ways of organizing it.

Writing the adjustments down rather than keeping them in your head is always better. This is because the productive mindset doesn’t always last.

If at any point, you once again have an urge to procrastinate, you can look back at your updated list and get back on track by picking up with the next item to do. 

Alternatively, it may be hard to recall what the exact adjustment to your workflow was supposed to be, and trying to do so may make your urge to procrastinate even stronger. The exception to this is when you are in the state of flow. If you find yourself completely absorbed in your work, and you don’t even have to look at the list of tasks, then it will be way more efficient and emotionally satisfying to just focus on your work and completely forget about the list. You can always adjust your list later when you are no longer in the state of flow. 

However, by that time, you may find that quite a few items from your list have been completed already.

Fight the Urge and Become a Better You

The urge to procrastinate does not necessarily mean that programming is not the right profession for you. Procrastination is something that even the best programmers have to fight, especially as mobile apps, social media, and various other web apps are explicitly designed to grab as much of your attention as possible.

What makes the urge to procrastinate harder to resist is the combination of the perception that a task ahead of you is way too large and lack of clarity of when to start. However, there are two effective weapons in your arsenal that you can utilize to eliminate both of these factors: microtasks and pre-planning.

We have previously talked about microtasks as being effective at splitting large chunks of work into pieces that are small enough that convincing your resistant brain to do them becomes a lot easier. Now, we have talked about how pre-planning your microtasks ahead of the actual work adds clarity on where to get started and sets you up for productive momentum.

Of course, having to exercise some degree of willpower will always be there. You can’t be enthusiastic about your work 100% of the time. However, knowing and internalizing a number of effective productivity tricks such as microtasks and pre-planning will help you to significantly reduce the amount of sheer willpower you’ll have to exercise.

About the author

Fiodar Sazanavets

Fiodar is a senior full-stack software developer specializing in distributed cloud-based ASP.NET applications. He has also built Android apps and PHP websites. Fiodar is the owner of, where he shares his knowledge of the tech world.