Agile: What is Agile?
‘Agile’, one of the biggest IT development buzzwords; we hear about
this in variety of places like Agile teams, Agile leadership, Agile
methodologies, Agile principles, Agile governance and many more. What exactly
agile is all about? Let’s see the dictionary meaning first (from OxfordDictionaries)
Adjective
- able to move quickly and easily
- able to think and understand quickly
- relating to or denoting a method of project management, used especially for software development, that is characterized by the division of tasks into short phases of work and frequent reassessment and adaptation of plans
To tell in
very simple words, agile development is an umbrella term that describes several
agile methodologies to handle IT teams and projects. The word ‘Agile’ is
derived from agile manifesto (http://agilemanifesto.org/)
Agile manifesto:
In 2001,
small group of people got together to discuss about better ways of software
development as the traditional approach was failing in reaching customer
requirements. After many discussions, they came up with the agile manifesto:
We are
uncovering better ways of developing software by doing it and helping others does
it. Through this work we have come to value
Agile Principles: there are twelve
principles behind the agile manifesto
1)
Our
highest priority is to satisfy the customer through early and continuous
delivery of valuable software.
Unlike the
traditional software development (Delivery after months/years of work), small components
of the project functionality are delivered within weeks after starting the
project. It is incremental delivery rather than a single delivery. Features
having high business value getting delivered early and continuously gains
customer satisfaction which is very critical in business.
2)
Welcome
changing requirements, even late in development. Agile processes harness change
for the customer's competitive advantage.
Main objective of the agile
software development is to give a competitive edge to customer by implementing
evolving requirements at any point of time throughout the project
3)
Deliver
working software frequently, from a couple of weeks to a couple of months, with
a preference to the shorter timescale.
Agile development focuses on fast, iterative
deliveries than traditional one-time deliveries
4)
Business
people and developers must work together daily throughout the project.
In Agile software development,
development team works closely with business people/customers on daily basis
and takes their feedback. With this
better working relationship is established and development team will correct
their mistakes quickly based on customer’s feedback
5)
Build
projects around motivated individuals. Give them the environment and support
they need, and trust them to get the job done.
Agile software development
emphasizes on team culture; concentrates more on factors which build trust in
the team. Agile strongly believes that these are the reasons for
team’s/software’s success
6)
The
most efficient and effective method of conveying information to and within a
development team is face-to-face conversation.
Agile development encourages
face to face conversations as it is better compared to e-mail/ phone/
communicator. It avoids many mis-understandings and confusions
7)
Working
software is the primary measure of progress.
In Agile development, progress
& success is measured by working software (i.e. the component of software
which ready to get delivered to customer / delivered to customer)
8)
Agile
processes promote sustainable development. The sponsors, developers, and users
should be able to maintain a constant pace indefinitely.
Agile development
progresses in very consistent; neither slow nor fast. Total team is responsible
and accountable for the same.
9)
Continuous
attention to technical excellence and good design enhances agility.
We know that agile development
focuses on extrinsic quality (customer satisfaction & Product quality) and
along with this it takes care of intrinsic quality as well by following best
agile development practices
10)
Simplicity--the
art of maximizing the amount of work not done--is essential.
Agile development always keeps
software simple, workable and easy to maintain. Traditionally developed
software products are complex due to cumbersome design, requirements etc
11)
The
best architectures, requirements, and designs emerge from self-organizing
teams.
Agile development believes that
best architectures, requirements, and designs emerge from self-organizing teams
as there are no hierarchies involved here. The team is empowered to organize
themselves to be more effective and efficient. Transparency, inspect, adapt,
Continuous planning, Continuous customer feedback and customer collaboration
makes team self-organizing
12)
At
regular intervals, the team reflects on how to become more effective, then
tunes and adjusts its behavior accordingly.
In traditional software
development approach, team will be waiting till the end of the project to
conduct post-project review. But agile software development emphasizes
continuous review. Team member can give feedback to team member or to process @
any point of time by writing it in post-it/face to face. Inspecting and adapting
continuously solves many of the repetitive issues experienced by many teams and
projects.
These principles may not give perfect solutions to all problems faced
during software development process. But it gives scope to highlight all the
issues faced by team and total team will focus on it collectively to reduce the
risk. By following agile principles agile teams can achieve increased team
efficiency, Lower development costs, faster time to market, Better quality
software, Systems better suited to customer needs and Consistent Repeatable
results.
Become a
signatory by adding your name to the list of people signing the Agile Software
Development Manifesto here.
Agile Methodologies:
Hope you understood what is Agile by now. Let’s move on to agile
methodologies. If you assume as Agile as umbrella (as shown in below figure),
it consists several specific methodologies under its shadow. Broadly agile
methodologies are classified in to 2 types
1.
Light weight Approaches
2.
Fuller Approaches
Light weight Approaches has relatively few prescriptive governance when
compared with fuller approaches. Examples for Light weight approaches are Scrum,
Lean, Kanban, Crystal and Extreme programming (XP)
Fuller approaches involve more details and guidance in terms of
process prescription. Examples of fuller approaches are DSDM (Dynamic systems
development method), AUP (Agile Unified Process) and FDD (Feature Driven
Development)
Let’s discuss about these methodologies in the next posts in detail.
Your feedback is important to me; Help me to improve by giving your feedback. I
appreciate it very much! Please feel free to reach out to me
Linkedin: http://in.linkedin.com/in/sathrambalaji
Facebook: https://www.facebook.com/sathrambalaji
References:
-Balaji Sathram
Good compilation of Agile Manifesto and Agile Priciples
ReplyDeleteThank you sandeep...
DeleteVery informative Balaji... and awaiting for your continuation post for this
ReplyDeleteThanks lakshman... will post continuation in couple of days
DeleteHi Balaji... in the above post , i am bit confusing with the points 3 & 8, can you differentiate even more to understand better. Thank you
ReplyDelete-Lakshman Teja
Hi Lakshman, 3rd principle speaks more comparison with Traditional development method (It will take many months to years to deliver the product based on project). But in agile incremental product is delivered between 1week to 1month. thus it is faster then traditional development.
Deletecoming to 8th principle, it is with maintaining the pace/speed consistently which you have developed throughout iterations/sprints