Context switching is the act of working on several tasks in parallel. More specifically, working on one task and switching to another task while not finishing the previous task.
Constantly switching between different tasks requires your brain to jump from one thought process to another. Developers often prefer long blocks of uninterrupted work to get into a so-called state of flow or deep work. For that reason, context switching prevents developers from reaching this state of flow.
Some of the most common reasons for productivity loss are:
- Interruptions at your workplace
- Switching between tools & apps
- Balancing between personal and team productivity
Let’s take a look at each of these causes and possible solutions.
Organising a space for you to work without distractions is the number one step to reduce context switching and increase productivity.
Grouping similar tasks
I’m a huge fan of grouping similar tasks because it helps me reduce context switching. For instance, I prefer to block time in my calendar to answer all my emails or Slack messages at once.
Organising TODO lists
Another great approach to organise your work in TODO lists. A TODO list helps you to list all tasks and clear your mind of any unfinished ones. On top of that, a TODO list is an essential tool to prioritise your tasks. It will help you to focus on the most impactful ones.
Turning off notifications
First of all, let’s talk about notifications and their disruptive effect on deep work.
Imagine you are working on a new feature, and a Slack notification pops up. You decide to ignore the notification and continue work on the feature. However, your mind briefly switches its context to analyse the importance of the notification and determines if you should take immediate action.
In fact, we can label this as context switching even though you decide not to engage with the notification. Yet, your mind gets distracted by the notification, which disrupts your flow state. Therefore, the single best tip to reach a deep state of work is to turn off all notifications.
For devs, context switching often occurs when switching between different tools. Just think about the number of times you leave your IDE to access a project management tool like JIRA, Trello, or Monday.com.
Each time you create an issue, you need to switch between tools.
Luckily, modern tools solve this problem by helping you stay in your IDE, e.g. VS Code or JetBrains.
Stepsize is an editor-first issue tracker for VSCode, Visual Studio and JetBrains that allows you to create, bookmark, and prioritise codebase issues directly in your editor. Therefore, it’s an excellent tool to reduce tool switching and keep your mind focused while improving your codebase health.
Moreover, you can collaborate on the codebase issues with your colleagues by:
- Creating issues from the IDE
- Seeing all relevant issues linked to a particular piece of code
- Prioritising and resolving issues
This will significantly reduce context switching and improve your team communication.
Often, developers struggle to balance timely communication and context switching. As we already know, context switching has a negative impact on your productivity because it prevents you from reaching a deep state of work.
On the other hand, when colleagues ask a question, you want to help them promptly. For example, a developer asks for your assistance and might be blocked if you don’t help him. But should you sacrifice your flow state to help your colleague? Well, the answer is somewhat divided.
Try to find a balance between responding on time and prioritising your work. Asynchronous communication has become a popular approach to tackle this problem. Instead of calling a meeting for each problem, communicate with the involved people and resolve it via text-based communication such as Slack. Moreover, it would help if you blocked time in your calendar to reach a flow state and leave time slots open for meetings or handling questions from colleagues.
For instance, you can block two slots of three hours of deep work and leave two slots of one hour for asynchronous communication. This is one approach to prioritise your work while helping colleagues in a timely manner.
Here are a couple of fun apps to make your journey to productivity more fun:
Forest: Planting distracting-free trees
Forest is one of the most simple yet effective tools to reduce context switching. This shows again that a simple tool can do wonders. You can download Forest as a mobile application, but you can also install it as a Chrome extension in your browser.
Forest helps you to stay focused by planting virtual trees. If you stay focused, the tree will grow while you work. However, when you get distracted and open blocked websites or your phone, the tree will die. The cool thing about this app is that you can earn virtual coins in Forest that you can exchange for planting real trees!
Habitica: gamified habit-building
Habitica takes habit-building to a whole level by adding gamification to the mix. First of all, you have to define what goals you want to achieve or what tasks you want to accomplish. Each time you accomplish a task, you can check the task off in the app. It allows you to earn experience points and gold tokens in the game. These gold tokens can be used to buy equipment and some items, as well as custom rewards.
It’s a great application that makes habit-building fun and engaging, even involving your friends or finding people working towards a similar goal.
Many developers struggle with context switching. Nowadays, developers have to use many different tools in their day-to-day tasks. IDE-based tools and extensions can help you to reduce context switching.
On top of that, the most important lesson is to block dedicated focus time. During these focus blocks, you should turn off all notifications to avoid them interrupting your flow state. For many developers, it’s a process of trial and error to find the right tools that can help them to work distraction-free.
P.S. I wrote an article on 7 VS Code extensions that will help you stay in your editor to avoid context switching - check it out!