I’m a developer and I’m procrastinating
Not a big secret, that developer workday normally consists of a small fraction of tasks that help to grow yourself and the majority of tasks that aim to strengthen the existing product foundation: bug fixes, technical depts, improve existing behavior, etc.
In a normal product evolution lifecycle, you can’t choose only tasks that are interesting to work on, you must work on tasks that strengthen your foundation as well, but both of these tasks types have different “satisfaction” prices.
So how to keep enthusiasm on a high level even for activities that are not very comfortable for you? In my developer career, I had many periods when switching from “passionate” to “boring” tasks slow down my performance twice. As a performance-oriented engineer, I started using agile practices to observe and retrospect myself and detect the reasons for such a big diff.
Subconscious sabotage
First of all, I compared my workday for both types of activities — working on “boring” and “interesting” tasks.
Even when I know that I need to process only routine today I’m not late with the beginning of the workday. Relatively. Yes, I can spend more time drinking coffee, talking to co-workers than usual. But years grown habit helps you to start relatively on time.
Lunch, regular meetings, end of the working day — no anomalies here. There were no relatively time-eating activities that can explain reduced productivity. I worked as usual.
But, I had more than 20! context switchers this day. This is about 5 times more than during “normal” engineering time. Why does it happen? I realized that I subconsciously changed priorities for all my daily tasks — literally, everything became more important than my planned work. As a consequence of this change — the process of the task delegation was broken. Having efficient and experienced team — you anyway was the first who helping to resolve any income.
Subconsciously I delayed starting boring tasks as soon as possible by switching to other, as I thought, more important activities for now. Also by any good chance, I switched back to any other activity. Was it efficient? Not too much as I executed normal teamwork simultaneously rather than delegating the right question to the right people.
This was one of the dozens of such observations — and in my personal example, most of them had the same nature. So eventually I developer personal instructions on how to overcome this.
Start your workday by creating a TODO list
Yes, use lessons learned in college or high school — you need to know in advance a strictly defined sequence of instructions to complete for the current day. A minimum number of instructions, to be precise. The only difference — you are also the organizer of these required daily activities.
Include only a limited number of tasks that you MUST complete. Definitely, your daily activity can affect this list, and some other tasks will emerge or existing tasks will be removed. But if you don’t have the reason for canceling an existing task — you MUST complete it. During the workday, at home, at midnight — it does not matter. If the task is added — it MUST BE COMPLETED.
I know from my personal example — it is hard to keep only relevant activities and keep only the amount of work you can complete in one day. The first week I was highly overloaded because I was sure the task has the only price of its execution, but this is not true — the task has a price of a context switch, preparation work, planning, and scoping. Only in 2 weeks, I prepared my first plan. And this plan was relevant to the requirements of this day and optimistic in execution.
I use Microsoft To-Do to manage my daily work, but there are dozens of other task managers in the network to use instead.
Reward yourself
If the daily list contains only “boring” activities — your productivity will decrease each next one. Eventually, all benefits of this planning will go away. Try to pair opposite activities and “reward” yourself after the completion of a “boring” task. Your “reward” is not only a development activity of a different type. It can be reading time or a hobby time. Give your brain some time to relax before the next “boring” activity.
Split big tasks to set of small and clear sub-tasks
Prefer to keep it as part of the task definition activity, but not a strong requirement. Complexity always frightens — just divide and conquer. It is really much easier to plan and work with complex staff when you have a set of atomic finite actions that solve the whole problem in general. All you need — just properly plan these individual actions.
I use the next rule in my personal planning — if I can’t execute this task in 1 hour then I split it. Use this rule again until each of my tasks requires less than 1 hour to execute.
I do this for a predictability reason. Same as “story points” in estimation process — as bigger as less certain in timing. So use this “measure of uncertainty” in the daily planning process. I bet — you will be surprised by the result.
Do not change the order in the TODO list
To be protected from delaying boring tasks for infinite — just NEVER change task priority once the task list is prepared. Before submitting your daily activity — re-read one more time and accept that the order is right. Never change it after.
Definitely, your daily routine can produce other tasks that must be included and executed today. If possible — put them at the end of the list. This helps to keep order as designed initially and avoid the temptation to postpone the current one.
Focus of task execution
Once the task list is prepared — all you need is just to execute each task sequentially.
When started — isolate yourself for some time to be fully dedicated to this particular task. No other distractions: slack, email. No coffee breaks and consultations. Just choose the proper time range, e.g. 20 minutes to switch yourself to a fully detached state. This helps to keep your mind focused on solving a particular task. But, do not extend this detached state to infinite — always use only reserved time. Not enough? One more round. But in general, keep your mind focus on a daily plan, but not on a particular task.
Try to use “Pomodoro” practice to keep yourself focused, but do not extend your focus time. There are dozens of online and offline Pomodoro tools available. Use the best suites for your preferences.
Always complete TODO
Never move tasks to the next day. If you planned to read 50 pages in a new book today — you must read 50 pages, not 40. If you will try to cheat or move once, eventually you realize that you don’t really have scope and priorities as everything can be moved or changed. Always complete all tasks.
Start with the small number of required tasks and increase the count for the next day if you are comfortable completing more. Not a reverse order. Don’t put yourself under stress on the first days of exercise. This prevents the growth habit of doing it regularly.
Eventually, you will find your threshold. If you think it was much more than you can handle — complete all and reduce plans for the next day and teach yourself not to extend the task list to overwhelm yourself. Do as many tasks as you are comfortable to compete. Believe me — your performance anyway will be times bigger than you had before.
Conclusion
In this post, I shared my personal tactics to be productive not regarding which type of work I’m doing. But the main motivation of doing it — be predictable to yourself and be measurable to yourself. You can always compare day efficiency with other days and find reasons for your anomaly. This helps you to understand your weaknesses and your strengths and make adjustments to correct them.
And I can say for sure — analyzing yourself is a really interesting process. You can always justify anything (reason of your slowness and demotivation), but when you have your own statistic data — it’s much harder to do it forever.