To be agile is to be nimble and quick to adapt. To be agile is to be light on your feet, and ahead of the game when it comes to potential challenges. To be agile is to be fit enough to face whatever life throws at you.
Agile Software Development takes that essential principle on board and applies it to software development. The ultimate aim is to allow teams to deliver value faster, with increased predictability and inventiveness in the face of change.
What is Agile Software Development?
Agile Software Development refers to software development where requirements and solutions are allowed to evolve through collaboration between self-organising teams. It's an approach to software development that puts the emphasis on incremental delivery, built on continual steady planning and continual learning. This contrasts with an approach that attempts to deliver everything at the end of the software development process.
With agile approaches, the focus is on keeping the process efficient, creating a number of minimum viable products (MVPs), that go through various iterations before anything is finalised. Along the way feedback is gathered, and this is implemented continually throughout the process. Overall, this creates a dynamic and responsive process that is better able to address any issues that present themselves through the development process.
The Agile Manifesto
The term Agile when applied to software development was coined in 2001 in The Agile Manifesto. It was an approach based on four guiding principles, all of which can be seen today in the agile software development frameworks. These principles provide a different range of approaches over those found in 'traditional' software development methodologies:
• Individual and interactions over processes and tools
• Working software over comprehensive documentation
• Customer collaboration over contract negotiation
• Responding to change over following a plan
Agile is an umbrella term for a range of frameworks that share things in common, while each offering their own unique qualities. Any Agile Development project will involve continuous planning, regular testing, and integration resulting from the chosen framework.
In contrast to traditional 'waterfall' style development approaches, agile frameworks keep rules and practices to a minimum. This keeps them adaptable to all kinds of circumstances. The emphasis is on empowering developers to collaborate and make decisions as a group quickly and effectively.
Leading Agile frameworks
The most popular, and regularly used Agile frameworks include Scrum, Crystal, Dynamic Systems Development Method, and Feature-Driven Development.
Each Agile framework has its own unique qualities, but they all incorporate the fundamental elements of incremental development and continual feedback.
The animating vision behind Agile Software Development that unites the different frameworks and informs those developers working with the method, is the idea of creating applications in incremental stages. Each individual increment is then tested before it's considered complete. This process should ensure that quality and resilience is built into the finished product, rather than testing for it at the end of the development process.