TITLE: Increasing Your Sustainable Pace AUTHOR: Eugene Wallingford DATE: December 20, 2007 11:30 AM DESC: ----- BODY: Sustainable pace is part of the fabric of agile methods. The principles behind the Agile Manifesto include:
Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
When I hear people talk about sustainable pace, they are usually discussing time -- how many hours per week a healthy developer and a healthy team can produce value in their software. The human mind and body can work so hard for only so long, and trying to work hard for longer leads to problems, as well as decline in productivity. The first edition of XP had a practice called 40-hour work week that embodied this notion. The practice was later renamed sustainable pace to reflect that 40 hours is an arbitrary and often unrealistic limit. (Most university faculty certainly don't stop at 40 hours. By self-report at my school, the average work week is in the low-50s.) But the principle is the same. Does this mean that we cannot become more productive? Recall that pace -- rate -- is a function of two variables:

rate = distance / time

Productivity is like distance. One way to cover more distance is to put in more time. Another is to increase the amount of work you can do in a given period of time. This is an idea close to the heart of runners. While I have written against running all out, all the time, I know that the motivation found in that mantra is to get faster. Interval training, fartleks, hill work, and sustained fast pace on long runs are all intended to help a runner get stronger and faster. How can software developers "get faster"? I think that one answer lies in the tools they use. When I use a testing framework and automate my tests, I am able to work faster, because I am not spending time running tests by hand. When I use a build tool, I am able to work faster, because I am not spending time recompiling files and managing build dependencies. When I use a powerful -- and programmable -- editing tool, whether it is Eclipse or Emacs, I am able to work faster, because I am not spending time putzing around for the sake of the tool. And, yes, when I use a more powerful programming language, I am able to work faster, because I am not spending time expressing thoughts in the low-level terms of a language that limits my code. So, programmers can increase their sustainable pace by learning tools that make them more productive. They can learn more about the tools they already use. They can extend their tools to do more. And they can write new tools when existing tools aren't good enough. Perhaps it is not surprising that I had this thought while running a pace that I can't sustain for more than a few miles right now. But I hope in a few months that a half marathon at this pace will be comfortable! -----