Scroll Top

Pitfalls of not Transitioning from Waterfall to Agile/DevOps

– By Anuradha M
In a dynamic business environment, change is the only constant and organizations worldwide accept this fact. To cope with this evolving environment there is the need to constantly view and review existing strategies and policies. Work practices also keep changing to include evolving supplier, buyer, and partner relations and there is the constant need to innovate and reinvent existing business practices. This could involve technology innovations and upgradations. When it comes to technology innovation, Waterfall was considered to be the preferred methodology. This linear approach assumes that a project is finite with a defined beginning and ending and results, i.e. predictable. The fact is, though Waterfall is viewed as a manageable and cleaner approach to project management it may not be able to provide the agility required for today’s complex and evolving business environment.

Understanding waterfall methodology

Waterfall follows a straight path and includes the following stages in project development:

Waterfall methodology views each of the above steps as a distinct stage and unique from the one before or after. For example, in a development environment using the Waterfall methodology, a requirements document would be put together, which would detail the project’s requirement in order of priority. This stage could take from a few days to several weeks. A typical document would include detailed requirements, user scenarios and functionality layouts.
During the next stage, i.e. analysis, the engineering team would ask questions, update the document and launch the design face which would include system design, interface design, mock ups etc.
The actual implementation is the next stage where the engineering team develops functionality and prepares it for testing.
Forrester recently published a research on the rapidly evolving market of tools used to manage software requirements. The report assessed the maturity of ten categories of the technologies within software requirements management tool ecosystem based on user, vendor, industry expert interviews and product demonstrations. According to this report, ‘traditional requirements practices are dead’. The report further states that ‘Requirements errors are often the root cause of expensive rework’.
To elaborate on this, the efficacy of requirements gathering is always a challenge. Customers can be intimidated by the extent of detail required leading to ambiguity. To ensure that requirement gathering is fool-proof, some development teams put together wireframes and mock-ups but in spite of this, the final product may still fall short of customer expectations. The question which arises is, ‘what if some changes are required to be made to the design during the implementation phase?’ Since projects during requirements gathering are ambiguous, the chances of the end product not completely matching business requirements cannot be ruled out. Changes, if made, can be costly and difficult, disrupting schedules and pushing the deadline.

Understanding agile methodology

Agile management in comparison to Waterfall, begins from the hypothesis that we really don’t know everything at the beginning of a project. Even if we are willing to assume that we know a lot, there is still the need to be ready for changes which could happen at any stage of a project’s development. Agile, in that sense, safeguards the customer but more importantly it safeguards the developers by getting the customer involved through all stages of development. It helps to identify and squash bugs early and often, bringing down iteration time considerably.
The Agile methodology is iterative in nature and a team-based approach to development. It focuses strongly on the rapid delivery of an application in complete functional components. Instead of creating tasks and schedules, the project is boxed into sprints which occur in defined durations. Each sprint would ideally have a running list of deliverables which are determined by the client. Agile relies on a very high level of customer involvement throughout the project, especially during reviews.
Agile’s strength lies in its strong dependency on customer involvement. As a result, the customer feels a sense of ownership and works extensively with the development team to see the project to closure. The transparent nature of the approach ensures that the customer constantly sees what is going on and has the option to go with functional releases instead of waiting for completion of the full development cycle. Development is user-focused, likely a result of more and frequent direction from the customer.
As a result of its customer-centric approach, Agile makes the planning and designing stages straightforward. Progress is easily measured and the full scope of the work predictable. During development, multiple teams work together. For example, business analysts can learn document requirements on-the-go, and testers can prepare test scripts even while coding is in progress. Since design is completed early in the development lifecycle, Agile lends itself to projects where multiple software components must be designed (sometimes in parallel) for integration with external systems.

Understanding devOps methodology

DevOps is an abbreviation of Development and Operations. Its inherent strength lies in its ability to decrease IT operational costs while improving software quality and accelerating time to market. A recent survey commissioned by a leading technology provider reveals an average of 19% revenue increase directly attributed to the adoption of DevOps methodologies. A drill down to the most common financial attributes of DevOps adoption provides more clarity.

Automating the software delivery process benefits the organization financially in multiple value areas:

Adopting-devops
To understand how DevOps benefits an organization requires us to delve a little deeper into the subject.
As we all know, applications are a key driver to the growth and success of today’s businesses. Visibility into application performance and the efficiency of the software development lifecycle reaches far beyond IT and well into business stakeholders. Applications are complex and fast evolving, and with the expansion of mobile and web consumption demanding flexibility to handle constant requirement changes effectively, businesses are forced to reassess their application delivery strategies. Coping with the need for change requires more than a strategy! It calls for an ever-expanding budget without clarity on the financial benefits of adopting agile innovations.
New software development methodologies have emerged to address the need for agility starting from development practices to full automation of the software release process. This collection of best practices has matured into the continuous delivery (CD) process, which applies industrialization concepts to software. Designed to streamline and accelerate software delivery while ensuring that reliable software is released, CD creates an alignment between the application and changing business needs.
The principles of CD find their roots in the DevOps movement, established to bridge traditional gaps between software development and the operations team running applications. DevOps automates manual testing and release processes by replacing them with scripted procedures. It extends Agile development in building applications incrementally to include the full integration, testing, and validation phases. By streamlining application delivery across the entire development lifecycle, applications can be iteratively developed, automatically packaged and tested, and then released to production in a continuous, rapid, consistent manner. The CD archetype establishes the notion of an ever-evolving production-ready version of the application in a functional, deployable state throughout its lifetime.

Making the choice between agile, waterfall and devOps

Project-execution-methodologies
It would be a natural outcome of a cohesive environment where multiple stakeholders work together with an end goal, i.e. successful product launch, as their only aim. It does away with looking for reasons for failure and focuses on what works best to get the work done fast. This kind of cultural change is what defines the methodology. To put this differently, in a culturally evolved organization, even if the team is aware of the challenges associated with the Waterfall approach, they might prefer it because it could be the best option. They might choose this approach simply because the customer does not want to be involved during the development phase of a project for various reasons. There could be several other reasons but what is important is the cultural makeup of an organization. Even mature organizations can run into problems with projects because of their inflexible approach to projects. Overall, we can comfortably say that the culture of agile embraces the aspect of continuous delivery and integration. Continuous delivery accelerates the process of coding into building and into testing and deployment.
One of the top DevOps adoption drivers is the need to increase quality, followed by the need to improve the customer experience, reduce complexity, and overall IT costs. In order for Agile/DevOps to be successful, quality initiative must be made an integral part of the methodology. Specifically, QA roles need to be embedded into the Agile/DevOps team from the get-go; QA automation must be aligned with build/deployment automation. Continuous Integration (CI) and Continuous Delivery (CD) practices strive to make small changes, integrate them frequently and ensure fast feedback. This results in fewer failures and faster recovery from failures. But mature teams go beyond CI/CD, to a Continuous QA through automated testing. Continuous QA and automated testing begin with a comprehensive framework that defines the process, scope, and tools.
To summarize, it is best to define the process, with prototyping to provide the customer a better view of the finished product early in the cycle. This helps to improve requirements and customer communication. After this, the iterative approach offered by Agile or DevOps will ensure that the overall project has no unpleasant surprises at the end.

How Trigent can help

Trigent’s DevOps solution accelerates the software delivery process by providing a comprehensive Continuous Delivery environment. It leverages your existing ALM tool investments, uses industry best practices and provides real-time dashboards. It offers a self-service mechanism for Dev – Test provisioning either in cloud or hybrid environment.
Our DevOps and Continuous Delivery teams can help you:
Trigents-devops