Sustainable Development: Meditation on an Agile Principle

Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

  • Anyone who has ever worked in a non-Agile software development environment can tell at least one horror story about late-night-and-weekend death marches to get product shipped. I’ve known developers who worked eighty hour weeks—except when they took vacation. Then they only had to work about forty. (Go ahead and enjoy the theme park with your grandparents, kids! I’ll be here working in the hotel room until you get back!) I’ve worked places where I couldn’t make evening or weekend plans because schedules were so unpredictable. No wonder this principle appealed to me the first time I saw it. It means that Agile environments understand the importance of so-called “work/life balance”—vacations, weekends, and reasonable working hours.
  • On the other hand, it says “promote sustainable development,” not require it. I can see how the principle might be defenestrated if it becomes inconvenient—say near the end of a project, when there is incredible pressure to get the product shipped and revenue on the books. After all, if “Our highest priority is to satisfy the customer through the early and continuous delivery of valuable software,” it means that all other principles take a back seat to it.
  • I suppose that if sustainable development is more of an aspiration than a fact, then the process isn’t really “promoting” sustainable development, is it? Promoting sustainable development in that environment would bring another principle into play: “At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.” figure out why things broke down. Identify a way to keep that from happening in the future.
  • What does it mean for sponsors to maintain a constant pace? In my experience, sponsors are usually the ones trying to drive a crazy pace, by refusing to compromise on either scope or target dates.
  • It’s easier to understand what it means for users to maintain a constant pace. Ever work in an environment where IT routinely dropped hotfixes without adequately testing—or warning anyone that the change was coming? I have, and it frequently resulted in increased workloads for those of us using the system. If Agile is all about delivering valuable software rapidly, it can’t mean that we deliver more problems than solutions.
  • “Indefinitely.” As long as the project lasts, right? That means making sure that the team has enough people. Not just “all the skills necessary” but “all the skills necessary even if someone comes down with the flu and can’t work for a week.”

Agile is the most humane philosophy of work I’ve ever encountered. This principle is one reason why: Agility recognizes that people have limitations, and needs beyond work. When we value “Individuals and Interactions” highly, we create safe, enjoyable working environments that allow everyone to thrive.

These are a few of my thoughts on the topic. I’d like to hear what you have to say.