6
Waterfall Vs Agile Methodologies Choosing a right methodology for the project management enables the organization to tackle the projects comprehensively, systematically, and an approach to assess the risks and difficulties that large projects encompass. It also offers benefits at the strategic, tactical and operational levels to an organization. The two basic, most popular methodologies are:

Waterfall vs agile

Embed Size (px)

Citation preview

Waterfall Vs Agile Methodologies

Choosing a right methodology for the project management enables the organization to

tackle the projects comprehensively, systematically, and an approach to assess the risks and

difficulties that large projects encompass. It also offers benefits at the strategic, tactical and

operational levels to an organization. The two basic, most popular methodologies are:

Waterfall Model (which is also known as Traditional Model) and Agile Model. Both of these

models are being adopted by the managers for successful completion of the projects.

The Waterfall or Traditional model is a linear or

Sequential approach to develop a Product. In this methodology, each phase of the product’s

life cycle takes place in sequence of events like: Requirement gathering, Designing,

Developing, System Testing, User Acceptance Testing(UAT), Fixing the issues and delivering

the finished product whereas Agile is an iterative and team based approach to develop a

product. In agile methodology, Instead of developing the product with all the features at

once we divide the project into the smaller segments called sprints and incorporate new

features in each iterations or sprints. Instead of extensive planning and design up front,

agile methodologies allow changing requirements over time by using the cross functional

teams who work on successive iterations to develop a product. In this model , the goal of

each iterative is to develop a working product which has to be demonstrated to the client

and the feedback will be incorporated in the next iterations. In contrast, waterfall model

doesn’t allow us to develop a working model in each stage in fact we have to complete the

requirement gathering and design before actually developing a product. In traditional

model, we cannot revert back the implementations that we had built in earlier stages. If we

need to make changes in this model, we have to build the entire project from scratch. Agile

methodology offers developers to develop a product with less bugs compared to waterfall

model as the developers has to test the product in each iteration where as in waterfall

model we will test the product only at the end of development module. As agile

methodology provides flexibility to make changes depending upon the customer

requirements it is more inclined to get the customer satisfaction than its counterpart. In

addition, under agile methodology we can effectively carry out modular partitioning of

software where we can work on all the modules simultaneously as the latter lacks the

modifications at the implementation stage. In addition, agile methodology allows all the

teams to work together when compared to the waterfall model where the interactions

between the teams are very less.

As the waterfall model is a linear one it is perhaps easier to

understand, especially for someone who is new to the software industry and the complete

process is well documented while agile methodologies are difficult to understand and very

often neglect to document the process because of more emphasis on working software. But

agile methodology’s allows organizations to use an empirical control method – which is the

process of making decisions based on the realities faced in the actual project. This method

allows everyone involved in the agile team to track the project progress and it also helps the

client to evaluate the product on regular basis and make changes to the product if desired.

Empirical approach can be very effective while developing a new product and in enhancing

or upgrading the existing product. It also gives an opportunity to continuously improve the

real time systems. Agile works best when the whole team is completely dedicated to the

project. Using the waterfall model client knows the size, cost , time line for the project and

what their program will do at the end where as in agile as the requirements keeps chang ing

in each iteration client doesn’t have a definitive plan ,the final product could look different

from the initial one. Water fall model works good for small well defined projects in

construction and manufacturing in contrast agile model are used in a software website and

marketing industries.

I strongly feel that in a world where business and technology

change so fast the software development methodologies have to be adaptable to achieve

the project success. Agile method is more flexible than waterfall method as it generates

more productivity over time.

In my opinion, one should use waterfall model when we are working on a project which is

simple, fixed scope (Requirement won’t change over time), fixed contract price, Client is not

expecting a rapid change in scope, focusing performing measures on delivery date, Upfront

Investment is not risky to make and when there is a clear picture about the final product.

Similarly, we should use agile methodology for the projects with aggressive deadlines, a high

degree of complexity, when there isn’t a clear picture about the final product, when we

have a team who can think independently and when we are working on some technology or

project which is new to the team (novelty). Let us consider an example where we can use

agile process; Going to the Indian restaurant for the first time and ordering a “Butter naan

with Rajma Curry”. Let us consider that the cook prepared the curry for the first time in that

way (as per order). Since the dish is unique we can say that there is some novelty here .In

addition to novelty, preparing a dish involves certain amount of complexity and urgency.

The same dish can be ordered by the other customer with different toppings So, in the

above example we can see the requirements keeps changing every time, so we can use here

an agile methodology .The same concept applies to the software Industry where we are

developing the projects which are notoriously complex and there is an urgency to deliver

