Multitasking is good when it comes to computer programs, letting them do more with less. But when computer programmers start multitasking, productivity flies out the door.
For one thing, when programmers have to shift tasks, it takes "a really, really, really long time," says Joel Spolsky, host of the Joel On Software Web site and co-founder of Fog Creek Software. Programmers have to keep a lot of things in their heads at once, Spolsky says, and the more they remember, the more productive they are. "A programmer coding at full throttle is keeping zillions of things in their head at once," he says, "everything from names of variables, data structures, important APIs, the names of utility functions that they call a lot, even the name of the subdirectory where they store their source code."
On top of that, as applications have become more collaborative, complex, modular, and distributed, developers are having to track an increasing number of tasks and deal with more interruptions from the people with whom they're collaborating. As a result, they're multitasking more frequently and becoming less productive.
How bad is the problem? Developers spend an average of 11 minutes on one task before being interrupted to deal with another, according to Gloria Mark of the University of California at Irvine's Department of Informatics, who has spent years examining developers' work environments. It then takes them 25 minutes to return to the original task.
Keeping programmers productive in these fragmented work environments is a challenge for large software developers as well as for IT shops developing for end users. In both cases, application life-cycle management tools and processes can help. They automate steps -- such as change management, build processes, and testing -- in the development process, off-loading work from developers and cutting back on the number of interruptions they face.
ALM tools like Microsoft's Visual Studio Team System/Team Foundation Server and IBM's Jazz/Rational Team Concert have begun to address the problem of keeping developers on track by identifying individual units of work they need to complete.
The emerging class of task management ALM tools take this a step further by providing more targeted information and less of it. These tools give developers only the information that's critical to accomplishing a task -- that is, the tools and processes necessary for task management.
The Eclipse open source Mylyn project is the main implementation of a task-focused user interface. Mylyn provides the skeleton on which others -- Tasktop to date -- have built full-featured enterprise versions that implement task management via task-focused user interfaces. These tools are proving to be particularly effective in reducing information overload and improving programmer productivity.
Filter Out The Noise
Task management tools identify the information about a system that's relevant to the programmer's task, so that only the relevant information is presented. By tracking a developer's interactions with the information related to a task, each uniquely identifiable element of information is assigned a degree-of-interest ranking. The more frequently and recently the developer has interacted with an element of information, the higher that element's DOI ranking for that task.
DOI rankings are used in several ways:
- Elements below a certain DOI threshold can be filtered out to reduce the number of elements the developer has to deal with.
- Elements can be ranked according to their DOI so that those of highest interest are at the top of a list.
- They can be color-coded to indicate ranges of DOI rankings.
- Finally, the display of structured information elements can be automatically managed based on DOI.
For instance, text corresponding to elements with low DOI can be automatically elided. The Eclipse Mylyn project is an implementation of a task-focused user interface. Mylyn reduces information overload and makes programmer multitasking more manageable by making task management a core part of Eclipse and integrating open source issue trackers such as Bugzilla and Trac.
Once the tasks are integrated, Mylyn monitors a developer's work to identify relevant information and uses this context to focus the integrated development environment on the task at hand. This puts the information that developers need at their fingertips, making it possible to do one-click multitasking by saving the task context and allowing it to be re-sorted later. Task context also can be shared among developers, enabling the capture and reuse of expertise. This means that developers who want to focus on fixing a particular bug can configure their workspace so that only code, comments, mail, tools, and other items related to that bug are displayed.
Of the two Mylyn-inspired toolsets released to date, Tasktop's Tasktop Pro is an enterprise version that integrates commercial ALM tools such as Atlassian's JIRA, Rally Enterprise, Danube's ScrumWorks, IBM Rational's ClearQuest, CollabNet TeamForge, and ThoughtWorks Studio's Adaptive ALM. Tasktop extends Mylyn's productivity benefits to the rest of developers' work by letting them handle programming tasks alongside e-mail, scheduling, and similar apps, within the same work environment. Since developers explicitly activate tasks when working with Tasktop, they can also use their task activation history to automatically fill out time sheets and track actuals vs. estimates in an Agile planning process.
Cubeon is another Mylyn-inspired toolset. Hosted on Google Code, Cubeon makes tasks a key part of the NetBeans Java development environment. It's integrated with issue-tracking systems that manage and maintain lists of uncompleted tasks, software bugs, and other issues. Cubeon monitors work activity to identify what's important, then improves productivity by reducing the searching developers need to do. It supports tasks such as debugger breakpoint management, where code is broken into more manageable, modular pieces for debugging, and connectors to the Trac integrated software configuration management project. NetBeans is in the process of releasing version 1.1 of Cubeon.
Developers aren't going to stop multitasking. Given that, it's critical that we give them tools, like Cubeon and Tasktop Pro, that limit the information and interruptions, and keep them focused on the most important tasks.