04.11.2021

Notes on time management

productivity and time in one image

What worked...

While I was a student, I managed my course load by allotting time to individual courses. Time management was straightforward then. I had three criteria for deciding which courses I spent more time studying.

  • The course unit
  • My flair for the course
  • The relevance of the course to my career.

In general, courses with more units or more relevance to my career path or the ones I was unfamiliar with got more time; And vice-versa.

I could hold my focus for about an hour forty-five minutes before I grew bored or before diminishing return kicked in. So I decided to work in two hours unit of time, or Pomodoro - an hour forty-five minutes for studying interleaved with fifteen minutes break time.

It was a simple and efficient time-management strategy for studying.

The statusquo...

Recently, I have found my earlier strategy for time management applies only in part to the life I lead as a software developer. Nowadays, I must admit that there are more variables at play when deciding which tasks to prioritize and how to apportion time.

Imagine that on a typical day, I need to close out the three tasks listed below.

  • Complete the frontend feature to enable the finance team to classify issues and bulk-resolve them
  • Build an API using an unfamiliar tech stack
  • Finish a chapter on Data Structures and Algorithms

At a glance, one could identify three different factors that could influence time allocation for these three tasks.

  1. Urgency:  The first task seems pretty urgent. Customers would be unhappy with stuck transactions. Delivering this feature would enhance customer goodwill for my employer.
  2. Difficulty:   Before I read Brian Tracy’s Eat that frog, I was pretty much predisposed to postponing any task involving an unfamiliar tech stack for later. In a sense, the less familiar the tech stack is, the lower it is on my task stack. The reason is that I have to decide if I could approach the task by winging it — reading documentations and piecing together information from varying sources. Personally, as a perfectionist, I am not much of a fan of duct-taped work. If I could get all the time I wanted, I would prefer to take out some time and learn the technology stack before commencing work. What would I do when “Difficulty” meets "Urgency”?
  3. Interest:   There is always a task that I genuinely would love to dedicate all my time to if I could; Learning and reading.

There was a time when I tried to apportion some estimated time to tasks. “Oh! I will work on this API for three hours. Hopefully, I will get it done. Otherwise, I will move on to the next task." I often said to myself. In reality, I couldn't always keep to this. It was hardly pragmatic. There are always situations in which the only choice would be to sit through the tasks, ignoring time spent, and see them to completion.

Bugs are eccentric black holes that could suck up all my time and turn hours into minutes. "Everyone has a plan until they get punched in the face." Mike Tyson said this. While software development might be different from boxing, every software developer faces the menace of bugs.

It could be almost discouraging when, at the end of the day, you are looking at your to-do list with none of your tasks checked off; no thanks to the bug that not even the numerous pages of StackOverflow answers could help resolve. I have experienced the above scenario enough time to discount the approach of setting a hard and fast time slot to programming tasks.

Of course, there are also good days! There are days when I am on a roll; when I get all kinds of inspiration and easily spot nifty points of abstraction I could leverage save me a ton of coding time. I have discovered that efficient time management involves the management of oneself and demeanor through the highs and lows that come with everyday life – everyday software development.

What works...

I haven't discovered the perfect rule book for time management. While a sheer force of habit might make me reach for the time-allotment strategy, I always keep an open mind and make enough allowance to accommodate for things not going according to plan. As a rule of thumb, I start with high-value, high-priority tasks; make a reasonable estimate of time, and get to work. Regardless of whether I made record time or not, I am prepared to accept the situation and decide if I should keep at the current task.

To ameliorate burnout and diminishing returns that inevitably accompany long hours of monotonous work, I always find a suitable point to plant a milestone and then head off to do any other varied activity. Calm music helps me. I often resort to fiddling with my guitar and doing a sing-along with Ed Sheeran.

Effective time management technique is not something that needs to be written down in a cookbook. Rather, I think, it borders on keeping a good balance of both having a plan and exercising discretion in tackling the nuances that invariably show up when dealing with factors like task priority, difficulty, fulfillment, etc. Like art, you get better at it with time and practice. I remind myself that I am human. As humans, it's okay that I got tired and occasionally frustrated every once in a while. It's okay if there are days when I didn't tick off any task in my checklist.

As long as I always come back to pick up from where I left off, after having some break and rest, I believe I am doing well.

© Victor Ughonu. All Rights Reserved.

Developed by