organizationgtd

Work in several projects at the same time


I wonder who of you can work on several projects the same day, dedicating only a short piece of time for each one. Or if you are able to work in the same hour, on two or three or more projects at the same time. I have so many things to do, that I am starting to wonder how could I do this? I thought about using several workspaces, and switching between then, etc. What other approaches do you use?


Solution

  • There has been quite a lot of research on the subject of task scheduling. Since this is Stackoverflow and not a business website i'll compare it with operating system kernels ;)

    You have multiple tasks to be executed and the goal is of course to be efficient. Efficiancy can be measured as high throughput or as low latency.

    When you switch between tasks there will be a costly penalty called context switching. That is, you'll have to switch documents, applications, log-in to systems etc. and it will take time to get into the zone.

    Given multiple tasks of different size. If you arrange them randomly as a sequence (batch) you will have the smallest amount of context switching and therefor a high overall throughput. If you additionaly prioritize them by size, from small to large you will, also reduce latency. Since the customer with the smallest projects will be delivered first you'll have more projects delived at a point in time than in the random approach above. The problem is of course what to do with the large projects when new smaller ones arrive. This can be solved by applying some sort of timestamp. If some projects are more important than others you will have to priortize them accordingly.

    If this still won't give you satisfactory latency you'll have to multitask. It will decrease throughput due to costly context switches but you'll be able to satisfy your customers by showing them that you're making progress on their projects. The important part is to choose how time slots are to be allocated. Per hour, per day, per week? The smaller the time slot the more context switches you'll get.

    Tasks can in turn be divided into two different types, CPU and I/O bound tasks. I/O bound can be seen as tasks that requires input from a device/someone else while CPU bound only requires your time/brainpower. Arrange your week so that you initiate the I/O bound tasks sooner rather than later. While you wait for them to return, you'll focus on the CPU bound tasks.

    To summarize. You split each project into smaller deliveries that are just small enough to satisfy your customers demand for progress. On monday morning you plan your week and start with all tasks that need action by someone else (approvals etc.). Send those e-mails and make those phone calls. When that's done you'll focus on the parts requiring your concentration.

    Or, you could just hire more people :)