For software engineers having time to focus exclusively on the single most important task is typically the most efficient way to solve a problem. And while there are steps we can take to optimize our work and our teams for uninterrupted periods of focus, the reality is that life often gets in the way of these plans.
As a result, we've found that it's important to embrace context switching. To learn how to continue delivering high quality results when we don't have the luxury of uninterrupted concentration. Context switching gets a bad reputation, but in reality most days get broken in to small blocks of time, so learning to use that time effectively can delivery significant productivity wins.
Here are a few techniques we've found particularly valuable:
Breakdown large tasks into small executable steps.
Doing this not only provides safe stopping points throughout your work on a project, but it also ensures you have a solid understanding of the full scope of work. This will also help you avoid the dreaded "rabbit hole," an all too common culprit when it comes to wasting time.
Find a personal to-do/task management app that works for you.
Multiple members of our team love using Todoist to manage both work and life related tasks. The key is finding something that allows you to quickly capture tasks in the moment without breaking your flow. Once those tasks are out of your head, you're free to organize and prioritize them when it makes sense for your schedule. Having a personal backlog of is a great way to make sure you're not wasting time trying to figure out what to work on next.
Using Comments
Drop a TODO comment for code you need to revisit or leave a test in an intentionally failing state when you have to turn focus to another item. Effective mid-development documentation and pointers like this help to quickly regain your train of thought and ensure you do not loose track of important details that need to be addressed before committing your changes.
While this is certainly not an exhaustive list, we've found that these small steps have an outsized impact on our productivity. Learning to context switch has helped us deliver high quality work in a more consistent and efficient manner.