Agile Software Development: Getting It Out the Door Successfully

"Agile" is a very popular term in the software development industry and beyond. Dozens of systems administrators started LISA '12 by attending Geoff Halprin's tutorial on the Agile methodology. Agile has developed from improvements to the original "waterfall" methodology for the software design life cycle (SDLC). In the waterfall model, projects moved from one highly-prescribed phase to the next. Waterfall works well for projects where the requirements are well-known and static, a rare case for most IT projects.

As the field matured, new methodologies like Extreme Programming (XP) were developed. XP was based on the idea that a minimum level of formality is desired. More importantly, it operated not on the assumption that developers were not interchangeable cogs, but competent talent who needed jut enough guidance to keep them on track. XP focused on many small iterations that delivered value rapidly.

Agile evolved from XP beginning with the Agile Manifesto in 2001. Agile favors individuals and interactions over processes and tools, working software over comprehensive documentation, customer collaboration over contract negotiation, and responding to change over following a plan. Like XP, Agile wants to deliver value to the business via small, time-boxed iterations. The waterfall methodology has increasing risk through the life of the project and only delivers value at the end. With Agile, small amounts of value are delivered regularly.

The key unit of work in Agile is the "story". A story consists of a definition ("As a ___ I want ___ so that ___") and acceptance criteria ("Given ___, when ___ then ___"). Multiple stories comprise an iteration, which is the basic unit of delivery. Stories can easily be represented on a Kanban wall, which shows which stories are in queue (the "backlog"),  in progress, blocked, and completed. Work assignments are pull-based, allowing developers to begin work on the highest priority task as soon as they complete one.

Two key types of meetings are specified in Agile. The first is the daily standup meeting, where the team checks in to report what they did the day before, what they plan on doing that day, and any blockers. Any further discussion is held until after the meeting. The other meeting type is the showcase, where an iteration's completed work is shown to stakeholders. Each iteration should produce releasable, if not necessarily released, code. This allows the stakeholders to see visible signs of progress and provide input to fine-tune the path of the project.

Although software development seems outside the duties for most sysadmins, understanding the methodology is important. As DevOps blurs traditional distinctions, this understanding becomes even more crucial. Even in more traditional operations environments, Agile concepts such as the Kanban wall and daily standups can be valuable tools for improving communication and keeping teams focused.