People often talk about how interruptions disrupt their flow and the ability to produce good quality, consistent work. This is often viewed with a certain cynicism by commercial teams and individuals who aren’t involved in the development process. They tend to view developers as machines which have an output, so moving from one task to another should just be a linear process.
Oddly enough there’s some interesting parallels which can be drawn between developers and machines. One of the examples is that of a computer performing a simple task.
Essentially the analogy is drawn between a computer multitasking and a person doing the same thing.
Rather than re-create a well written article the example can be found here:
Unless there’s some sort of practical reason you can’t approach programming in this way (e.g. blockers) the most efficient (and therefore likely profitable) way to get through a group of projects is to do one at a time, otherwise ALL their deadlines shift.
The Human Element
Remember, project success isn’t just about profit, it also relates to technical output and individuals. If individuals are constantly context switching, missing deadlines and being told they need to “just do it” they are likely to burn out and leave an organisation.