Transitioning from Waterfall to Agile: Tips for a Smooth Journey
Transitioning from Waterfall to Agile: Tips for a Smooth Journey
Sanjay Zalavadia explores the key concepts behind a smooth and successful transition from Waterfall to Agile practices.
Join the DZone community and get the full member experience.Join For Free
Excitement over Agile methodologies has exploded since 2010. Echoes of a near panacea in software delivery have extolled Agile techniques as the solution to customer demands on application interface. Clarity of application is the primary attribute that many Agile teams and companies acclaim.
Agile methodology clarifies software delivery and facilitates the delivery pipeline. However, smooth transition to Agile is more opaque in its complexity. The organic nature of Agile drills beyond procedure more deeply into the essence of vision and development. The challenge of transition from procedure-driven tradition to organically-driven innovation is a near-total shift in conceptual stature. To begin the journey, let’s first look at the point from where software development has emerged.
What Is Waterfall?
The traditional approach to system design and development has been Waterfall. Waterfall, so named because development and release follows a descending set of chronological steps, requires that all processes consistently flow from project beginning to project end. The sequential stages of requirements, design, implementation, verification, and maintenance consistently remain in place. The Waterfall method assumes that all elements of development are to be assembled at the beginning of a project. User input, managerial needs, and anticipated outcomes are decided before the project is actually implemented. Then the rest of the project is enacted in a subsequent flow as in a waterfall.
The Waterfall approach is very structured according to defined procedures. Waterfall testing is conducted by reference to requirements-defined functions and design-defined scenarios formulated in the initial stages of the project. The structured approach to delivery often depends on abstract client-defined requirements, a fact that often compels re-engineering of the full application during the verification stage. As requirements rapidly change the original requirement and design may no longer apply to consumer needs or preference. And because the project is sequential, it tends to require a longer production timeline.
The pattern of Waterfall design is sequential rather than iterative. The project flows in a descending order of stages that better applies to physical manufacturing and construction than virtual coding design. Development is based on irreversibly constructed divisions. Although feedback loops between phases allow for modification, the process elongates time to market. Modification generally only allows updating the immediately previous phase and does not generally take into account how updates may alter the validity of other phases of development. The extended time required for unanticipated updates makes for inaccurate time and cost estimates.
With a near 60% failure of the Waterfall method to deliver, the need for initially stable software, for agility rather than finite structure, iteration rather than strictly formatted stages, updating outdated findings in iterative implements, and re-defining DONE, motivated systems analysts search for an alternate means of software delivery.
Image Source: Douglas A. Hughey
What Is Agile?
Agile is more than a buzzword. Development with Agile is iterative and incremental in its approach to software development. The outcomes of earlier stages in development impact or determine the planning of subsequent stages. Agile is an answer to the challenges of software development and release that is apart from the strictly controlled Waterfall model.
Agile approaches software development from an innovative perspective. Techniques based on predictable results are eradicated from Agile methodology. Agile processes not only accept the uncertainties of the software build, they utilize uncertainty as a resource for innovation. Preconceived expectations are foreign to the organic nature and incremental technique of the Agile build.
The non-hierarchical Agile approach enables teams and team members to freely collaborate within self-directed teams. Teams initiate development with succinct descriptions of build components and formulate details through iterative increments of development, discussion, testing, and review. Risks are better managed through incremental means of product engineering. Incremental development also more quickly produces functional software applications. Testing and review are also incremental, occurring throughout the development process rather than at the culmination of production. Management and project sponsors can make resolute decisions along the development timeline.
Image Source: Forty
Agile is designed to promote positive and functioning relationships among team members, enabling self-administered teams and team processes that address the continual consumer demand for updates and the fluctuating levels of software consumption. Teams integrate multi-talented resources into cross-functional process to boost production and inspire innovation.
Agile methodologies allow assessment of project direction throughout the entire software lifecycle. The strategy of regular iterations incentivize teams to produce potentially shippable output at the end of each incremental build, providing immediate opportunities to redirect objectives for quicker and more continuous delivery. In this way, software development can happen while requirements and analysis are occurring. Development is integrated into fact-finding through the build activity rather than strictly defined as stages of production.
- Collaborative interactions among individuals over processes and tools
- Software development over extensive documentation
- Interaction and collaboration with customers over contract negotiation
- Responding to change over following the prescribed plan
The imperative attributes of Agile development are:
- Active user involvement
- Teams empowered in decision-making
- Requirements that are fluid while timelines are fixed
- Envisioned as overall requirements at a high level
- Executed as small, incremental release cycles that are iterative
- Focus on frequent delivery
- Assurance that each increment is done before moving on to the next incremental cycle
- Ensuring that the testing lifecycle is integrated throughout the entire project lifecycle
- Collaboration and cooperation among all stakeholders
The visual focus and collaborative participation of Agile can be a rich and rewarding team experience that inspires the output of value in software applications. When team members are motivated, the results in production can be amazing.
Transitioning to Agile Methodologies
Hierarchical structures, such as the Waterfall model, use leadership and power personality tools. Leadership personalities employ salesmanship, are charismatic, use role modeling, and negotiate to effect process. Power personalities also use negotiation and tend to finitely define roles, require authoritative permission, and sometimes use intimidation or coercion to influence production processes.
Agile methodologies rely more on culture and the utilization of the right tools, including test management. Agile emphasizes the culture of oral and plausible communication, belief and reverence for vision, prescribed forms of conduct, and people as the primary source of productive power. Agile processes emphasize strategic planning, financial incentives, solid metrics, progressive standards, and self-motivation.
With these attributes in mind, transitioning from a traditional development model to Agile development requires an approach that coincides with all points of organizational concern. The priority of those responsible for transitioning to Agile should be to address each consideration that could be impacted by the transition, employing tools towards probable smooth operations during the transition process.
It is the responsibility of transition managers to ensure that Agile techniques are applied to a project that suits Agile processes. The project requires an active and engaged customer as a business sponsor. Development should be of medium simplicity and have a timeline of 2-3 months. Too much complexity that would complicate the learning process for team members should be avoided. And a shorter timeline can better engage management interest, which could otherwise wane over time. To further engage management, the initial Agile project should be important to the organization, and one that would probably fail in meeting production and timeline requirements if it were developed within the Waterfall model.
Build the Right Team – Select the Right People
For the first Agile project, begin with one Agile team at project start, and expand to no more than five development teams during the project lifecycle. Agile teams are multi-disciplinary. Select the multi-talented people who may function productively on a cross-functional team. Select team members whose thinking varies from the strict status quo, along with those who have varied backgrounds – such as an analyst with a philosophy degree.
Avoid large egos, which tend to suck the air out of the room and also tend to lack self-evaluation. Ensure that there are no negative relationships among team members. And do not force reluctant participation, even if from high expertise or political clout. Enthusiasm is what promotes Agile.
Many times the best Agile personalities are originators who may seem unorganized and unconventional. Originators prefer change that challenges the current structure, which makes them probable inspired innovators. The originator personality challenges assumptions, thrives on risk and uncertainty, and demonstrates a reduced regard for policy. The drawbacks could be that the originator as a team member may be excessive, aggressive, and a renegade.
Another personality to consider for an Agile team is the pragmatist, who can be practical, agreeable, and flexible. The pragmatist prefers workable outcomes and is many times primarily focused more on results than structure. Pragmatists tend to consider both sides of a matter and therefore can be effective mediators, while also gravitating more towards interaction with the team. Drawbacks with the pragmatist may be indecisiveness and being overly compliant.
Select team members that therefore complement each other’s personalities as well as each other’s technical expertise. Also seek sponsors and opinion leaders who favor Agile, visionaries who focus on innovation, and agents who have Agile experience. A range of talents and perspectives make up the most innovative and productive Agile teams.
Acquire a Buy-In From Management
Encourage and engage management into accepting and promoting transition goals. Promote the cost-effective aspects of the Agile process, as well as the speed to continuous delivery. Overcome resistance to the as yet non-validated status of the project with attention to reduced risk. Understand the traditional views that favor predictable behavior and continuous anticipation, so that you can emphasize and clarify the improved benefits of the iterative process in providing reliable outcomes.
Understand that those who are most resistant to change are generally deliberate in their approach to situations, disciplined in their adherence to standards, and organized in their approach to processes. They normally prefer activities that preserve the status quo such as predictability, detail, and routine nurture their feeling of safety, which makes them cautious in respect to the unpredictable culture of the Agile methodology.
First research who people in the organization listen to. These may not be those with formal authority. But they will be those who influence and advise operational behavior. Convince the influencers of the benefits of Agile. Then utilize these influencers to convince decision makers. Emphasize the problem that requires corrective action rather than any devised solution. People feel they already know the solutions. But fuller comprehension of the problem can lead to an understanding that solutions may be elusive and require the in-depth iteration of Agile methodologies.
Listen to alternative solutions and interject the manner in which Agile methods parallel or interact with those solutions. Then communicate why the change is currently necessary. Let stakeholders know why now is the moment to invest in the Agile process. Help those who resist the transition see the development process and thereby recognize the benefits of the change into Agile. Then motivate their recognition with specific benefits that nurture their professional vested interests and alleviate their anxiety toward risk.
Inspire the Team
Implant a sense of project urgency into the team. The importance of the project must be in the forefront of every team member’s motivation. Then connect the team to a vision for the product and the process of delivery. The inspired vision of production is what inspires innovation and sees the team through difficult iterations. Empower team members and the team as a whole to be decision makers within the process, and to act on their decisions.
Image Source: zen.digital
Consolidate development into finely tuned team symmetry. Utilize coaches experienced in Agile methods to assist in synthesizing team performance. Plan the build, support the process, and create incremental wins that produce conceptually deliverable products. Plan, produce, test, adapt, and repeat.
Agile as an alternative is proving to be a substantially feasible answer to software delivery.
Published at DZone with permission of Sanjay Zalavadia , DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.