one of joel spolsky's ...

16 August 2001

one of joel spolsky’s hobby horses is that humans don’t multitask. he argues, quite correctly, that it’s better to get one task out of the way before starting on the next. i love his example of bob being scheduled to do three tasks at a time because all the tasks need doing within a month and that management’s refusal to allow him to do the tasks sequentially is really their refusal to see the reality that bob needs a month to do each task. if they were really three tasks that took a third of a month each surely they’d like to have two of them finished early.

joel’s reasoning is that task switching takes time. in addition to the time you spend working on project a and project b you have to spend time moving from working on one project or another. if bob were a builder who needed to build two houses a hundred miles apart no one would think that getting him to build one in the mornings and one in the afternoons would get the houses built faster. it’s obvious that it’ll be slower that way.

i don’t tend to find that i have two major projects going at a time (at work anyway, at home it’s a whole different ballgame). what i do find is that as well as one major project i have any number of smaller unrelated tasks assigned to me. and the smaller projects are always urgent and the major project isn’t so urgent. so i have to drop the major project for a bit whilst i work on the smaller stuff. this is like having bob building one house, but needing him to go and make minor repairs on other houses while he does it. the repair houses are often miles away from his main build. so bob takes an afternoon off from doing any building and goes out and buys a faster motorbike. now he can get from his housebuild to his repairs faster. his house still takes longer to build than it would have done without interruptions, but he has speeded up the process.

what i need is a faster motorbike. i need to be able to get from my major project to my minor tasks and back in quicker times. in software terms this comes down to being able to switch my environment easily and remember what i was doing. this means that any time i invest in writing and upkeeping scripts to set up environments, run things automatically, etc pays me back huge dividends over a number of task switches. it also makes it worth my while to write down exactly what i’m doing all the time so that when i get torn away from something i can find my way back faster; this is like leaving myself a bookmark in my thoughts to return to.

so task switching is certainly harmful, but when you can’t avoid it you should invest some time in trying to minimise the time and effort it takes.