What is Agile?
Recently I did a presentation after almost 20 years at a Bootcamp showcase on Agile. As Agile celebrated its 20th anniversary this year I decided to talk on what Agile is? Below are the few drops from Agile's ocean which I managed to pour during my showcase.
What is Agile Software Development?
Agile is a time boxed, iterative approach to software delivery that builds software incrementally from the start of the project, instead of trying to deliver it all at once near the end.
It works by breaking projects down into little bits of user functionality called user stories, prioritizing them, and then continuously delivering them in short time cycles called iterations.
In iterative development, feature code is designed, developed and tested in repeated cycles. With each iteration, additional features can be designed, developed and tested until there is a fully functional software application ready to be deployed to customers.
We know about Agile Software Development. We often hear terms like Agile Tester & Agile Testing But what exactly does being Agile mean ? Let’s start with an exploration of this term. Agile is not a methodology but its a set of values and principles which collectively known as “Agile Manifesto”. You have to follow these values & principles if you want to work in an agile manner.
In the next four slides you can see there are values written on the right side and left side. Agile Manifesto states that while there is value in the items on the right, we value the items on the left more.
Individuals & Interactions over Processes and tools
Getting the right people on the team (individuals) and helping them work together (interactions) are much more important than following any specific process and or using a particular tool.
Working Software over comprehensive documentation
while documentation isn’t a bad thing But The Agile Manifesto places delivering software to your customers as one of the highest priorities.
Customer collaboration over contract negotiation
Agile principles require customers to be involved in all phases of the project.If the customers are kept in the loop during the development process, the team can ensure that the final product meets all the requirements of the client.
Responding to change over following a plan
Traditional software development considered change as an expense. It was to be avoided. According to Agile, the shortness of an iteration means priorities can be shifted from iteration to iteration and new features can be added into the next iteration. Changes always improve a project and provide additional value.
Satisfy the customer through early and continuous delivery of working versions of products.
Welcome changing requirements even late in development.
Deliver working software frequently.
Business people and developers must work together daily throughout the project.
Build projects around motivated individuals who are supported and trusted to get the job done.
Use face-to-face conversation whenever possible.
Working software is the primary measure of progress.
Maintain a constant pace indefinitely.
Give constant attention to technical excellence and good design.
Simplicity—the art of maximizing the amount of work not done—is essential.
The best architectures, requirements, and designs emerge from self-organizing teams.
Reflect on how to become more effective, then tune and adjust accordingly at regular intervals.
Agile is an umbrella term for several iterative and incremental software development approaches, based on the agile values and principles set out in the Agile Manifesto. The most popular Agile frameworks include Scrum, Kanban, Crystal, Extreme programming (XP) Dynamic Systems Development Method(DSDM), and Feature-Driven Development(FDD) & Rational Unified Process (RUP).
While each Agile methodology type has its own unique qualities, they all incorporate elements of iterative development and continuous feedback when creating an application. Any Agile development project involves continuous planning, continuous testing, continuous integration, and other forms of continuous development of both the project and the application resulting from the Agile framework.
Each Agile framework is considered lightweight. Rules and practices are kept to a minimum, are designed to be adaptable to all kinds of circumstances. This process assures quality is “built” into the product, versus inspecting for quality later.