We all hear about how terrible context switching is, and how we should avoid it. We need a laser like focus, we’re told, and given well-meaning advice like:
Say no to things that are urgent but not important.
Use the pomodoro technique to focus on just one thing at a time.
If your work was planned properly, you’d be able to identify blockers upfront.
Don’t get me wrong, I agree with all these things. I try and do these things all the time, and I’m trying to improve on those processes, and others.
But what about when you don’t have a choice?
I’ll leave the discussions on influence for another time. For now, let’s just assume that we are where we are, and have to deal with the current problems around your flow being broken.
Winning our colleagues over to better ways of working is the strategy, but we have to use tactics in the medium term that reflect where we are.
Some scenarios that occur to me include:
- Being blocked waiting on humans (pull requests need approval, access to systems, access to experts).
- Being blocked on long running jobs (a favourite for developers, especially back-end)
- Having your workload split across projects, perhaps you get 20% of your time on project A, and the remaining 80% on project B.
- Having projects that are shelved temporarily, and then resumed.
Outsource some of our thinking to tools
I think of it in this way – we owe it to ourselves (not our boss) to get the best out of time. If we find a better way of doing things, that’s for us to take a breather, not for them to find a way of giving us more work.
I’ve tried to recognise what strengths I have (decision making), and what strengths my tools have (lifting cognitive load, reducing the impact of context switching and heavy lifting).
I’ve therefore come up with tactics for when these situations get forced on me, and outlied them below.
Being blocked on humans
In the case of people, I have OmniFocus and the Waiting tag to help me out. When I don’t get a reply from people, the waiting tag gets applied. Having a perspective of ‘Waiting’ lets me keep my flow.
I can chase people up in batches because I have one place to look, on trusted tool that lists all the people I’m waiting on. In this case it’s only Ann, who’s got the credentials I need that appear in this list.
However, this list is ready for me at any time, very useful when I only have 10 mins before a meeting, I can chase a few people up.
Being blocked on long running jobs
OmniFocus has a plugin that lets you hook into web pages which are useful for context, but you can make do with a text file as long as you mark what you need, and the link to get back to where you were.
OmniFocus lets me take a web page (for example a bamboo CI job) and store that as a task. As with people, I assign that a ‘Waiting’ context (and optionally a time if I know a build will take say 45 mins).
Workload split across projects
Now when you have your time allocated across projects, things become a bit more tricky. For example, I work one day a week on one project, and the remaining four on another. In these instances, I’ve struggled with resuming my thread on the one-day project and wasting time getting back into things.
Some knowledge of scripting will help you no end.
- I’ve found that if I can achieve what I want using the command line then I can chain jobs together.
- If I can chain jobs together, I can script them once and then run without having to remember the low level details 2 weeks later.
- If I can script a job, I can run it on a schedule. Cron is one example, but I’ve taken it a step further and used Bamboo.
Shelving and resuming projects
As I mentioned before, I’m 80% on one project and 20% on another. In the case of the 20% project, I need to uplift some resources. Other teams may have changed things since last I last worked on the project.
Since I wanted to automate my reporting anyway, so I could see the progress of my upgrade efforts, it was trivial to use Bamboo to run that job. I even used it to create artifacts for download so that I had a report ready to go within half an hour of triggering it.
I took it even further than that and added Monday morning trigger to the job so that it was waiting for me when I turned up to work. Since Mondays are hard enough, I might as well save some time whilst the coffee kicks in.
When my report is ready, Bamboo lets me know on Monday morning.
I am a big fan of compounding wins, and by having a system to ‘pick up the thread’ when we have to park something, it’s another little thing we don’t have to worry about.
Of course this relies on your brain having a trusted place to go that you don’t need to think too hard about, and a consistent system/process is the way to go about that. One such system is GTD.
Once you have a way of working that fits with the ebb and flow of your workplace, you can hopefully get some time back in your day. Just don’t tell your boss that they can give you work as a result!