How to succeed in your projects with Agile Process
Basic idea of Agile process…
Most of you
may have heard about agile, learnt about agile or may have already followed the
agile methodology. But still you may don’t have any clear understanding about
what agile is. Basically Agile is an approach for managing and working on
projects. A simple approach of managing complexity of a project. Agile approach
can be used in all kind of projects.
Example
projects include:-
Software
development
Managing
service tickets
HR
new hire process
Managing
tasks at a picnic
Writing
a book
Building
a rocket and etc..
Each agile
project is unique but they usually have some common characteristics.
Characteristics of agile projects
- Incremental- plan, development and release increments. This means instead of building and releasing the product at once small valuable increments of the product are planned and released in a succession. Each increment should be actually usable and valuable to the customer or the user.
- Iterative- continuously improve the product and the process of building the product. It includes the continuously obtaining feedback, learn and improve the product. Each increment provides tight feedback from both user and from inside the team allowing continuous improvement.
- Focus on value- team is always working on what it considers to be the highest value parts of the project. After that the team again decides what is the next highest value thing to work on.
- Empowered team- this means that the team decides how to organize and how to accomplish its work. Agile is not a command and control system. Think that team contains a distributed brain where each member continuously helps make decisions.
For the
customer-
Desirable
products- as a result of following agile methodology customer is capable of
receiving a desirable product. This is because customer is continuously
provides feedback in the development of the product. Agile team is consistently
matching what they build to what customer is asking for.
High
quality- since the team members are knowledgeable, they will build high quality
at all time.
For the team-
Higher
job satisfaction- in agile approach togetherness is highly admired. This
creates a culture of empowering team members to define the best way to work
together. This results in the use of variety of skills and provides continuous
learning opportunities.
Better
innovation- Agile approach is experimental in nature. It allows innovative
ideas to be quickly built and tested with real users.
Lower
cost- Cost for the product is low when comparing with rational models. Due to
the consistency, receiving feed backs and focusing on value, wasteful activities
are not performing.
Lower
risk- agile projects are safer in sense that risk is lowered because you are
continuously getting feed backs on what you are doing.
Application of Scientific method to Agile process
Now you may think
“how scientific method is related with agile process”.
Science requires experiments to be independently reproduced in order to
verify their results, once a scientific principle is established, most
scientists will accept it unless they have an interesting approach to
disproving it or new evidence contradicts it. If all scientists felt compelled
to start all research from first principles, there would be very little time to
discover anything new. Perhaps even more importantly, no new evidence could be
found that might contradict existing theory.
The
scientific method is a proven process that helps us better understand the
natural world around us. When applied to agile software development, the
scientific method can help us reinforce the value of these practices by
providing a different perspective through which to think about writing
software. There is a strong correlation between bad science and poor software
design. Both result in speculative theories/software that cannot be reinforced
by good experiments/tests, and are not trusted by the community at large. Agile
projects are the combination of many small iterative learning loops. Scientific
method can be thought of as the foundation of Agile projects.
The
scientific method-
Create
a hypothesis
Build
an experiment
Observe/learn
from the results
Repeat/iterate
Above
diagram shows how the scientific approach is following an Empirical approach.
Series of continuous learning and improving iterations while learning from the
results of experiments is enhances here that is why we say Agile is similar to
the Scientific method. In addition to create a hypothesis we plan some work in
Agile. Then we do the work, and we learn from the feedback.
Agile and Waterfall models
One
of the most challenging and timeless question in project management is “what
way of organizing the work of software development to choose?” this is mainly
about the development methodology. The two prominent and popular methods of
managing projects are the so called Agile method and Waterfall method.
The traditional way to manage software development can be called as the Waterfall approach. It is also referred to as a linear-sequential life cycle model. Simply waterfall is that instead of continuously planning and releasing increments of the product, you develop the whole product in distinct phase.
Phases
are done by separate teams. One team is passing their output to the next team
in succession. Here you can see effectively one cycle of the scientific method.
No looping or iterating. This model is just like the one-way street. Once phase
X is completed and next phase Y has started then there is no way to going back
on the previous phase. This is one of the issues to the failure of the
waterfall model.
Waterfall
system still has value for some projects, but for many projects it’s an
outdated approach that leaves you susceptible to being disrupted by your
competitors. Even when waterfall is necessary elements of agile processes can
be included in the project.
Downsides of Waterfall methodology
So
far we have been discussed the phases of both agile and waterfall models. You
may now understand that in a waterfall model each phase must be completed fully
before the next phase can begin. You cannot reverse a process if any
modification is wanted to add. So the user requirements should be clearly
gathered and analyzed. This type of software development model is basically
used for the projects which is small and there are no uncertain requirements.
Some
issues that will go wrong in Big Design Up-Front plan if waterfall model is
followed—
You can’t predict the future
High value features are not correctly
identified.
Things are harder more problematic and
take longer to build than you think.
The market and/or your team will
change with time while you build.
Change is hard and expensive.
You create a lot of obsolete
documents.
Feedback is drastically delayed
Now
you may have a doubt Why Waterfall? Let’s clarify when we should use the
waterfall model.
- When you have high set up cost
- When the work is predictable
Agile vs. Waterfall
See
the above diagrams. Plan, build, release phases are iterating with time in both
models. In waterfall you are effectively performing one giant iteration of the
scientific method with entire product being build phase by phase. In agile
small batch sizes go through each of the phases relatively quickly. We have
seen that a waterfall process is more sequential than an agile process. Agile
processors are concurrently with each feature going through phases quickly.
Because
of that fundamental differences between waterfall and agile processors project
management for the two approaches are different.
Waterfall
model is more predictively, command and control process with big upfront
planning, while Agile model is more of an adaptive, distributed process with
just enough and continuous planning.
Now
you have a good understanding about Agile Principle. Basically how the agile
works, why the agile and where the agile is used are now you have clearly
understood. Then next doubt you will probably go through is how the agile will
develop. There are number of platforms. Some of them are,
- Jira agile
- Agile manager
- Active Collab
- Agile bench
- Pivot tracker
- Telerik TeamPulse
Jira
Jira
is used as a tool to help work with agile process. It is a proprietary issue
tracking product developed by Atlassian that allows bug tracking and agile
project management. It is used to help manage, develop and communicate about
projects.
Jira Software
is part of a family of products designed to help teams of all types manage
work. Originally, Jira was designed as a bug and issue
tracker. But today, Jira has evolved into a powerful work
management tool for all kinds of use cases, from requirements and test case
management to agile software development.
Jira can be used to any project may be simple
or complex, team or individual, can be about anything. This is a very easy tool
to get started with, is very flexible and can be used in a way that matches
agile process.
Ok now
let’s go with Jira…
You
can sign up for a Jira Software Cloud account developed by Atlassian at any
time. Follow this link. https://www.atlassian.com/software/jira/free?utm_source=coursera&utm_medium=jira&utm_campaign=agile
After
you are done with sign up you can create your project, manage issues and go
with it very easily. Below diagrams will show you steps to create a project.
Step 1 : Click create project
Step 3: Give the project name. If needs change the template
Step 4: Here you can change the template according to the method you are willing to follow
Agile methods
There are many agile methodologies that approaches to
achieve agility. The term Agile refers to the methods and best practices for
organizing projects, based on the values and principles documented in the Agile
Manifesto. However, there’s no one right way to implement Agile. In fact, there
are many different types of Agile methodologies that you can choose from when
organizing your project.
The most popular and common methodologies or Agile
frameworks that you can choose are
Scrum
- Scrum is the
most widely used Agile framework for developing and managing complex software
and product applications. In its simplest terms, Scrum is characterized by its
core values of Plan Ahead and Inspect & Adapt. Therefore, Scrum
successfully manages projects in which there is marked uncertainty and
ambiguity at the early stages of the project
Kanban
- Kanban is a
simple, visual means of managing projects that emphasizes visibility.
Originally designed as a scheduling method, Kanban helps teams execute
just-in-time production by enabling everyone to see where work is in the
project and what’s coming up next. Kanban projects are primarily managed
through a Kanban Board. This board helps segment project tasks into three main
columns: “To Do,” “Doing,” and “Done.”
eXtreme
Programming (XP) -
Extreme Programming (XP) was designed for Agile software development projects.
It focuses on continuous development and customer delivery and uses intervals
or sprints similar to a scrum methodology.
Feature
Driven Development (FDD)
- Feature-driven development is another software specific Agile framework. This
methodology involved creating software models every two weeks and requires a
development and design plan for every software model feature. Therefore, it has
more rigorous documentation requirements than XP, so it’s better for teams with
advanced design and planning abilities.
Dynamic
Systems Development Method (DSDM) -
The Dynamic Systems Development Method (DSDM) cropped up out of the need to provide
a common industry framework for rapid software delivery. Part of DSDM is the
mandate that rework is to be expected, and any development changes that occur
must be reversible. Like Scrum, XP, and FDD, DSDM uses sprints.
Crystal
- Crystal is
actually a family of Agile methodologies, including Crystal Clear, Crystal
Yellow, Crystal Orange, Crystal Red, and more. Each methodology has its own
unique framework. Which one you choose is dependent on several project factors,
such as your team size, your project priorities, and project criticality. The
belief is that different projects require a slightly different set of policies,
practices, and processes based on their unique characteristics.
Lean
Software Development (LSD) -
Lean development is actually a completely separate methodology, but it’s often
grouped with Agile, as it shares many of the same values, such as the ability
to easily adapt to change.
Teams generally pick one or two methods. The most widely
used methodologies are Scrum and XP, which dovetail nicely.
This article is basically about the Agile process, agile
features and how it is differ from traditional methods. We will discuss more
about agile methods such as Scrum and Kanban in a future article. Common
question that most beginners face is selecting a right development methodology for
their projects. I believe this article will help you to clarify your issues
about that.
Give your views below. Thank you!






nice work
ReplyDeleteThankyou!
Delete