  Multitasking has always been an inherent part of software development and is
known as the primary source of interruptions due to task switching in software
development teams. Developing software involves a mix of analytical and
creative work, and requires a significant load on brain functions, such as
working memory and decision making. Thus, task switching in the context of
software development imposes a cognitive load that causes software developers
to lose focus and concentration while working thereby taking a toll on
productivity. To investigate the disruptiveness of task switching and
interruptions in software development projects, and to understand the reasons
for and perceptions of the disruptiveness of task switching we used a
mixed-methods approach including a longitudinal data analysis on 4,910 recorded
tasks of 17 professional software developers, and a survey of 132 software
developers. We found that, compared to task-specific factors (e.g. priority,
level, and temporal stage), contextual factors such as interruption type (e.g.
self/external), time of day, and task type and context are a more potent
determinant of task switching disruptiveness in software development tasks.
Furthermore, while most survey respondents believe external interruptions are
more disruptive than self-interruptions, the results of our retrospective
analysis reveals otherwise. We found that self-interruptions (i.e. voluntary
task switchings) are more disruptive than external interruptions and have a
negative effect on the performance of the interrupted tasks. Finally, we use
the results of both studies to provide a set of comparative vulnerability and
interaction patterns which can be used as a mean to guide decision-making and
forecasting the consequences of task switching in software development teams.
