Agile software development methods support a broad range of the software development lifecycle. Some focus on the practices while some focus on managing the flow of work. Some support activities for requirements specification and development, while some seek to cover the full development lifecycle.
What is agile?
Agile is a time-boxed, iterative approach to software delivery that builds software incrementally from the start of the project, instead of trying to deliver it all at once near the end. Traditional waterfall methods aim to map out all the sequential development steps from A to Z, agile instead focuses on first going from A to B, then from B to C. It’s a conceptual framework that promotes incremental, well-planned iterations throughout the development cycle.
It works by breaking projects down into little bits of user functionality called user stories, prioritizing them, and then continuously delivering them in short two week cycles called iterations.
What are the benefits of agile?
- It provides greater transparency. Everyone from the stakeholders to the developers, designers, and PMs who do the work is involved and, therefore, know what’s being worked on. Both the current project status and the road ahead are crystal clear.
- It makes you more flexible. Shifting priorities or new business needs? No problem! Inserting and reprioritizing stories in your backlog is instantaneous, allowing you to stay nimble and adjust accordingly.
- It makes your team more predictable. Because the work is clearly prioritized and organized in tight sprints (ideally, one or two weeks at a time), new features are shipped frequently and more predictably.
- It allows you to focus on business values. The stakeholder (or customer) determines the order in which features are built, which lets the team know what’s most important for the business.
- It helps you focus on users. The purpose of user stories is to meet the needs of real users so that each feature that is designed and developed delivers incremental value.
- It will increase the quality of your software. When the work is broken down into manageable units and frequent builds, testing and reviews are more focused. As a result of being able to locate and fix defects more easily and rapidly, you can improve the quality of what you build.
How does it work?
At its core, Agile does the same thing you and I do when faced with too much to do and not enough time.
We make a list
Sitting down with the customer, we make a list of features they would like to see in their software. We call these things user stories and they become the To Do list for our project.
We size things up
Then, using Agile estimation techniques, we size our stories relatively to each other, coming up with a guess as to how long we think each user story will take.
We set some priorities
Like most lists, there always seems to be more to do than time allows. So we ask our customer to prioritize their list so we get the most important stuff done first, and save the least important for last.
We start executing
Then we start delivering some value. We start at the top. Work from top to bottom. The building, iterating and getting feedback from the customer as we go.
We update plan as we go
Then, as we starting delivering, one of two things is going to happen.
we will discover:
We are going fast enough. All is good. Or, We have too much to do and not enough time. At this point, we have two choices.
We can either
- do less and cut scope (recommended).
- push out the date and ask for more money.
We support you by recommending agile methods for adoption and for outsourcing. We work with you to choose tools and metrics that increase visibility and predictability along the way.