My friend Todd wrote about information overload and linked to this Seattle Times article. Is it possible to do good work when there are constant interruptions from inside and outside your head? When there is more interesting stuff in your RSS aggregator than you could possibly read? When friends and coworkers constantly interrupt you?

I would say that if you contrast my average and best work, this is one of the most striking differences.

At my paying work, I sit in a cubicle. I listen to music on headphones continuously because it covers up the noise of people talking around me, which is far more distracting. I believe this environment subtly discourages focused thinking. That is bad because in programming, a well-considered design decision can replace hundreds of lines of code—you can reach an equivalent or better solution with less work for yourself, your testers, and your successors; but not if you're never able to concentrate for more than two minutes. Consequently, there is a subtle, subconscious motivation to be a bad programmer. This reinforces the cultural misperceptions that programming is a rote activity and that programmers are commodity workers.* Another consequence is that any person not content with doing a mediocre job is urged to go into management. This makes the environmental problems self-reinforcing, because managers—whose daily business is primarily communication, not prolonged focus—both favor an interruption-friendly workplace and hold positions of power.

* Although I call the belief that programmers are a commodity a misperception, this isn't always true. In some cases, such as projects for which offshored development is successful, programmers are a commodity. If you are running a software development project, you should be honest with yourself about what you building and whether it's better to have a brilliant team or a cheap, mediocre one.

By contrast, in the programming I do in my spare time, I am rarely interrupted. I would estimate my average time spent focused is on the order of 5 minutes, with peak focus lengths of 30-60 minutes. By contrast, at work average time spent focused is probably about 2 minutes, with peaks of around 10 minutes. I focus more at home for a few reasons:

  • I personally love the project.
  • I sit alone, in my attic office with nobody around. Or I sit downstairs on the couch, but I can easily ask people to not interrupt me (or to stop interrupting) and they honor my request.
  • I never have to wait for my editor or compiler. This means I am not given lots of 30-second gaps perfectly suited to going off and reading stupid websites.
  • Because the edit-test-success/failure cycle is so tight, I don't get distracted enough to wonder if I have any email. So I reduce my checking from once every 5 minutes to about once every hour (I just instrumented my mail checker to measure this, so I should have real data to back this up in the near future).
  • I don't have to work on it if I'm tired, upset, or preoccupied.
  • I know the project better because I did most of it myself.
  • Because I designed the software, I can understand its design and I don't feel held hostage to idiotic design or technology decisions. (I.e. I feel more ourness.)

Of course, not all of these are luxuries employers would want, or be able, to afford their employees. All the more reason to push the feasible ones.

Question for audience participation: Businesses are inclined toward productivity improvements that are measurable. I think businesses could realize productivity gains if they understood some of stuff I just wrote, but I don't know how they would measure progress. Can you think of a way?