this software with a functioning model in a short span of time. In addition, we also consider

the following factors to decide a methodology: Project size and complexity, Customer

availability, Level of integration with external systems, Customer tolerance for scope and

cost changes, Time to market and Customer Preference or requirement. One more

important factor that helps us to choose a model is whether all the team members are

working together in the same location or different locations. If project team members are

located very far apart than we have to consider traditional model as the work details has to

be discussed in detail to achieve project milestones and exact deliverables. Working with

the team members closely in the same location allows the team members to work on

changes moulded by the customer without an approval from the manager. In this Instance

we follow agile methodology as the teams are working in the same location.

In order to deliver the project on time, project manager has to

manage the project effectively. The Manager’s skill lies on his ability to utilize the resources

to achieve the end result. Project managers are in charge of executing the planning,

management, organization and control of resources to deliver the product on time. In a

traditional waterfall model, the role of the project manager is to create the requirements

and ask all the questions related to the product design. Depending upon the requirements

the project manager identifies the project plan to be followed. As this model follows

documentation approach, manager workload is much heavier at the beginning of the

project than it is during the release time. He also identifies the number of steps which has to

be completed sequentially. The important steps that he concerns about are: Requirement

gathering, Planning & Design, Implementation and completion. In agile model Project

manager sees the project as a series of small projects that has to be completed depending

upon the client demand in a responsive and adaptive manner. Agile project managers

encourage team decision making and provide more powers whenever required. They also

strive hard to build a healthy relationship in a team.

In agile methodology, the team takes the responsibility

for delivering the working model at the end of iteration. Team members in an agile model

can perform more than one role, so anyone in the group or product owner can act as a

project manager. We require a project manager in agile methodology only to build a gap

between the team and business or to help the team to know whether the decision taken

can lead to project success or failure. They also make sure to involve all the team members

while creating planning and project artefacts. In contrast, in waterfall Model the project

manager takes the responsibility to deliver the project on time to the client. He will be

involved in all the phases of software development life cycle.

Organizations while adapting to waterfall model and

expanding bigger tend to create separate departments for each of the phases. As a result

each phase will be carried out by a team who tends to work in partial isolation from other

teams. For example, Requirement gathering phase will be done by Business Analysts, Design

by chief architects and implementation part by developers . This model indirectly effect the

company structure and the organization of teams by creating “silos” for highly specialised

people which in turn decreases the collaboration between the teams, Increases the

management cost and creates a environment that has little scope to improve. In general,

water fall model follows “Pure Project Organization” structure where the project manag er

has a full authority on the project and all members of the project team are directly

responsible to the project manager. However, Agile model is helpful for companies which

are following the Matrix Organizational Structure where project participants report

simultaneously to both functional and project managers. The main objective of this matrix

structure is to emphasize more on business needs and technical expertise. As the agile

project has more urgency and novelty it is better to flow the organization structure that

gives more importance to project deliverables rather than documentation.

The Agile Methodologies was basically put together as a solution to rectify the pitfalls

associated in waterfall model. They are typically used in software Industry to help

businesses respond to unpredictability. Crystal Clear, Extreme Programming, Feature Driven

Development, Dynamic Systems Development Method (DSDM), Scrum are few of the agile

methodologies being used in the software development industry. One of the popular agile

processes is Scrum methodology. Most of the managers choose to start with scrum because

it is simple and allows a lot of flexibility. Scrum is unique because it makes use of real world

progress of the project rather than guessing or forecasting to plan and schedule releases.

Scrum has three roles: Product owner, team members and scrum master and the projects in

this methodology are divided into sprints or iterations which last for 2 to 3 weeks.

At the end of iteration, stakeholders meet with the team members to discuss the progress

of the project and what has to be done next. The advantage of scrum is that project’s

direction will be adjusted based on completed task rather than predictions.

Below are the important steps to be followed during the scrum

process: Backlog refinement, Sprint Planning, Daily Scrum, Sprint Review meeting and Sprint

Retrospective meeting. Backlog refinement allows all the team members to share their

thoughts and concerns, and understand the workflow. Second step is Sprint planning, during

which the product owner holds a meeting with the team and decides which features are

important in priority for this iteration. Third step is a daily standup meeting where each

member has to explain what they have done for the day and has to outline the obstacles (If

any). Fourth step is Sprint Review Meeting, during which the team presents their work to

the Product owner who reviews the backlog and either accepts or rejects the work. Finally in

the last step, scrum master meets with the team to discuss what went well, what didn’t and

what all things we can improve in the next sprint. This entire process allows the team to

focus on performance and identify strategies for delivering the product effectively.