Agile Process – Iterative Product Development Aligned with Client Needs
March 6, 2013
While Scrum, XP, DSDM, Lean Software Development and other Agile methodologies have caught on in the software development industry, many organizations see achieving agility in project management as problematic, to a certain extent. For those organizations, the traditional project management approach appears to be most effective in managing long-range business plans and creating enterprise-level forecasts.
However, at the team level the traditional approach fails as it doesn’t allow the development team to react to rapidly changing circumstances in the project environment and to align with client requirements. In contrast, Agile-driven projects are enabled to effective and efficiently manage changes through iterative product development.
Traditional Project Management vs Agile Process
Although both traditional project management and agile process aim to produce measurable and desired results, they offer quite different principles and practices for project delivery. Traditional project management promotes a “waterfall” approach, which employs predictability and forecasting as the basic tools in project planning. Such things as requirements, objectives, activities, schedules and outcomes are planned out accurately and organized into a sequence prior to any development step is actually taken. That’s why this approach is often called “predictive” – long-range accurate planning is used to forecast possible events and formulate a long-term plan that meets future delivery needs, according to the forecast.
Prototyping and Incremental Delivery
Agile development practices reject any predictability and long-term planning and promote an incremental delivery model instead. According to this model, regular iterations lead the product development life-cycle to create working products or prototypes for client evaluation and optimization. The key development stages – including requirements, analysis, design, implementation, development and testing – compose an iterative Agile process flow that aim to deliver multiple prototypes and moves the obtained result closer to the customer’s expectations. Prototyping serves as crucial input into the success of iterative sessions.
For Agile project management, the customer value is a number-one priority and so the entire iterative process is organized and managed around it. This approach requires that a small, highly-collaborative team is involved in the product development life-cycle and they collaborate on product changes, improvements and additional features during short sessions. “Change” is considered the driving force of team collaboration and so it should be embedded into the Agile process in order to let the team explore improvement opportunities and work on tailoring the product to its business purpose.
A Clear Indication of Product State
The most evident benefit of Agile-driven product delivery is that you discover how your project is being done very early at any stage of the development life-cycle. Lean-Agile project management promotes a non-deterministic process in which you can use regular iterations to align the product with client needs. In contrast, traditional project management tells you nothing about the quality of your product until your dev team enters the test phase, which is usually scheduled for the project’s end.
Besides, you don’t realize whether your client will accept or reject the product until the first beta testers try it. Thus, in terms of iterative software development the waterfall approach works fine only for setting up next releases, while the Agile process provides a clear indication of product state at any development stage. The given below graph summarizes the said (source: the book “Lean-Agile Software Development: Achieving Enterprise Agility”).
Agile Teams are Led rather than Managed
According to the waterfall approach, the traditional project manager (PM) employs the principles of management in decision making to handle the triple constraints of scope, schedule and budget. This professional likes to work within predictable environments in which the constraints are managed through the use of a detailed project plan based on forecasts. This approach makes it possible for the PM to practice micro- and macro-management in the team environment. Meanwhile, predictability removes the “spirit of self-initiative” and keeps the team within the limits of the project manager’s strict control.
In contrast, Agile process turns project managers into project leaders who facilitates teams rather than controls them. It replaces management with leadership to enable self-initiative and self-direction. Agile teams work within rapidly changing environments where creativity and innovation are the driving forces for successful product delivery.
The PM carries out two main roles: the role of a facilitator who enables self-direction and encourages teamwork, and the role of a coordinator who balances the conflicting interests between team members and stakeholders. Agile-based leadership ensures adaptability and flexibility in managing changes and fitting new circumstances in the iterative product development lifecycle.
Agility in Iterative Product Development with Virtual Teamwork
Iterative project environments require team members to interact with each other and stakeholders on a daily basis. Ideally the team should be located in one place. In case team members are dispersed across multiple geographies and times zones, virtual communication and collaboration can be used to ensure the agility in product development. Video conferencing, voice chat, collaboration tools or other virtual techniques let geographically dispersed personnel participate in daily discussions, work on several or more parallel projects and align with client needs. The success of virtual interactions is measured against the outputs delivered by the team.
Short Planning to Align with Client Needs
One of the popular myths about Agile is that you do not plan. It is really just a myth. As said, an iterative development team leads projects following a short release-scaled plan, while any long-term planning or forecasting is avoided. Brief, regular Iterations are used to show the team what tasks they are expected to do this iteration and what results are to be delivered to satisfy client needs. The project manager creates a short plan at the beginning of every iteration and then shares it with the team during the daily standup meeting.
Only about 15% of the PM’s time is dedicated to planning. The rest of the working time is allocated to executing tasks, communicating with the customer and tailoring the product (its prototype, if being more precise) to the requirements. This way of short planning and prompt execution aims to determine what’s nearly certain in the given iteration, rather than discovering what the team doesn’t know and can’t do now.
Testing to Improve both the Process and Product Quality
Making improvements to product development constantly is a key principle of iterative project delivery. In a Lean-Agile project, testing services as the way to explore and implement improvements into the product environment. Testing takes a very early step in the Agile process in order to minimize the cycle-time between revealing an issue and solving it. Developers collaborate with QA engineers and testers to deliver perfected code at the end of an iteration. This approach makes it more likely that any defects and bugs not detected until the project’s end will not have a series impact to product design, usability and functionality.
Agile testing is more than just finding a bug. It helps developers discover the causes of product malfunction and eliminate them. As a rule, testers use root-cause analysis and create acceptance tests up front in order to minimize any risk that client requirements are misunderstood. Agile testing lets improve discussions between customers, developers and testers at the requirements gathering level and enhance product quality at the implementation level.