|
So Why Use Agile?
Today, the mainstream software industry has a "poor track record" when it comes to delivering working software on time and within budget. It is widely reported that 80% of all software projects fail, and last year, the IEEE conservatively estimated that over $60 billion dollars was spent on failed software projects. What a disaster!
The Top 5 Reasons Projects FailWhen asked why their projects failed, managers and employees cited a wide range of issues. But these 5 reasons surfaced over and over again, as the main reasons why their projects failed:
Here's how Agile addresses these problems head on...So clearly, with so many project failing, there's Ota be a better way. And while Agile may not have all the answers for all the problems, here's how Agile directly addresses these key issues:
The Customer Is King...To address the lack of end-user or customer involvement, Agile made the customer a member of the Agile Product Team. As a member of the team, the customer works with the development team to ensure that their needs are met. The customer contributes to the requirements, approves the final result, and, is has the last word when making tradeoffs between which features are added, changed or removed from a release.
Requirements Are Written As Acceptance Tests Before Any Code Is Written...To address the issue of poor requirements, Agile insists that you write acceptance tests before you write code. As requirements are gathered, they are defined as features containing one or more use cases with concrete acceptance criteria. The acceptance criteria is used to write an acceptance test before any code is written. That means that someone actually has to think about what they want before they ask someone to deliver it! This approach radically changes the requirements gathering process and dramatically improves the quality of estimating and scheduling.
Schedules Aren't Assigned, They're Negotiated...To address the issue of unrealistic schedules, Agile makes estimating and scheduling a collaborative process between the Product Team and the Development Team. At the start of a release, the Product Team estimates the level of effort for a set of features. Then they ask the Development Team to review, revise and provide feedback on the estimates. The two teams work the estimates collaboratively until a reasonable schedule is achieved. Then everyone commits to the schedule and the work begins.
Nothing Is Carved In Stone, Except For The Delivery Date...To address the issue of lack of change management, Agile insists that everyone embrace change, that everyone be realistic about change, and that anything can change except for the delivery date! In other words, as the product moves toward release, the customer (sitting on the Product Team) can add, change or remove a feature based on its priority and value. However, they have to be realistic. If they add a feature, they'll likely have to take another one out, in order to meet the delivery date. And, the delivery date is always met. Period.
Tests Are Written Before Code Is Written And Testing Is Automated...To address the issue of lack of testing, Agile demands that tests be written first and that tests be run continuously throughout the build process rather than waiting until the "11th hour" to punt some bad code "over the wall" to a helpless test team. Each developer has to write their test first, then write the code to make it pass the test. The test is automatically run any time the code is changed. This approach makes testing the responsibility of everyone on the development and ensures the integrity of the build from the start of the project.
Project management is not a separate activity...To address the issue of inflexible and bloated processes, Agile integrates project management into the process. The project management function is shared across the development team. For example, each 7 person development team (scrum) commits to a release schedule that they personally negotiate. In addition, the code base automatically generates project tracking information. For example, burndown, velocity and test pass-fail charts are all automatically generated by comparing outstanding tests with test passed and tests failed.
Agile is a profound step in the right direction...As we said earlier, Agile may not address every software development problem, but it is a very profound step in the right direction. Based on the Agile Manifesto, it makes a serious attempt at addressing many of the key problems with current software development processes by empowering and respecting the people who are part of the process and by taking a pragmatic and realistic approach to the software development business.
To find out how you can become Agile, take a look at our Agile services...
|