So, how does a typical programmer spend his or her time at work, and how do we know?
There’s a long tradition of studying workers to account for their time and to look for possible productivity improvements. Starting in the early 20th century, pioneers such as Frank and Lillian Gilbreth, immortalized in the book Cheaper by the Dozen, did time and motion studies to reduce the time and effort needed for factory workers and office clerks to perform repeated tasks. In such studies, a researcher, equipped with a stopwatch, clipboard, and camera, observes a worker performing his or her normal work activities. The researcher then measures the time each body movement takes and looks for new possibilities that are quicker, more accurate, or less fatiguing. As one example, the Gilbreths observed surgeons fumbling to pick up instruments during surgeries and invented the now familiar protocol by which a surgeon asks an assisting nurse for each instrument as it is needed. This innovation both reduces the time surgeries take and avoids mistakes.
Of course, software development isn’t factory work or surgery. Time and motion studies focus on physical movement, whereas software development is mostly brain work. Nonetheless, the same study techniques can be useful.
In the early 1990s, Perry, Staudenmayer, and Votta ran a study, in the spirit of a time and motion study, with a group of programmers working on real-time switching systems [Perry et al. 1994]. Because there ...