What is Agile
There is a certain confusion around the concept of Agile. Everybody has their own meaning to this expression. The basis for Agile is that collaboration will solve the problem better. Here are a few attempts to explaining Agile
Agile is a mindset. It is a collaborative and flexible team-based approach aimed at responding to change in the world outside the product development bubble. It helps people to build the right thing in the right way.
Agile consists of principles, processes and practices. Agile software development is one way of grouping an agile approach withing IT.
Wikipedia, 17 January 2014
Agile software development is a group of software development methods in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development, early delivery, continuous improvement, and encourages rapid and flexible response to change.
The main principles are detailed in the Agile Manifesto. They are the following:
- Customer satisfaction by rapid delivery of useful software
- Welcome changing requirements, even late in development
- Working software is delivered frequently (weeks rather than months)
- Close, daily cooperation between business people and developers
- Projects are built around motivated individuals, who should be trusted
- Face-to-face conversation is the best form of communication (co-location)
- Working software is the principal measure of progress
- Sustainable development, able to maintain a constant pace
- Continuous attention to technical excellence and good design
- Simplicity—the art of maximizing the amount of work done—is essential
- Self-organizing teams
- Regular adaptation to changing circumstance
Examples of Agile practices that for instance support strong collaboration are Pair Programming, where two developers sit together in front of a computer, one person with the hands on the keyboard detailing out the specifics and the other trying to see the bigger picture, and Mob Programming, where one developer has the hands on the keyboard while a group of different persons sits and stands around him/her and give input and solve problems together.
There are lots of principles, processes and practices, and more show up each day. What all of them have in common are the following values, also from the Agile Manifesto:
- 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. An updated version of the Agile Manifesto replaces this with Valuable outcome, since that is ultimately what we want for our customers and users by creating working software.
- 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.
But the only thing you really need to know about Agile is this:
Doing Agile is to do Scrum, Kanban, Extreme Programming, Lean Software Development, Sprints, Daily Standups, Demos, Retrospectives, etc.
Being Agile is to have an explorative way of working, to collaborate closely within the team and with the client, to have a shared understanding of the goal/product/service and to continuously improve your way of working.