Why Agile Works
Agile works because it supports the process of software development in four key areas:
Agile works because it supports the process of software development in four key areas:
1. Empirical process
2. Daily visibility
3. Socialization of information
4. Rapid feedback cycles
Empirical Process
It is easier to understand an empirical process by first looking at a defined process. A defined process is one in which defined inputs generate defined outputs. This is the original manufacturing model. It is repeatable, and it is the model that traditional software development has assumed
In contrast, the empirical process is nonlinear. It requires frequent inspection and adjustment. It is well suited for new product development, which requires research and creativity—both relatively unpredictable activities. Software development, including the product management step of requirements gathering and validation, is best suited to an empirical model.
Software development teams are always creating something new. They do not follow a straight path with a defined output that is the same each time they go through the process. Instead, teams cycle through knowledge creation and problem solving, As team members formulate the solution, new questions emerge and new requirements need to be gathered.
Occasionally the team has to restart. An assumption turns out to be false, such as the availability of complete and accurate data to drive a critical process. Sometimes the environment changes and a new technology emerges that needs to be supported. At times the solution functionally works but the performance is slow.
Further, there is no escaping the QA team, whom you can always count on to identify some good issues that need solving. The list goes on. To accommodate this, the team must frequently check its progress and adjust its plan.
Daily Visibility
Agile improves visibility into the development process with a daily standup meeting. At the meeting, team members let each other know what they are working on and if they need help. Roadblocks are explicitly called out. Because this meeting is daily, issues cannot be ignored. Further, each developer commits to what she will be working on next in front of the team. Through this process, the team develops trust and the ability to be open and honest.
Socialization of Information
Agile processes facilitate the socialization of information. First, as mentioned above, the daily standup drives trust in the team. This creates an environment conducive to sharing news, even if it is discouraging. Secondly, because team members meet daily to share their accomplishments and plans, individual knowledge quickly becomes team knowledge, and the team stays aligned.
Rapid Feedback Cycles
Rapid feedback cycles are embedded in the Agile process. The feedback loop accelerates the team's learning and supports the empirical process needed in software development.
There are three connected cycles: the release, the iteration, and daily standup. The release may be an extended cycle, but the iteration is one to four weeks, and the daily standup provides feedback every twenty-four hours.
Agile feedback loops share much in common with the Plan, Do, Check, and Adjust (PDCA) process popularized by Dr. W. Edwards Deming in his quality control work: the team members formulate a course of action, execute against it, inspect their progress, and adjust their course accordingly.
Why Now?
Interestingly, Agile is not new. In fact it has been around since the 1990s. It is worth asking: Why now? Why has Agile become so popular?
To be a little controversial, I would say it is because of the failure of traditional serial or "waterfall" development and our attempts to control the software development process. Although I know there are many advocates of waterfall, in my experience it just does not work that well.
Further, the Internet and globalization have had profound effects on the software industry, increasing the intensity of competition and the rate of change. If you are still releasing annually or over an 18-month cycle, by the time your next version is available, the market will have moved.
Further, with the advent of Software-as-a-Service, hosted models, hosted download, and self-updating software, releases can occur with much greater frequency. Thus, companies have looked for a better way to develop software. Agile has met the challenge. Even so, best practices for Agile continue to evolve, including the constant challenge of working with distributed teams across multiple time zones.
Reference: Agile Excellence™ for Product Managers A Guide to Creating Winning Products with Agile Development Teams By Greg Cohen
No comments:
Post a Comment