You may have heard the term “Agile” more frequently these days, especially in the world of IT. So what’s all the buzz about? Agile is a method of developing software solutions, including websites, web applications, and mobile applications, that focuses on delivering high-quality working software frequently and consistently, while minimizing project overhead and increasing business value. Stick with me to learn how an Agile software development approach can improve the effectiveness and quality of your next software development project.
During our 20+ years as IT Professionals, we have all too often seen projects that are over budget and over schedule, while not always providing value to clients and their users. At the same time, we recognize that IT projects are often complex, requiring a deep understanding of our customer’s goals, challenges, industry, and customer needs and expectations. To address these challenges and opportunities, more and more software development projects are turning to Agile. In our experience as Agile Teams, we have seen the ability of Agile methodologies to dramatically improve results, while also increasing client and team collaboration, engagement, and satisfaction.
The Agile Manifesto
The Agile Manifesto, originally written in February 2001 by 17 software developers, states:
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.
While there have been criticisms that the Agile Manifesto is outdated and does not reflect the emergent realities of software development, nevertheless its core values still influence modern Agile practices.
The Agile Approach
While there are many implementations of Agile methodologies, the most common steps in an Agile software development approach are:
It’s important to understand a client’s vision and background when starting any new project. Agile software development projects start with a series of Discovery Sessions and research to understand a client’s goals, challenges, business climate, and customers and users. These sessions include key members of the project team including the client, project manager, designer, developer, and product owner to ensure a shared understanding across the entire team.
2. The Product Backlog
During Discovery, the team works together to create a high-level Product Backlog, a wish list of all the features that would be useful to the client and their users. The product owner works with the client to prioritize these features, determining the order in which the features are elaborated, developed, tested, and delivered. By allowing the client to determine priority, the team stays focused on delivering the highest value features before moving on to lower value features.
After ensuring the team understands the client’s vision and has created a high level backlog of features, the team delivers features through a series of time-boxed iterations called Sprints. These are fixed durations of 1-4 weeks (depending on the project size and duration),each delivering a subset of the overall product backlog.
4. Continuing the Cycle
Additional Sprints are conducted as needed to deliver additional features and incorporate feedback from previous iterations, reviews, and user beta testing. Each successive Sprint is both Iterative, providing improvements to work completed in previous sprints; and incremental, adding new features to the system.
Incorporating Agile methodologies into your software development process can have a big impact on the overall success of your program, as well as the interim usefulness of your development and investment. Feedback and correction can occur quickly to fix small glitches before they become big problems. Communication throughout the process is also improved by the Agile approach to project management. Overall, Agile provides a lean and effective model for the successful development of software.