O'Reilly logo

Making Software by Greg Wilson, Andy Oram

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

A Day in the Life of a Programmer

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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required