Introduction To Agile Methodology
What Is Agile?
Agile
methodology is an alternative to traditional project management, typically used
in software development. It helps teams respond to unpredictability through
incremental, iterative work cadences, known as sprints. Agile methodologies are
an alternative to a waterfall or traditional sequential development.
Agile
software development is a group of software development methods in which
requirements and solutions evolve through collaboration between
self-organizing, cross-functional teams. Agile project management is an
iterative approach to planning and guiding project processes. It promotes
adaptive planning, evolutionary development, early delivery, continuous
improvement, and encourages rapid and flexible response to change.
An agile project is completed in
small sections called iterations. Each iteration is reviewed and critiqued by
the project team, which may include representatives of the client business as
well as employees. Insights gained from the critique of an iteration are used
to determine what the next step should be in the project. Each project
iteration is typically scheduled to be completed within two weeks.
The main benefit of agile project
management is its ability to respond to issues as they arise throughout the
course of the project. Making a necessary change to a project at the right time
can save resources and, ultimately, help deliver a successful project on time
and within budget.
Because
agile management relies on the ability to make decisions quickly, it is not
suitable for organizations that tend to deliberate over issues for a prolonged
period or for those that take decisions to a committee.
Where Did Agile Come from?
In 1970, Dr. Winston Royce
presented a paper entitled “Managing the Development of Large Software
Systems,” which criticized sequential development. He asserted that software
should not be developed like an automobile on an assembly line, in which each
piece is added in sequential phases. In such sequential phases, every phase of
the project must be completed before the next phase can begin. Dr. Royce
recommended against the phase-based approach in which developers first gather
all of a project’s requirements, then complete all of its architecture and
design, then write all of the code, and so on. Royce specifically objected to
this approach due to the lack of communication between the specialized groups
that complete each phase of work.
It’s easy to see how the
“waterfall” methodology is far from optimized compared to agile methodology.
First of all, it assumes that every requirement of the project can be
identified before any design or coding occurs. Put another way, do you think
you could tell a team of developers everything that needed to be in a piece of
software before it was up and running? Or would it be easier to describe your
vision to the team if you could react to functional software?
Many software developers have
learned the answer to that question the hard way: At the end of a project, a
team might have built the software it was asked to build, but, in the time it
took to create, business realities have changed so dramatically that the
product is irrelevant. In that scenario, a company has spent time and money to
create software that no one wants. Couldn’t it have been possible to ensure the
end product would still be relevant before it was actually finished?
Why Agile?
Agile development methodology
provides opportunities to assess the direction of a project throughout the
development life cycle. This is achieved through regular cadences of work, known
as sprints or iterations, at the end of which teams must present a potentially
shippable product increment.
By focusing on the repetition of
abbreviated work cycles as well as the functional product they yield, agile
methodology is described as “iterative” and “incremental.” In waterfall,
development teams only have one chance to get each aspect of a project right.
In an agile paradigm, every aspect of development — requirements, design, etc.
— is continually revisited throughout the life cycle.
When a team stops and
re-evaluates the direction of a project every two weeks, there is always time
to steer it in another direction. The results of this “inspect-and-adapt”
approach to development greatly reduce both development costs and time to
market. Because teams can develop software at the same time they are gathering
requirements, the phenomenon known as “analysis paralysis” is less likely to
impede a team from making progress.
In addition, because a team’s
work cycle is limited to two weeks, it gives stakeholders recurring
opportunities to calibrate releases for success in the real world. Agile
development methodology helps companies build the right product. Instead of
committing to market a piece of software that has not even been written yet,
agile empowers teams to continuously replan their release to optimize its value
throughout development, allowing them to be as competitive as possible in the
marketplace. Development using an agile methodology preserves a product’s
critical market relevance and ensures a team’s work does not wind up on a
shelf, never released.
The Agile Manifesto – 2001
Individuals and interactions: in agile development,
self-organization and motivation are important, as are interactions like
co-location and pair programming.
Working software: working software is more useful
and welcome than just presenting documents to clients in meetings.
Customer collaboration: requirements cannot be fully
collected at the beginning of the software development cycle, therefore
continuous customer or stakeholder involvement is very important.
Responding to change: agile development is focused on
quick responses to change and continuous development
Agile principles
1. Customer satisfaction by rapid delivery of useful
software
2. Welcome changing requirements, even late in
development
3. Working software is delivered frequently (weeks
rather than months)
4. Close, daily cooperation between business people and
developers
5. Projects are built around motivated individuals, who
should be trusted
6. Face-to-face conversation is the best form of
communication (co-location)
7. Working software is the principal measure of
progress
8. Sustainable development, able to maintain a constant
pace
9. Continuous attention to technical excellence and
good design
10. Simplicity—the art of maximizing the amount of work not
done
11. Self-organizing teams
12. Regular adaptation to changing circumstance
Agile Triangle
Adaptive
Agile development focuses onto business requirements with necessary frequent
changes during the evolution of the product. Agile methods break the product
into small incremental builds. These builds are provided in iterations.
The new way of Working
In traditional approach, requirements are fixed but time and
resources are variable. Time to develop solution is projected. Resources vary
to reduce cycle time.
In Agile, time and resources are fixed but requirements are
variable. Requirements specified at high level & prioritized. Time is the major
constraint impacting delivery of urgent business needs. Resources fixed and
managed to deliver at estimated cost.
Principles
of Agile Metrics
1.
Affirms and reinforces Lean and Agile principles
2.
Measures outcome, not output
3.
Follows trends, not numbers
4.
Don't produce metrics that no one wants
5.
Don't introduce metrics that require significant work to produce.
6.
Provides feedback on a frequent and regular basis
7.
Be honest about how management uses metrics. Don't use metrics to
compare teams or individuals
8.
Take team maturity into account when selecting metrics
I hope this blog is useful for you and you can get lots of basic knowledge of Agile methodology for both personal and professional activities. I will be also happy to receive any comments; I am always glad to read them.
If you’re looking for more topics the please write in comment
section so that I could help you with some more blogs for your interested
topics. Please do not forget to check my new blogs for digital transformation
processes.
Comments
Post a Comment