I’ve been reading more and more blog posts of the “please don’t interrupt me” variety, from yesterday’s post by Zach of Github about communicating over text back to Paul Graham’s essay on meetings to the under-appreciatied Peopleware (from 1987!).
Just so you don’t get the wrong idea, I agree with all of these sentiments. In fact, usually I think they’re too narrow-focused – it may surprise you to learn that coders are not the only people who have to think on the job, and need uninterrupted time.
Every place I’ve worked, interruptions have been an issue.
Sometimes, it’s just a difference in perceived priority. When a co-worker taps your shoulder, breaking your concentration, it may not be because they have a different way of scheduling time. I usually find that it’s because when you have a problem that you need help with, it becomes the highest priority “work item” you have. You can’t do anything but twiddle your thumbs and be unhappy until you get help. The person you’re interrupting is busy working, though, so answering questions is a much lower priority, and your interruption seems rude. The best solution I’ve seen for this is to have a group chat or IRC channel where anyone can ask a question, and the audience is large enough that someone will be around who can help.
Sometimes, the work environment is bankrupt. As offices with doors gave way to cheaper “Dilbert cubes”, which gave way to even cheaper sweatshop tables, background noise levels have crept up. Some workspaces now have the feel of never-ending house parties. You can tell this is becoming a problem when a large percentage of people are wearing headphones at any given moment, and conference rooms are confiscated for coding.
Peopleware categorizes work communication as either interrupt-driven or not. Interrupt-driven communication includes face-to-face meetings and telephone calls, which break your concentration. (This book is from the 1980s when it was common for each desk to have an office phone.) In fact, they provide evidence that each interruption of this type takes at least 15 minutes to recover from, afterwards, before you can get back “in the zone”. Email and chat are not interrupt-driven, and you can check them between tasks, without losing efficiency.
There is no question that whenever possible, you should favor non-interrupt- driven communication channels. But all the other blogs have been saying the same thing, using more flowery words. I want to talk about the other side of this coin:
You cannot have a job where you don’t interact, often, face to face (or its video equivalent) with your co-workers.
Humans are social creatures. Even engineers! Even (heaven forfend) neckbearded hackers from the C++ caverns! Think of the grumpiest, more hermit-like person you know. I bet they still do something social, just not in a format you’re used to. They may play MMORPG tournaments all night long, or meet up for chess clubs or Yu-Gi-Oh tournaments.
Some anthropologists argue that our social behaviors spawned the creation of language. Language gave us the ability to pass things we’ve learned firsthand on to other people, creating our entire culture. Big stuff.
Because we are social creatures, we need to interact with the people we’re working with. We need to create bonds. We need to create a shared sense that we’re in the same “tribe” together, working toward the same goals. We need to build a rapport and trust, so that if I do something wrong, or something that you aren’t fully informed about, you’ll give me the benefit of doubt, and stay focused on your part of the overall project. This is part of the magic sauce that makes a successful team.
Why does this matter? As an example, I might notice an odd-looking bit of code one night while I’m working on an unrelated feature. In fact, I might think, “This is a bug.” If I don’t know the author very well, my reaction might be anything from “I should file a bug” to “Ugh, another piece of buggy crap, whatever”. If I’m comfortable with the author, though, I might shoot off an email instantly: “What on earth is this?” We might avoid downtime because I’m not worried about offending my team-mate. Or my confidence level might be raised because they’re not worried about shooting me down. (“That is seriously how the library works, Robey. Check out my snarky comment 3 lines up.”)
These social bonds are really hard to form over email.
How to socialize
My gut tells me that this socialization is why some bad teams have weekly “staff meetings” (now, thankfully, out of fashion). The manager understands, at some level, that everyone needs to be in the same room periodically, but doesn’t know how to do that without scheduling a meeting where everyone reads a spreadsheet out loud from a projector. Standups are not good for this, either, since the purpose is to share information quickly, not to chit-chat.
If you understand that the socializing is important, there are better ways to work it in.
I had a co-worker once who went around to our whole team at lunchtime every day and demanded that we go out to eat, outside the office. He did not want to hear that you would maybe get something from the cafeteria, or that you might just bring something back to your desk. We were going to go out, as a team, and eat together. And even though we tried to avoid talking about work, at least one day out of five, I would find out something interesting and relevant about what someone else was working on.
The “coffee train” phenomenon works well, too. In the doldrums of the afternoon, everyone that’s not in crunch time gathers and goes out to get coffee. This is sometimes mystifying to managers, because there’s coffee available in the office – even a fancy espresso machine! But the purpose is (1) to leave the office, and (2) to talk to each other for a while.
At one company, we used our “team building” budget to buy a kegerator (a mini- fridge that’s been retrofitted to serve beer from a keg). Once a week, late in the evening, we rolled it out next to a bunch of couches and had a social. It got so popular that it was hard to get near the keg, but you could meet people from all over, and learn a lot. Several times, an utter stranger would walk up to me, beer in hand, and say something like, “I’m from team X, and I didn’t want to bother you about this, but I was wondering…” and suddenly I’d find out something really important to the success of my project.
On the other end of the scale, some of my saddest experiences have been with teams that don’t communicate with each other. They silo themselves off, sometimes because they don’t think anyone else has anything valuable to offer, or sometimes because they just need to be “heads down” to meet an impossible ship date. Months later, they can’t ship anyway, because they missed an important prerequisite or spent too much time duplicating a bunch of existing work. They were too busy to talk to anyone, and instead wasted a chunk of their life that they’ll never get back.
So, while I love the new awareness about interruptions and alternate means of communication, I strongly encourage you: Find some way to interact with your coworkers, socially, between code sprints. It may seem like you’re just “wasting time” chatting at the water cooler, but you’re really making an investment that can make you more productive, and your team more successful.