Development

Effective Tips for Context Switching

Tobby Hagler, Director of Engineering
#Development | Posted

Everyone feels the most productive when single-track focused on one project. However, we often find ourselves stretched thin across multiple projects, and our focus tends to suffer for it. I’ve decided to share a number of tips and tricks to help make the most of multi-focus situations. 

See this cartoon found at This Is Why You Shouldn't Interrupt a Programmer for a great illustration why context switching can be hard for software developers. 

Sometimes context switching is inevitable. Instead of fighting it, let’s explore ways to make the most of it. Broken focus is inevitable. The goal of all of this will be to get our brains into that same frame of mind when we were most productive, as quickly as possible.

Think in terms of weeks, not days

We have limited time. Many of us think about what we need to do today, but the better approach is to think about what we need to accomplish this week. Our projects seldom care about day-to-day accomplishments; rather, they are most concerned with what can be completed this week or even this sprint. Shifting our mental timeframe helps focus on what we can get accomplished and when.

Plan what we will get done this week, and break it out by day or even by half-day. Sometimes, putting off a few tickets until tomorrow will help better concentrate on what we will accomplish today. With one problem out of the way, we will be more free to focus solely on the next problem.

Know where we are in our projects. Be mindful of sprint deadlines, project launches, and other driving factors. This lets us know if we should focus more energy on this project (which has a deadline this week) than that project (which still has a few sprints to go before its next milestone). Being thoughtful to the needs of our teammates also helps us to focus where were should best direct our efforts.

Priorities are essential

Let’s be realistic. We will only accomplish so much today, and only so much tomorrow. It’s important to prioritize what we will do today, as well as every other day this week. Once we have a good sense of our priorities, we need to map out when each of our tasks will be accomplished.

A good way to visualize this is to divide a day (removing meetings, of course) into a 3x3 grid of our time. Each row represents a substantial part of what we can accomplish in a single day, based on how much time these things will take to accomplish. Each row represents approximately ⅓ of the day’s total output.

  • The first row represents the one big thing we will do today.

  • The second row represents three medium-sized things we can complete today

  • The third row is a collection of all the small things we can do in-between all the other things; typically this is 5-7 small-sized things.

Picture of a grid with examples of day-to-day accomplishments we can achieve.

The key to this prioritization scheme is that we need to remember both what is critical (timely) but also important (doesn’t take much time, but needs to get done). This example is 33/33/33, but for some people, perhaps it’s 50/25/25 or 70/20/10. The important thing here is that each person needs to find the right breakdown of the day that works best for them.

Once we tackle things in this way, we find that we can be much more efficient in our weekly goals by making demonstrable progress each day.

Managing multiple to-do lists

Another thing to consider is making use of to-do lists. It’s an essential part of prioritizing weekly and daily goals. One good approach is to maintain multiple to-do lists based on size or time to complete each item. Keeping track of the “big” picture is helpful for daily and weekly goals, but a secondary to-do list with tasks that take just a few minutes is also essential.

Keep a secondary to-do list of non-critical, yet important tasks. Typically, these are things that only take us 5-10 minutes to accomplish, but tend to get overlooked because of more urgent and long-lasting tasks. However, we frequently find ourselves with “found time”, such as time in between meetings or breaks. This is ample opportunity to check in on emails that need responses, or creating Jira tickets that need additional information. 

Set things up today for tomorrow

Once we know what we need to accomplish this week, focus on what the precursors may be for doing our work later in the week. For instance, build our dev environment in between things today so we can work with it tomorrow. Send emails today requesting things we’ll need later in the week. Always consider that other people are busy too and will need lead time to get us what we need, so it’s best to request these things in advance of when we may actually need them.

Set limits

Timebox everything. Some tasks are unknown and require some investigation, research, or prototyping. Set a time limit with an egg timer (see The Pomodoro Technique). The important thing is that we don’t spend too much time on a single approach or detail; let’s look up every once in awhile and make sure we’re still going down the right path.

Create a calendar invite with our manager, tech lead, a SME (Subject Matter Expert), an architect, asking for help for later this afternoon or first thing tomorrow morning. Look for the next available time they’re free for a half-hour or so, since they tend to be busy people. Chances are, their next availability will be some time in the future; it’s easier to  find time in the future than it is when we need it right now.

