Written by Aaron G. Tucker, M. Ed, SPC
The Agile Manifesto was written in 2001, by seventeen independently minded software practitioners. While the participants did not often agree on what the future of software development looked like, they found consensus around four core values and 12 principles. Each of these continue to drive conversations on how we should interpret them today. One principle which I feel embodies the originators intents and needs no change today is Principle #8: “Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely”. However, unlike its original intent, this doesn’t simply apply to software, rather all development efforts following agile processes.
By now the seeds of change are planted and you have begun to understand the different agile processes and what they can bring to your organization (read earlier articles here). Effectively and efficiently implementing good agile practices is the root of this principle. Continuous analysis and improvement is what will bring long-lived organizational changes that continue to thrive and grow into bigger, better, faster, and most importantly sustainable enterprises.
Just as it is with the earth’s resources, sustainability is about the ability to maintain progress over an ever-lasting period. Managing resources and the pace of that progress is a challenging proposition. Too slow, and we fall behind and suffer. Too fast, and our resources become exhausted. Balancing speed of progress with sustainable practices is what this principle is all about.
Often, poorly managed organizations stress teams to their limits with expectations of long hours, big pushes, and heroic efforts to complete a product within a specified time. These efforts, as you may know, while commendable, are not sustainable. We can’t and shouldn’t constantly stress our employees to their limits, rather we should look to provide just enough stress to encourage and promote growth. Teams should work in an environment where they experience pressures that they can handle indefinitely and are stretched only on occasion when extenuating circumstances force heroic efforts.
It is very important that we understand the entirety of the team involved in the development of the product. They should be identified early and work together from the first day of the project. Sponsors help us understand the expectations from a business point of view while ensuring we have the resources necessary to complete the work. Developers build the products and then demonstrate them to the Users, who then provide valuable feedback the team can take back and implement. Effective communication helps everyone avoid wasting resources building the wrong thing.
As everyone works closely together, challenges and impediments are quickly resolved, communication and transparency are in the forefront, and expectations remain manageable. As everyone remains well aligned, the pace of production can remain constant and at a manageable, consumable, and sustainable pace for everyone involved.
Instead of looking at development as a sprint (as its commonly referred to in Scrum), look at it as a marathon. Take an iterative approach to establishing a reasonable velocity (team accomplishment) and pace (individual effort) that prevents the exhaustion of resources and can be sustained indefinitely.
You may recall working on products in your past that started relaxed (deadline being months in the future) yet you / your team ended up working long hours and weekends finishing and fixing the product to deliver the expected result. During these situations, frustration rises and concentration lags, often leading to additional quality concerns and even more rework. We can learn from this experience though. The right way to increase velocity is not by working harder but by having the team work smarter at a constant pace. Working harder isn’t sustainable whereas working smarter creates efficiencies that increase velocity over time.
So look to eliminate processes that are unnecessary and add processes that increase velocity or remove impediments to the team’s productivity. Provide teams with the right environment – one without distractions that interrupt productivity. Make sure they have the right tools and access to those tools. Communicate regularly and provide constructive feedback on the progress of the product. Iteratively retrospect and incorporate improvements into the processes and practices of the team. In doing so, teams will be able to maintain a constant pace indefinitely and gradually increase productivity and quality over time.
Using agile processes provides for the flexibility to shift quickly and adapt to changing circumstances. When we understand our true capacity, plan to that, and not overwhelm ourselves with expectations that stretch us out and stress us to our limits, we build agility in. As developers become more predictable in their delivery, everyone from team members through to the organization’s customers can set more realistic expectations. These expectations are what provide for a more sustainable and maintainable pace of delivery.