Vivek Haldar’s recent post Quantum of Work points out something obvious in retrospect: programming is intrinsically fractured. It does little good to tell a programmer to unplug and concentrate. He or she cannot work for more than a few minutes before needing to look something up online or interact with someone.
A quantum of work is the theoretical longest amount of time you can work purely on your own without needing to break out into looking up something on the web or your mail or needing input from another person. For most modern workers this quantum of work is measured in minutes.
At least that’s the default, the path of least resistance. But it’s not the only way to work. Software developer Joey Hess describes how he works.
[My home] is nicely remote, and off the grid, relying on solar power. I only get 50 amp-hours of juice on a sunny day, and often less than 15 amp-hours on a bad day. … I seem to live half the time out of range of broadband, and still use dialup since bouncing the Internet off a satellite has too much latency, and no better total aggregate bandwidth. So I’m fully adapted to asynchronous communication.
Joey Hess cannot possibly work the way Vivek Haldar describes. It sounds like his quantum of work is measured in hours if not days. That would not be optimal or even feasible for some kinds of work, but it does suggest that we may not need to be as connected as we are. Maybe your optimal quantum of work is somewhere between the extremes discussed above.
If your quantum of work is 10 minutes, maybe you could increase that. This would require making some changes. Keeping your same way of working but trying to ration your time online would be frustrating and counterproductive. I think it’s significant that Hess says he adapted to working asynchronously. For example, I assume he keeps reference material on his local hard drive that others would access online.
Even if working offline is less efficient, it’s a good idea to be prepared to work that way when necessary. I was reminded of that this weekend. I was using some desktop software that depends on a server component. There was a failure on the vendor’s server and nobody at work to fix it, so I was stuck.
What are some ways to increase your quantum of work and to work less synchronously?
Shouldn’t a quantum of work be the SMALLEST period of time you are able to focus on a task without needing to consult a coworker etc? Going by largest you might end up being expected to spend 2hrs at a time because the annual office clean up you did the whole stationary closest non stop for that long.
I think it is best to lower expectations not state the best case scenario. I’d rather assume I’m going to run into a new API/ORM/not be able to use a stock UI control and I need to spend a day playing with it to figure out if it will help before making any progress on a new task than to assume I’ll be able to do everything without needing any includes and just use my mastery of if/for and case statements.
Oh to increase quantum of work: I run my email client on a separate desktop and only look at it when I need a distraction. So it might take 2 hrs for me to reply to an email but if it is really important people will call. I still think this is an expectation thing though I also get people that call less than a minute after they sent their email asking me if I saw it and what do I think. Umm it might be electronic but it is still mail so … I read it when I feel like it.
I’d recommend looking up the concept of flow, there’s been a lot of talk about how long it takes a programmer to get into flow, and about maintaining flow for longer periods of time.
I doubt that a programmer who can only work in 10 minute chunks manages to enter flow at all. However, looking something up online or even certain types of interactions do not necessarily mean leaving the flow state.
(My own quantum of work is probably around 5 hours, on a good day. I sometimes manage 16 hours at a time, but that is not long-term sustainable.)
Joey: Thanks for stopping by. I enjoyed your interview.
I’ve written some posts about flow and your comment reminded me to add them as related posts at the end.
I prefer to work for a few hours (3-4) uninterrupted. I find it far more productive than flitting from one task to another over a 10 hour “work” day.
Muigai: I imagine most people who say they work 10 hours a day are keeping up appearances, or they’re not working as much as they think, or they’re doing work that isn’t that demanding. There are exceptions, but most people cannot concentrate for anything near 10 hours.
The best way I’ve found to increase your quantum of work is to localize your reference materials. I’ve been doing lots of low level coding in C recently so I’ve been pretty happy with just man pages and a few good books. By not having to google around every single time I can cut off temptations to check Facebook for a few seconds (which inevitably breaks my concentration).
I’ve also been practicing being more aware of when I get tired or frustrated. If I’ve been banging away at a bug for an hour with no progress it’s time to walk away and take a break. If it takes me three tries to make a proper git commit it’s time to call it quits for the day. Not sure if this increases my quantum, but it does leave me less drained and more productive at the end of the day.
Hi John. I’ve been reading your blog for 6 months now and my wife (also a blogger) convinced me it’s important to comment on blogs that I like. While I wouldn’t call myself a statistician by trade, I use statistics analyzing wildlife data (with the help of real statisticians). Never-the-less I really enjoy your blog even though some of the more technical posts are over my head.
I think quantum of work depends on the task. If I’m doing something that doesn’t require a lot of thought (such as making maps in ArcGIS), I can go for 3-4 hours. I get so caught up in finishing the task, I’ll even put off a needed restroom break until it’s painful. However, if I’m doing something that’s a struggle for me (such as writing manuscripts), I get easily distracted.
Also, I agree with Joey that looking up something online or talking with a coworker about a problem doesn’t mean you’re leaving flow.
For the second year I attended The Institute for Computer Law and Policy conference at Cornell. This year was heavily focused on the Humanities, academia, the impact, changes and ramifications of technology on learning, publishing, teaching, data storage and policy practice. We discussed the online impact on our brains and learning. Many references were made to the fractured mind and I came away with list of books and articles to read on the topic.
Our last evening, we attended an interesting, and what I originally mentally labeled a quirky, virtual presentation by Howard Rheingold. He discussed online learning and how fractured, fragmented our time and brains become during the course of the day. How we struggle to focus trying to digest and work with increasing amounts of online information.
He discussed the need to employ methods to retrain our brains to focus. He uses a good old egg timer. He said he sets it for 20 minutes to focus on one project. After 20 minutes, he takes 10 minutes to randomly search the web, walk around , engage in less focused work.
After his talk, I was astonished to have conversations with the conference participants that walked away from the presentation ready to buy an egg timer. We discussed our frustration and the difficulty of staying on task and focusing.
When I reported this presentation to my boss, he bought me an egg timer. The problem, it is a noisy one, the loud ticking sound kind with a jarring ring so I am distracted by that and it puts my colleagues in our cubicle world on edge. The next step will be to purchase a quiet, hour glass variety and test Rheingold’s method.
Mz Emerson, that sounds a lot like the “Pomodoro Technique”:
http://en.wikipedia.org/wiki/Pomodoro_Technique
I’d be curious to hear how the hourglass works for you.
Also, given that several comments here recommend using reference books and limiting time online to prevent distraction, I’m amused that the Pomodoro wiki page recommends web-based timers for your desktop and smartphone. So… Bring your distraction-avoidance software with you everywhere, and always be one click away from keeping yourself from being one click away from everything! :)
Two things can increase your quantum. Working on isolated projects where you are the sole decision maker. And designing up to the point that when the time comes for implementation you can just go without interruption. The first is usually not feasible. If your system talks to other systems, then you have to talk to the people who built those other systems. And the latter is hard and requires discipline.
There are definitely a few things that have been effective for me. Managing expectations about how recently I respond to email (as Mike suggests) is a big one. Increasing the cost of context switching, even slightly, makes a big difference — if I actually log out of email or facebook every time I’m done checking it (and ensure that I have to log in manually as opposed to automatically with something like LastPass), I check it less often.
I’ve thought about trying to rely more on local documentation and actually working out of range of the Internet. The problem there is that I can find information much faster on Stack Overflow or in online docs than I can in offline documentation, doubly so if I’m trying to solve an obscure bug and can search for other people who have encountered the same problem. It’s hard to give that up now that I’m used to it, and I’m not sure doing so would increase my net productivity.
There are browser extensions that enforce staying away from distracting websites for some period of time. I haven’t gone quite so far as to use one, but I’ve considered it.