Time management for Software Engineers
Managing time effectively is a crucial skill for software engineers. However, time management alone isn't enough. In the high-cognitive-load world of software engineering, energy management is equally important. Let's dive into how you can better manage both your time and energy to boost productivity and career growth.
The Challenges of Finding Time
A common challenge for software engineers is that time can often be an adversary; the complexity and non-linear nature of our work make accurate time estimation difficult. The same thing happens when trying to carve time for learning or work on new initiatives. Yet, these are the very activities that can propel your career forward.
The strategies shared in this post are practices that have helped me commit to doing one thing at a time and stop myself from checking email or Slack every few minutes. Over time, I’ve learned to trust that the more I can focus on one thing at a time, the more I can learn, act with intention, and produce the best work I can do.
Energy Management Over Time Management
We often focus on managing our time, but energy management is just as critical, especially in a field where cognitive load is significant. For instance, spending 20 minutes learning a new technical concept can be far more demanding than an hour of administrative work.
Cal Newport, in his book "Deep Work," defines deep work as the ability to focus without distraction on a cognitively demanding task. Deep work allows you to produce your best work, master hard skills quickly, and find meaning in your daily efforts by honing your craft.
To manage your energy effectively, start by identifying the types of tasks you perform daily and assess the energy they require. This could be due to cognitive load or what I’d define as emotional load.
Emotional load refers to the mental and emotional effort required to process feelings and interpersonal interactions while performing tasks. These include, maintaining focus while being in a pressured situation or managing your feelings in a difficult conversation.
This is an example of how I’d categorise my tasks and how I would rate them.
I would first define both the emotional and cognitive load, then set the required energy level to the higher of the two ratings.
Don't overthink the ratings for each task. Begin with your initial estimates and refine your understanding as you gain more awareness of your energy levels during different tasks.
The activities shown above are quite different types of activities. So what happens for a software engineer who is programming most of the day?
The type of task may not be the only factor at stake here, in the case of software programming as an example, the cognitive load for a junior engineer who had just joined a company may not be the same as a very experienced engineer who has a lot of experience in the same codebase. So in those cases it’s important to consider your level of Task Relevant Maturity. i.e. how familiar are you to that specific task.
Low TRM - You’ve never done this before and/or there is no procedure for it
Medium TRM - You’ve completed similar tasks in the past and have an idea of what good looks
High TRM- You’ve completed plenty of similar tasks in the past with good results
An example of activities performed by a software engineer
Time boxing
The pomodoro technique is a time management method that breaks down work into small intervals, separated by short breaks. I’ve started using this a few months ago and it’s been a life changer. To summarise pomodoro:
Each pomodoro lasts 25 mins, folllowed by 5 min pause.
You address a single task at a time
Zero distractions. No notifications, no context switching. Full commitment to the Pomodoro.
Setting just one activity at a time gives you permission to not think about anything else, only you and the activity for 25 minutes. Any other thing, messages, emails, can wait 25 minutes.
Regular pauses allow you to regain focus and sustain deep work longer. I never used to be a person who would take a 5 minute break and after starting to use pomodoro’s I’m a much more focused and my mind is less cluttered.
Crafting an effective schedule
The author of deep-work did some research on how long can professional musicians sustain deep work activities, and the answer was about 3 hours. Recognising this allows me to allocate my energy wisely, knowing that I can handle about 5-6 pomodoros on energy-demanding tasks per day. It might not be the same for everybody but you can use it as a starting point.
Here’s an example of how I translated the energy management table into time management chunks.
I make sure to include these Pomodoros in my calendar as I plan my day. The rest of the day is a bit unplanned and I use it for admin tasks, emails, meetings, or other low-cognitive work.
Consistency is key in both time and energy management. You can start with only setting a of couple pomodoros for your most high demanding tasks and then see how it goes. You’ll notice how you’ll start instantly setting priorities, being more intentional, and find flow while doing your craft.