Talk About Quality

Tom Harris

Putting Multitasking In Its Place

with 4 comments

A co-worker passed me a copy of Joel Spolsky’s blog posting Human Task Switches Considered Harmful.

There are a lot of people these days saying that multitasking is inefficient for software developers, but Spolsky has made it really clear with pictures and numbers.

What’s striking about his example is that he shows how even a computer, given common software project constraints (two equally difficult tasks that both must be completed), will produce results sooner, on average, with sequential tasking.

That’s a bit of a surprise to our intuition, since multitasking was invented for computers, wasn’t it?

What was multitasking designed for?

While not the earliest computing example, the one most familiar to end-users is multiple windowed applications.

In CPU terms, as in Spolsky’s article, that means multiple tasks where most are expected to be idle.

Why are most Windows application tasks idle? Because the user is single-tasking. S/he can only work on one application, such as word processing, or spreadsheets, or e-mail, at a time. Multitasking is a good strategy for the computer since it needs to prepare several applications to run, and be ready to put up the right one at a moment’s notice.

Coming back to people, it’s often pointed out that multitasking is an essential ability for managers. And sometimes those managers wonder, “If I can do it, why shouldn’t developers?”

When is multitasking appropriate?

My wife keeps reminding me that once I’m at home with the family, multitasking is where it’s at. I admit I don’t adjust too well. But how else to attend to kids’ requests, ever-ringing phones, and visitors at the door, while trying to enjoy dinner together?

The work of running a home is supportive and ongoing. Not long tasks to finish. Nothing gets finished. Rather, lots of existing activities have to be pushed along, and preparations have to be made for upcoming activities (e.g. phone the friend’s parents to arrange that sleepover next week).

Managers also push many activities forward, never get to finish anything, and are always looking ahead to prepare the next activity. Management, as modern literature reminds us, is a supporting role. This is the kind of job that requires multitasking.

(Lest anyone think that’s devaluing managers or parents, remember that the other part of those jobs is leadership. More about that another time.)

In summary, multitask where appropriate: multiple ongoing activities where none finish and many must be idle.

That does not sound like the job of a software developer.


Written by Tom Harris

June 11, 2006 at 7:27 pm

Posted in Agile

4 Responses

Subscribe to comments with RSS.

  1. I read an atricle linked from that discussed multitasking as a form of conflict resolution. In short, you can always say you are working on everybody’s “important” project because you are multitasking all of them at once. Never mind that the projects are all finished drastically slower than a sequential stream of projects would have been. This also reflects management’s inability to choose what is most important and stick to it.

    Joshua Volz

    June 11, 2006 at 8:54 pm

  2. This doesn’t sound like much of a conflict resolution. It sounds more like buying some time. But in fact, you get two frustrated stakeholders at the price of one. Not to mention the development team, which can also find this scheme quite annoying.


    Lidor Wyssocky

    June 11, 2006 at 9:05 pm

  3. […] « Putting Multitasking In Its Place […]

  4. Here’s a different approach on this subject written by Paul Graham:

    Suppose someone multitasks successfully. That someone is generally going to be working on a number of less important tasks that distracts from the hardest problem the person can dedicate himself to. That’s not necessarily a bad thing, since accomplishing a number of smaller tasks can help build up confidence for the challenging task … on the other hand, it can also lead to procastination. A manager can create a more supportive environment for developers by taking care of the other tasks so that a developer can spend most of his time on the difficult task — crafting good code.

    Ho-Sheng Hsiao

    June 12, 2006 at 2:35 pm

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s