1. 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:
2. 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
3. what their program will do at the end where as in agile as the requirements keeps changing
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,
4. 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 manager
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
5. 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.