We posted a few weeks ago about pros and cons of fixed-price vs. variable or T&M work, and I thought to follow up this week with some specific comments about Agile software development. The basic message last time was that engaged clients (our very strong preference) wield significant authority in a collaborative environment – we like to position that environment within an Agile development framework for maximum benefit.

Agile development vs. waterfall development

Agile has been around for some time, and it means different things to different people. We’re flexible with Agile implementation, but at its core for us, Agile means a cyclical development process that adapts to shifting priorities as deliverables evolve. This stands in contrast to some other approaches, like Waterfall, which depend more on pre-established requirements that want to remain unchanged during development.

Agile development in action

We’ve experienced a long chain of successful engagements with active clients working in an Agile setting. Clients help to define sets of features (the backlog) and requirements, and clients set the priority for feature development. Our team reviews the backlog top-down, picks the features or feature sub-sets they feel confident about completing in the next cycle (typically a 2-week ‘sprint’) and then it’s off to the races.

The team dives in and develops features, commenting in daily brief standup meetings about progress and any blockers, soliciting help where necessary, and then committing finished code back into the project repository where we typically execute nightly builds and releases (continuous integration). At the end of the sprint, the team demonstrates their work, the client reviews, tests, and updates the priorities as necessary for the next sprint (grooming the backlog) and off we go again. We often see the team roster change too as demands shift into QA and other disciplines – flexibility is key.

Tangible results in short order

During almost every engagement that follows this pattern, we hear clients comment on how interim deliverables and demonstrations influence their ideas for what should come next, often leading to entirely new features, prioritization overhaul, and the extinction of some features as we go along. A purist might view this as barely controlled chaos but when a client leverages their business judgment and their fundamental understanding of their business needs, the result is a fast-moving, rapidly converging exercise that yields tangible results in short order. The backlog often swells into multiple downstream phases for the team to consider after the first versions go intoproduction. Ittakes work and dedication from the clients participating in the process, but we think the clients who embrace Agile reap the rewards: business-changing systems and capabilities generated quickly and relatively inexpensively, with roadmaps defined for downstream constructive work.