What is agile software development?
It’s a project management framework that emphasizes…
- High performing teams, not high performing individuals
- Getting started when “just enough” detail is available
- Responding quickly to change
- Customer engagement & feedback
- Frequent delivery the highest business value software
It’s not fundamentally different from what you know about software development. The phases involved are the same – analyze, design, develop, implement, just different in the way the team and project is organized, essentially breaking the project into a series of small ones. For example, a twelve month project could be organized into four, three week projects or iterations, facilitating the delivery of prioritized software every three weeks – you can see how this would be advantageous to the business.
Our customer assessments have offered some interesting metrics around the results of small, medium and large software projects:
- %90 of small software projects are delivered on time and on budget
- %60-70 of medium software projects are delivered on time and on budget
- %50 of large software projects are delivered on time and on budget
Enough said…
Agile software development is high performing teams, not high performing individuals
Project teams are self-organized, self-directed, cross functional, work collaboratively and meet often.
In a self-organized, self-directing team, the team members estimate work effort for tasks and they choose which tasks they will work on. No one is looking over their shoulder or ensuring they are “being productive”. There is however, a highly visible metric on the progress the team is making towards the commitments they made “as a team”, it’s the Burn Down Chart.
Also, the daily agile stand-up meeting provides the entire team with insight into one anothers progress. This peer-to-peer visibility is a strong motivator.
The cross functional aspect of the team means the team is made up of a group coming from what could potentially exist today across different business units. The team would include a combination of business analysts, developers, quality testers and business and client representation each performing their various chosen tasks and responsibilities within the project iteration.s (e.g. three week periods).
The entire team commits to the work and goals together. When they complete the goals successfully they succeed together and when they don’t… it’s together too.
Since a project includes multiple iterations, the team learns from each experience, finds efficiencies, reuses approaches that worked, scratches those that didn’t.
After a few iterations, the team starts working like a well oiled machine, with each component running at peak performance.
Agile software development is getting started when you have “just enough detail”
Whereas more traditional project management approaches gather “all” the requirements up front, we call this BRUF – Big Requirements Up Front (and we all know they are usually wrong), agile says if you have enough information to start building and finish the iteration with working software, then go for it! Thus, potentially reducing the ramp up time of a project and delivering business value earlier.
Agile software development is the ability to respond quickly to change
Each iteration of an agile software development project involves a feedback component and review of the priorities. This gives the project the ability to absorb changes. Here is an example:
- At the end of the iteration the team schedules a demonstration of their “working software” and collects feedback. One key stakeholder who attends the demo say’s “well, now that I see it, I think it should look like…” The team captures the feedback to be prioritized before the next iteration starts.
We have all heard that before…and it’s the reality. Rather than resisting, agile software development addresses the need to deal with this reality…users don’t know what they want until they see it.
Agile software development is regular customer engagement & feedback
At the beginning of each iteration, there is opportunity to refine requirements with input from the customer or customer representative, review feedback collected during the demonstration and prioritize the work to be completed next. But the luxury is that at least during the 3 week iteration (it could also be 2 or 4 weeks, whatever is chosen by the team) the agile team is sheltered from external noise and is totally focused on their sprint goals.
Agile software development is frequent delivery of the software with the highest value to the business
Since iterations are short periods of time and each includes a review of the business priorities and requirements, the high priority features with the highest business value are naturally built first.
You have probably heard the statistics…80% of software features are never used. An agile software development approach regularly checks into what customers are asking for so that we are always focused on the current priority and highest ROI features…the ones that will be used.
What should you do next?
Contact us!
Scrum Masters Inc provides expert Software Development Life Cycle process improvement.
The services we offer include:
Thanks for visiting Scrum Masters Inc