This way, we can spend the remaining time doing our research or prototype. This calendar invite sets a timebox deadline for us to learn what we can. If we solve our own problems before then, then great! Everyone gets a half-hour of time back, and we can move on. If not, we can get the help we need before we’ve spent too much time going down a rabbit hole.

Remember: It’s better to send an invite for help and not need it than to need it and not send it.

Project and team meetings

Meetings are part of our work; our jobs are not just writing code. Developers tend to think that meetings are boring. They are, but they also serve a function. We should help keep to that meeting’s function by showing up prepared and communicating what we need. The faster we all get through our standup or ticket grooming session, the faster we can get back to all of our other tasks.

Involve our project managers! When we struggle with priorities or time management, let’s reach out to our PMs. That is literally their job, to manage our project; so take advantage of that as much as possible.

Rely on our team. Ask for help often and early. The more we communicate with our team, the more we can flex our strengths and minimize our weaknesses. 

Determine the urgency and importance of everything

This refers to the Eisenhower method or the Eisenhower Matrix. Do it, delegate it, defer it, or drop it. Thinking of this week’s tasks in this way often provides valuable insight into what we really need to focus on. 

Context switching tips and tricks

When we’ve done everything else to prioritize our time, manage our projects, or utilize our available resources, then we need to examine how we can best focus on switching contexts when it comes down to it.

Turn off distractions. Turn our phone upside down. Disable our computer’s notifications. Close email, Slack, Skype, ICQ, etc. so that we can truly be heads-down.

Use our calendar for us, not against us. Instead of thinking about all the meetings we might have, let’s create calendar blocks to illustrate what we will be working on and when. Time blocking like this also prevents others from trying to schedule us for a meeting when we’re in the middle of trying to get other work done.

Lizard brain hacks for memory recall

One of the most helpful aspects of learning to context-switch effectively is the ability to instantly recall important details. We can take advantage of dormant senses (hearing and smell, for instance) to help reinforce details during memory imprinting. This way, when those same stimuli are used (listening to the same songs, smelling the same scents), the act of recalling those same details happens much faster.

This is called “involuntary memory” or sometimes the “Proust Effect”. The idea is that sensory stimuli will trigger specific memories that were embedded at the time the details of that sense were first (or most recently) encountered. Much of the psychology behind this has been to treat traumatic events (such as PTSD), but more recently has been expanded to study the senses’ ability to improve memory formation and recall.

The science behind this

Use music and playlists

Create music playlists for each project. Listening to something while we work will help get our brain into gear the next time we get back to that project when we hear the same music. Melodies are an excellent trigger to getting our headspace into the right place again. We can think of this like identifying a leitmotif for each project; think about how each instrument represents a specific character in Peter and the Wolf.

Ideally, find a playlist that suits the project. When writing code, copy, or documentation, it may be helpful to find music with few words. Alternately, we can choose music familiar enough that the lyrics fade away can work, as well as incomprehensible lyrics (such as Viking or Death metal, foreign music, etc). Video game and movie soundtracks also work well, as they are literally designed to function in the background and be free of distraction.

The science behind this

Use smell for memory recall

Scent is another power driver. Make use of scented candles, incense, or other olfactory triggers. Associate a single scented candle with each project. Smell is a powerful tool to help hack our brain into thinking about what it was thinking about the last time we smelled that particular fragrance.

Other senses may be valuable as well. Changing the color of a lamp (from red to blue) or touching things in our office (for that haptic sensation associated with each project) can sometimes help get our brain into the same frame of mind as the last time we worked on that project.

The science behind this

Forget the old, think about the new

In order to successfully context switch, we often need to forget the thing we were working on before we can completely focus on the new task at hand.

Don’t commit the very last thing we wrote. This way, when we come back to our project, the uncommitted code will remind us of what we were doing last, just before we were interrupted or switched to doing something else.

We frequently context switch between work and personal life by commuting.. Similarly, we can physically move  around to switch gears between projects. Leave our desk, walk around, or even go outside for a moment. Often, just this physical act is enough to leave the old thing we were working on behind, and focus on what needs to be tackled next.

Ritualize switching to a new project. The more we repeat a simple act, the more commonly this will help shift our thinking to focus on something else. Once a procedure becomes a ritual, this will let us use shorthand to focus on the task ahead of us.

Tobby Hagler

Tobby Hagler

Director of Engineering