What is Agile?
Agile software development is a group of software development methods in which
solutions evolve through collaboration among self-organizing, cross-functional teams.
It promotes adaptive planning, evolutionary development, early delivery, continuous
improvement, and encourages rapid and flexible response to change.
Agile is a system, a cultural and a mindset change to an organization. Agile creates high visibility and transparency in the projects, which spread throughout the entire organization.
Many of the principles and practices promoted by Agile development have been around for years. But Agile methodologies have “packaged” various customer, management and engineering practices and principles together to guide teams through the process of rapidly planning and delivering working, tested software solutions.
The most popular methodologies under agile software development are Extreme Programming (XP), Scrum, Crystal, Dynamic Systems Development Method (DSDM), Lean Development, and Feature-Driven Development (FDD). They are all lightweight (especially compared to traditional waterfall-style processes), and inherently adaptable. As important, they all focus on empowering people to collaborate and make decisions together quickly and effectively.
They all share a common vision and core values (Agile Manifesto):
Agile values ‘Individuals and interactions’ over ‘processes and tools’:
It is team that works together to achieve a shared business goal. There are certain elements in solution development:
– Determine what is needed
– Figure out how to do it
– Do the work
– Identify risks, impediments in its way
– Work with other functions, departments to resolve issues outside their influence (Management, HR, IT, support, services etc.)
Each of the step/activity during software development involves individuals. So it is
important to have the mindset/culture of respect for each individual and effective
interaction between team members. This enables the team to delivers value to the
Agile values ‘Working software’ over ‘comprehensive documentation’:
Agile values Working software over comprehensive documentation. In traditional software development the focus is on heavy documentation at each stage i.e. capture the software requirement, software specifications, analysis, design etc. With agile the primary focus is on to build finished & working product increment every iteration.
The product increment may not have enough functionality for the business to ship it
every sprint/iteration, but team ensures the quality of the functionality to be shippable.
This is a sensible approach to focus on tangible real product then comprehensive
documents which just elaborate feature to build.
Agile values ‘Customer collaboration’ over ‘contract negotiation’:
In traditional software development the focus is on agreements for building/evaluating customer relationships and in case of confusion contract negotiations takes the center-stage over building working software.
On the contrary Agile focuses on promoting and facilitating collaboration. The team, especially the product owner, collaborates with customer representatives, real users at customer to inspect and adapt the product vision to attain the highest value in the product for the customer & business. Such engagement with customer builds long lasting relationships and focus remains on building right solution then on an application adheres to written specifications.
Agile values ‘Responding to change’ over ‘following a plan’:
With Agile, teams make frequent plans (product road-map plan, release plan, sprint plan) so that team can appreciate the big picture to make right business decisions. Here the focus is not to blindly follow the plan; instead the focus is to create value and embrace change. The thought process and ideas necessary for planning are more important than the plan itself.
Team understand that an early plan may not be the best plan and as new information is
discovered, the team updates the product backlog and the plan. Thus the plan evolves
with time and also improves the team’s chances. The focus is always on responding to
new knowledge and experience to achieve the best possible outcome.
Also refer to the agile manifesto