Why use agile methods? You've already heard enough about how agile allows software development organizations to do more with less. In this column, Michele Sliger offers a completely different reason—one that's often overlooked but nevertheless critical.
You should consider adopting agile because it is the ethical option. This is not to say that non-agile methods are unethical, nor is it to say that all agile teams are working ethically. Instead this ethical choice is about embracing a method that is value-driven—both in the promise of providing value to the customers and in the promise of the ways we choose to work together to provide that value.
The Merriam-Webster definition of ethics is "the discipline dealing with what is good and bad, and with moral duty and obligation." If we examine our moral obligation as software developers, our first task is to provide value to our customers. That is why we were hired, and that is what the customers are paying for. We have a responsibility to deliver. Agile approaches provide a framework that enables frequent delivery of precisely what the customer needs with as little waste as possible.
While we are obligated as professionals to provide a valued product to our customers, it should not be at the expense of those doing the work (or those supporting the people doing the work). Our second obligation is to treat the team humanely. If we do not create and maintain an environment that allows the team to do challenging and fulfilling work at a sustainable pace, then we are failing to treat these knowledge workers with respect. This also affects our first duty in that an overworked, demoralized team may not be able to give its best effort at creating a valued and quality product. Review the Agile Manifesto and its twelve principles to see the set of values that drive behavior in a positive and sustainable fashion.
In addition to the Agile Manifesto, two of the most popular agile approaches, Extreme Programming (XP) and Scrum, advocate specific values. (Again, this is not to say that other software development approaches do not have values—just that XP and Scrum explicitly spell them out.) Ken Schwaber identified the following five Scrum values in his book Agile Software Development with Scrum: commitment, focus, openness, respect, and courage. Kent Beck identified these five XP values in his book Extreme Programming Explained: communication, simplicity, feedback, courage, and respect. While many trainers focus on the practices to get new agile teams up and running, it is the values that will keep the team truly agile long after the trainers and coaches leave.
Commitment: It's not enough to be assigned to a team and agree to try this new agile thing, and it's not enough simply to be dedicated. One must also be committed to doing whatever is necessary to meet the goals outlined and to take the authority to do so to heart. It means "to carry into action deliberately" (Merriam-Webster) or, as Yoda says, "Do, or do not. There is no try."
Focus: Don't get sidetracked. Remember what you committed to do, and focus your energies on fulfilling that promise. Distractions are not limited to the obvious things like email and unrelated meetings. They may also be things like creating documentation because "we've always done it that way" instead of creating documentation because it truly provides the customer with something of value.
Openness: Openness is about keeping the project status highly visible to everyone all the time. Anyone who is interested should be able to look at a wall, a wiki page, or a dashboard in an agile project management tool and see how many features have been completed, what's currently being worked on, and the goals of the iteration and release.