Being an utter nerd I find that the way I handle multi-tasking is similar in some ways to popular 16-bit computer architectures (see, I did warn you).
I certainly find that I'm able to Context Switch like early versions of Atari TOS, Windows and certain forms of extended DOS, but there is a penalty. Some of my tasks most certainly terminate and stay resident (i.e. I switch to task B but am still committing mental activity to task A), but as long as I plan what I'm doing, switching between things is no more difficult than saving my text in edit.com, starting lotus 1-2-3 and importing the text (forget cut and paste, I have a 16-bit mind in a 64-bit world, and only 512k of RAM to play with).
On the other hand, depending on the task I can do certain types of task and switch pre-emptively, just like Amiga Workbench. Like Amiga Workbench, I often find that I can only really do one thing at a time but things do carry on in the background. Some might call it intuition, but I can tell if a need to context switch is coming up and if the task doesn't require that much by way of resources then I'm fine doing both at roughly the same time, there is an impact on resources, but it's not always externally visible.
This reminds me of an old Joel Spolsky blog post [1] about exactly this for programmers. The gist is that for tasks that require a great deal of attention and focus (like programmaing and, here, legal analysis), task switching is extremely expensive and should be avoided whenever possible. A bit of management advice from the post regarding this principle:
Good managers see their responsibility as removing obstacles so that people can focus on one thing and really get it done.
This is interesting to me because I'm developing a little app to try to minimize the impact of switching between intermittent projects (http://taskover.com - it's parked for now). I'm trying to address the challenge of capturing your train of thought, then "reloading" it into your brain at a later point.
NB: Some studies have interpreted multitasking as doing two or more things at once (e.g., talking while driving). I use the term in the context of switching among multiple projects / tasks over a given set of time.
I use Mylyn heavily to accomplish context switching multiple tasks in progress. Since it is not uncommon for people to line up at my desks seeking advice or with an urgent issue that actually is urgent to the company. Mylyn has saved my bacon multiple times, and the project has a commercial desktop counterpart called Tasktop.
What is multitasking? Whoever's answering this question is going to have a different interpretation, and I think each interpretation can be either beneficial or harmful. Listening to new music while coding is multitasking that's beneficial to me. I can still code successfully with the background noise, and I get to explore new music that I can potentially get into.
I'm definitely coding at 100%, but I'm not listening to music at its full capacity. But I am parsing it enough to know whether or not I want to check it out again in depth (100%) later.
Does anybody else have a hard time listening to music while coding? My mind wants to analyze the music. The effect is worse for me when the music is a multilevel instrumental; I get lost, floating like a leaf along the various threads of melody.
I was debugging a database on site and started feeling emotionally wrung out. I realized that the radio someone was playing nearby was playing songs from my teenage years and each one was evoking the emotions of those years and taking me on a roller coaster ride subconsciously.
This issue keeps coming up. This is a pretty narrow definition of multitasking and is not really considering things that get parallel. I had an argument with my high-school friend about this, and wrote http://www.ciexinc.com/blogs/daily/080601.html
Now I do agree with Joel that there are certain kinds of tasks that are very expensive to interrupt, but to rule out all kinds of multitasking based on Italian judges or brain scan imagery, no.
You mistake the thoughput for the latency. The latency is smaller (less time from start to end) in the AAABBBCCC approach.
The reason ABCABCABC can be slower in a computer is that context switches takes time, and AAABBBCC has only 2 context switches whereas ABCABCABC has 8.
And the throughput in AAABBBCCC is 1 project in 3 days, where ABCABCACB has a throughput of 0 projects in 3 days. In a business where cashflow is important, that 3 day throughput is more important than the overall 9-day throughput.
That's a good point, if you're taking into account cash flow and exponential return on cash flow, then having projects finish sooner and start generating cash flow and interest sooner is preferred. Fewer context switches also contributes to that.
This study draws conclusions about very coarse grain (month to month) multitasking, which I don't think is the common interpretation of the term. Multitasking to me is doing multiple things either simultaneously or within an hour time span or so. The two are very different things, so I would be careful extrapolating this to finer grain multitasking.
I often wonder if people who say multitasking is impossible have ever met those who do it well.
It's also not just a matter of hiring more people and assigning them each a task. Sometimes there just aren't enough tasks to do that. It's much more efficient to just have 1 person multi-task instead, even if each task is less efficient than if done by itself.
The same can be said of single-core computers, but we have been referring to that as multi-tasking for a long time. If the term multitasking is used commonly to refer to context switching, both in people and in computers, on what grounds do you disagree with its use?
Also, I question the scientific basis for suggesting that no one can do more than one thing at a time. My understanding is that the brain is massively parallel, so it seems likely to me that it is capable of running background processes in parallel with foreground processes. It's probably true that only one task can have conscious attention at a given time, but that doesn't mean that we can only do one thing at a time.
I don't disagree with its use per se, I just think it's horribly inefficient for people to do it. There is a cost to switching focus.
Please note, I am completely unqualified to make this observation, being only a software engineer, but it seems to hold true in my own life, so...
There are tasks which can be done simultaneously, due to the fact that they use different parts of the brain. Starting at a low level, e.g. breathing and driving a car; changing gears while steering your car; listening (and paying attention to) a radio program while driving; etc.
But this gets inefficient when the tasks start to overlap cognitively, e.g. talking on the phone while driving (which is why it's unsafe to do those two things at the same time -- has almost nothing to do with hands-free vs handheld IMO).
I'm not saying you shouldn't context switch. I'm not saying you shouldn't do two things in parallel. I'm only saying that you should know the cost.
completely agree, switching from complex tasks to complex tasks is very inefficient. you will take time to switch your mind again to the context of new task.
I certainly find that I'm able to Context Switch like early versions of Atari TOS, Windows and certain forms of extended DOS, but there is a penalty. Some of my tasks most certainly terminate and stay resident (i.e. I switch to task B but am still committing mental activity to task A), but as long as I plan what I'm doing, switching between things is no more difficult than saving my text in edit.com, starting lotus 1-2-3 and importing the text (forget cut and paste, I have a 16-bit mind in a 64-bit world, and only 512k of RAM to play with).
On the other hand, depending on the task I can do certain types of task and switch pre-emptively, just like Amiga Workbench. Like Amiga Workbench, I often find that I can only really do one thing at a time but things do carry on in the background. Some might call it intuition, but I can tell if a need to context switch is coming up and if the task doesn't require that much by way of resources then I'm fine doing both at roughly the same time, there is an impact on resources, but it's not always externally visible.