Recommended reading: History: The Agile Manifesto
Over the years Agile has been defined in many ways, here are a few definitions i have come across for Agile
- The ability to create and respond to change in order to deliver business value in an uncertain and turbulent environment (Source: Agile Alliance)
- Agile software development is an approach to software development under which requirements and solutions evolve through the collaborative effort of self-organizing and cross-functional teams and their customer(s)/end user(s). It advocates adaptive planning, evolutionary development, early delivery, and continual improvement, and it encourages rapid and flexible response to change (Source: Wikipedia)
- Agile is a time boxed, iterative approach to creating business value that incrementally delivers from the start of the initiative or project, instead of trying to deliver it all at once near the end (Source: Agile in a Nutshell)
My preferred definition is
Agile methodology results in greatest value delivered to the customer frequently and easily.¶
Agile approach is to empower teams and individuals to apply the most efficient techniques in generating value for the customer. This includes creating a healthy work environment and developing support systems to enable the team to focus on value delivery.
Agile teams must know the value, size and sequence of work items. The backlog of work items must be regularly updated by seeking feedback, incorporating change in requirements and learnings from previous development cycles. Teams must groom the backlog to include just enough work to meet the customer needs. This enables the teams to work on the highest value items to satisfy the customer.
Frequently and easily¶
Agile teams have short development cycles which means frequent delivery of working software and many opportunities to collect feedback. The backlog supports the short cycle by having work broken down into small enough pieces that can be completed in a cycle and provide value to the customer. The team continuously improves the development pipeline, supporting processes and tools to make it easy to deliver at a sustainable pace.