What is agile and why should I care?

With all the buzz about agile in the software development community these days, it's easy to get lost in the jargon and clutter. Very simply, agile practices iteratively and incrementally deliver high quality, valuable, working software to customers. Agile practices empower software development teams to effectively guide software development projects. Agile development embraces change in a project as normal and to be expected. Most importantly, agile development emphasizes collaboration and feedback, both internal and external to improve the quality and value of software as well as to provide continuous improvement of the agile development process.


team

How does DTS use agile?

At DTS, we're not just agile trainers or coaches. We're an active software development team that uses agile practices on a daily basis. Agile practices permeate every aspect of our work, from software development to project management. We've adopted Scrum as our overarching agile project management/software development process. However, we also incorporate elements of Extreme Programming (XP) and Test Driven Development (TDD) into our daily practices. By using agile to guide both our project management and engineering practices, we have been able to continuously improve the quality and value of the software we deliver to our customers. We also use agile to continually improve our organizational culture and our development practices.


team

The Agile Process

The agile process is an iterative process that breaks complex work down into short iterations. Before an iteration begins, the development team collaborates with the customer to develop a backlog of stories that will address the needs of the customer. It's kind of like a to-do list for the project. The customer prioritizes the list to make sure that the most valuable stories are at the top of the backlog. The development team selects a set of stories from the backlog that they think can be completed by the end of the iteration (usually 2-4 weeks in length) and decomposes them into small tasks.


The team commits to each other to deliver the functionality that addresses the needs of the selected stories by the close of the iteration. Then, they get to work. On a daily basis, the team meets for 15 minutes to synchronize their work in a daily meeting. They answer 3 basic questions:


  1. What did you work on yesterday?
  2. What are you working on today?
  3. Are there any impediments to completing your work?

At the end of the iteration, the team conducts a live demonstration for their customer of all of the functionality they developed in the previous iteration. The customer either accepts or rejects the functionality and discusses any issues with the development team. The team then meets apart from their customer and reflects on the last iteration. Again, they answer three questions:


  1. What went well?
  2. What didn't go so well?
  3. What do we need to do to improve the way we work in the next iteration?

Iteration Mechanics

The customer reviews the backlog and can add, delete, or modify stories based on their current business needs or on the results of the last iteration. This kicks off the next planning meeting and another iteration. The team continues in this iterative fashion until the project is completed.


This is the heart of agile software development. Delivery of working software on a regular basis, customer collaboration, responding to change, and enabling and embracing the interactions of individuals on a project team.