Agile - everyone claims to be doing it nowadays, including VoxGen’s development team. But what does it mean, and how does it help you and us?

The goal of any project has to be getting a working system in front of customers, delivering business benefit, in the most efficient manner possible. Often this is translated into meaning the shortest possible timescale, with some immovable deadline rushing towards us like a locomotive driven by a committee of raving loonies - but that's another story.

Obviously, we could all sit down and come up with a fully documented, legally binding, detailed requirements specification and delivery schedule that everybody is bound to; teams of project managers, business analysts, designers and technical specialists could attend layers of meetings, track progress and raise change requests; delivery would be guaranteed (ha!) and the product delivered would be exactly as specified…

However, as we all know, projects will experience changing (or unknown) requirements, reprioritization of objectives, technical roadblocks and scope-creep throughout their lifecycle. We’ve found that using agile practices has really helped better manage all that change.

The Agile Manifesto is a statement issued by leading software developers that states:

Manifesto for Agile Software Development

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

Kent Beck James Grenning Robert C. Martin
Mike Beedle Jim Highsmith Steve Mellor
Arie van Bennekum Andrew Hunt Ken Schwaber
Alistair Cockburn Ron Jeffries Jeff Sutherland
Ward Cunningham Jon Kern Dave Thomas
Martin Fowler Brian Marick

© 2001, the above authors. This declaration may be freely copied in any form, but only in its entirety through this notice.

That all sounds lovely, but what does it mean? It does NOT mean an end to planning or documentation, but it does mean trusting your team and adopting an agile software development approach.

‘Agile software development’ refers to a collection of software development methods based on iterative and incremental development. With each method the requirements and solutions evolve during the project through collaboration between self-organizing, cross-functional teams. Each method promotes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change.

So far, so good - but which method should I use? VoxGen has adopted a mix of methodologies based on Scrum and Kanban. We work with our customers in small, cross-functional teams, typically containing analysts, designers, developers, testers, technical specialists and user representatives. Each skills group is responsible for all aspects of its domain and the cross-communication to the other skills groups and to the customer. It is their job to deliver the project.

We typically set up a project to deliver across two or three iterations, with each iteration delivering working software. Iterations are initially planned at a high level, with rough estimates of effort across a fixed timescale, allowing our customers to plan accordingly. Within each iteration we dive into the detail and extract the real requirements and technical limitations. That produces more detailed estimates and a prioritized series of issues, stories, tasks and bugs. We then work through the prioritized list, delivering the most value first, limiting the amount of work-in-progress so that the team doesn’t become swamped with multiple threads of work. Software is tested as it is developed, from unit tests through to manual quality assurance, and the platform team get to practice deploying the solution to our development and testing environments. As new or changing requirements are raised, they are added to the backlog of issues and reprioritized alongside all the other issues on a regular basis. In this way, we are able to proceed in a dynamic and flexible way and work around issues as they arise.

But what does this mean to you? Well it shouldn’t mean much, other than its role in delivering the same finished product to you but in the most efficient manner possible.

What’s more, you’ll hopefully have received working, deployable software that your own customers can use very early on in the project lifecycle, delivering business value straight away. You’ll have received one or two updates to the product that added important functionality in a prioritized approach. Any problems, change requests, or design changes will all have been absorbed into the project with minimal disruption.

Popping out at the other end is the product of your dreams. All that we ask in return is that you collaborate with us throughout the development and deployment process. We work on the basis that you’re part of this team too.


Topics: IVR Technology