When I think about software development, sometimes I imagine a movie montage. In that ideal scene, there’s a solo software developer sitting quietly at a tasteful, orderly desk. There’s a single cup of tea in front of them. Inspiring, beautiful music is playing. Glowing green letters fly across three symmetrically arranged monitors. The developer’s fingers tap at a keyboard with the grace of a piano player. Day and night may come and go. And in the end, the developer unveils a flawless work of genius that will change the world. They lean back, take one more sip of tea, and smile.
And then I look at my screen: I have three browsers open with at least ten tabs in each. In one, I was furiously skimming Stack Overflow for the syntax of a library I haven’t used in years, but I don’t even remember where that tab was. I have so many terminal emulators running that I’ve had to color code them. I’m halfway finished reviewing code on GitHub, in some browser, but my comments are already stale. There are several notifications pending in Slack, email, and messenger. My phone is ringing. A delivery service is at my door. I haven’t eaten in six hours. I’ve got my third meeting of the day in ten minutes, but the test build is failing. Again. Our deadline is Tuesday, but I’ve never even seen the kind of error that has happened. Suddenly my mom texts me to ask me a question.
Wait, what was I just doing?
These are two extremes. And although many developers find their best work in a situation like the montage above — in a state of mind that’s been called “the zone” or Flow — our day-to-day lives are a little more like the latter. So many disparate aspects of our lives can exist on the screen of a single digital device, and this is incredible. But it also means that whenever we open that device, all of those aspects of our lives are competing for attention. And that attention—those stretches of genuinely undivided focus—seem more and more difficult to find.
Ushahidi isn’t just remote, it’s International
At Ushahidi, many of us work remotely. As I write this, we live in ten different countries across several continents. Remote work is, certainly, an enormous privilege, and I recognize how lucky it is to have this option. But as great as it can be, it has its challenges. I may not contend with crowded elevators, delayed subways, highway traffic, or stolen lunches, but there are still plenty distractions and demands for attention. And work is happening twenty-four hours a day, every day. We still need to communicate with each other, and we need to communicate with the outside world.
How does a person balance the concentration needs of being a software engineer with the demands of collaboration, especially when you’re working remotely? (Or to paraphrase a terrible manager: Are you working remotely or remotely working?)
I’ve only been at Ushahidi for a few months, and it isn’t my first experience working remotely, but I’m still learning, and I’ve jotted down a few tips for myself. Some may seem obvious, some I’ve solicited from colleagues, and some I’ve learned the hard way. Here are a few guidelines I use on how to retain focus in a remote world:
Decide when you’re working
People laugh when I tell them that my first tip is to get out of bed. Surely, I get out bed every day, right?
Like many people these days, I use my smartphone as an alarm clock. My laptop is, despite my better judgment, sometimes near my bed. It’s easy to wake up, check for urgent issues, and then continue to check messages, log into Github, maybe start tweaking some code. Suddenly five hours have gone by, and I haven’t even mentally committed to starting my work day.
That temptation is strong, and my bed is very comfortable, but I also know I don’t do good work there. If I’m only partly focused on checking emails, while also thinking about eventually getting up to make breakfast, I’m not really doing either. This isn’t just a disservice to my work, but it tends to eat away from my own time, too, especially if I realize I’m catching up on things I didn’t finish, or things I did poorly, because I was never really “working”.
Embrace routine
There’s some part of me that still sees routine as a negative word, one that feels like the enemy of spontaneity or creativity. But I’ve come to accept that the less we have to think about, the more we can be free to think about other things. It’s one less thing to sort out in the moment, and one less decision to make.
There’s something relaxing about turning on the same coffee pot every day, making myself a typical breakfast, and sitting down to work in the same place. That ritual gets me in the right state of mind to focus. And whatever novelty and creativity I’ve traded in for ritual seems to come out in other places, like problem-solving or creative solutions while coding. And that’s really where it belongs.
Do the dishes
Or at the very least, step away. Do something different. Make lunch. Do a load of laundry.
For me, preserved focus is sometimes less about blocking out as much time as possible, as it is about respecting the rhythms of my own mind.
I still feel pangs of guilt about being a bad employee when I take a few minutes for housework during the day, even though laundry, dishes and cooking lunch at home is generally one perk of remote work. That said, I don’t know how many times I’ve stared at a screen for hours, trying to solve a problem that feels impossible, only to immediately find the answer as soon as I do something that requires a different mode of thinking. I don’t know the science behind this, but the conventional wisdom of intermittently stepping away always seems true. And of course, having a clean kitchen seems to work wonders for focus, too.
Move around
I somehow assumed that working at home meant I’d be moving more than I do. Maybe I’d just get up to stretch, or maybe I’d take a walk or go for a quick run, or maybe I’d walk to a nearby coffee shop or get chores done on quick breaks. After all, I wouldn’t be chained to a desk with a boss who might ask where I was going.
Surprisingly, without the cues and rhythms of an office environment, it’s easy to forget when I’ve been sitting at my desk for five or eight or ten hours.
We hear a lot lately about the health effects of a sedentary work life. News articles regularly outline the health issues found to be associated with sitting down all day.
But aside from the long-term effects, there also seem to be short-term effects on cognition. Moving around keeps the heart pumping and the lungs working, and all of that keeps the brain nourished and functioning well.
I don’t have an objective measure for how true this is, except that I’m convinced that I’m more focused, calmer, and have more tenacity to handle difficult things when I’ve stood up and walked around a little bit. It’s enough to make me consider the standing desks that so many Ushahidians seem to praise.
Accept the limits of multitasking
There was at least one study at Stanford a few years ago about the effects and benefits of multitasking. The pithy conclusion many people drew was: Everyone is terrible at multitasking, and the people who think they’re good at it are usually the worst.
To borrow from computer science: if you have one processor and two tasks, A and B, the quickest way to get them done, assuming they aren’t competing for resources, is to do them one at a time.
But modern operating systems don’t work that way. Instead, they cut the task into pieces and do a little bit of A, and a little bit of B, then some of A again. This makes computers feel more responsive, but every time the processor switches between tasks, they have to switch contexts. They set aside everything related to task A, save it, load everything related to task B, work for a bit, stop, save the context again, then load the context of A. That switching adds time.
We’re not much different. When we switch from one task to the other, we have to set aside what we were thinking about and remember the other task. We’re just less good at it. And as humans, every context switch means we also risk forgetting some important details.
Sure, maybe we can listen to music and code. Or maybe we can have a conversation while we walk down the street. But there aren’t many things we can do well at the same time.
Decide when you’re not working
I’ve heard people say that coding is a marathon, not a sprint. It’s a strange phrase, since sprints are part of current software methodology. Or more accurately, a series of sprints. You work for a stretch, but you also stop.
A running phrase I prefer to think about: the recovery is as important as the training. Just as doing the dishes shifts the mode of thinking, planning for a stopping point also seems to let the mind shift modes and have a chance process the work you were doing. Not even the most dedicated workaholic can spend every waking moment focused on one thing and expect to do it well. Balance seems to keep all parts of the mind working right.
If you can’t cut out distractions, find something that can
One of the recurring conversations among Ushahidi developers is about tools for staying focused. Lots of tools like this exist. Some block certain web pages. Some actually block certain apps. I’ve used tools like Stayfocusd, and I know a few people here have liked using Focus.
For me, tools like this aren’t just good at keeping me from habitually checking websites, but it also means I can turn off the notifications. This is almost more important, because while I might trust myself not to check social media whenever I hit an impasse, knowing that I won’t get an alert that isn’t absolutely urgent is enormously valuable.
Frankly, the looming threat of disruption is often more distracting than the distraction itself.
Time Box
Parkinson’s Law says, “Work expands so as to fill the time available for its completion"
If there’s an uncomfortable or complex piece of code to write, it’s easy to be intimidated about even starting, especially if it feels like it’s going to take several solid hours of work. And working remotely, almost nobody is going to see you procrastinate.
I think the techniques of Pomodoro or similar methodologies describe this much better than I could, but for me, it’s much easier to carving out smaller blocks of time than large blocks. As a human, it’s daunting to consider tackling something that might take a full day of work. And in our world, that block of time is hard to come by.
Deciding that you’re going to work for, say, a 30 minute stretch, or a two hour stretch, isn’t much of an investment. It’s a block of time where you can realistically turn off Slack, or email, or your phone. The world probably isn’t going to end in the meantime. But if you get into a flow, as above, you’ll know whether you want to keep with it.
Find the right work time
More than one coworker has mentioned that they like our varied timezones, because it means they have a part of the day devoted to communication, and part of their day devoted for quiet work. Obviously, not everyone has this option.
I’m in a slightly western timezone. So my day ends after most of the people at Ushahidi. And there have been days where the chatter of Slack, despite my best efforts, has made it hard to write code. But those hours late at night, knowing the rest of the world (or most of it) has gone to sleep, is sometimes the best time to concentrate.
Respect everyone else’s focus
If you show respect for someone else’s focus, the chances are good they’ll learn to respect yours.
Be kind. Understand that you’re potentially distracting people when you interrupt them. When you write someone a message, is it clear when someone needs to respond right away? Is it clear when they don’t? Did you make them do extra work, just to figure out what you’re trying to say?
At Ushahidi, the problem of focus is one we talk about often, and I’m grateful that we recognize its value. I’m also grateful that we trust each other to work well, and that we’re continually striving to improve our processes. Even if we have different types of demands, different responsibilities, and different expectations of availability, we know we’re all trying to get the same work done, together.
Be asynchronous
Does every discussion have to be a meeting? Does everyone have to be present, all at the same time, for every discussion? In any workplace, there is a lot of chatter, a lot of open brainstorming, and it can often be constructive. But people’s days quickly get divided up into nothing but meetings.
At Ushahidi, the realities of multiple time zones means that we’ve tried to optimize for asynchronous work since the beginning, and we’ve developed a few techniques for this. These innovations probably deserve their own article, preferably by someone more familiar with their history. But from I’ve seen, these tools include rotating meeting times, providing notes about meetings and summaries in “TLDR” form, and ensuring that no meeting is created without an agenda. If someone needs to miss something, it’s easy for them to catch back up. And if they’re trying to decide between two priorities, it’s easier to know which to pick.
Have Single Sources of Truth
One Ushahidi employee suggested that an important part of maintaining focus is to have a single source of truth. I took this to mean that managing one single source of truth, in a few documents, cuts down on the mental energy of seeking these out, or of someone following an outdated version of the same information.
Online conversations generate a lot of chatter, with complex decisions and discussions being made throughout a meandering thread of conversation. In the midst of a big software project, this is normal and ongoing, but unless someone stops to share what’s been decided, things can get very confusing very quickly.
Taking the time to keep everything in one place, making it known, and keeping it updated, goes a long way toward reducing confusion and wasting people’s time.
Remember the Big Picture
It’s easy to get lost in the day-to-day tasks. There’s always one more meeting. There’s always one more feature trying to creep into the cycle. There’s always one more tiny detail that needs fixing. And sometimes, all of those moving pieces makes it hard to see what the point is. Focus is a hard thing to find when it’s not apparent why you’re even trying to find it.
My first few weeks at Ushahidi, when I was just getting acquainted with the people, the processes, and the code base, were a rough adjustment. My mind was full, every day. On top of that, we were embarking on a very ambitious project with a very real deadline: adding features for Uchaguzi, a team of election monitors tracking the Kenyan election. Perhaps fittingly, it was the same project that started Ushahidi in the first place, ten years ago.
The hours were long, and I barely slept. Conversations flew around between developers and organizers, and I didn’t understand all of it. I wondered whether I would be any good at this. That fatigue meant I doubted myself and worried about my ability to keep up with this new job. Focus was hard.
But once the coding was done and the election started, I had time to review some of the posts that people made. People from all over the country had things to report, and this is where they were reporting them. The value of what we just made was immediately clear: Things were happening, people wanted to speak about them, and they were using Ushahidi’s platform to do it.
So whenever I struggle with focus, the most effective tool I use to stay focused — more than any of the techniques listed above — is to remember that there are people everywhere who want their voices heard, and we are trying to build the tools to make that possible.