The Agile Manifesto, also called the Manifesto for Agile Software Development, is a formal proclamation of four key values and 12 principles to guide an iterative and people-centric approach to software development.
Agile software development focuses on keeping code simple, testing often and delivering functional bits of the application as soon as they're ready. The Agile Manifesto was created as an alternative to document-driven, heavyweight software development processes such as the waterfall approach.
The four core values of agile software development as stated by the Agile Manifesto emphasize:
1. Individuals and interactions over processes and tools.
People are required to deliver software. The people who want and need the product must explain it to the team that delivers it.
As detailed processes and sophisticated tools were developed, the focus shifted from the people to the tools and process.All along, it was still people.
The focus should be on the people and the communication between them. The process and tools should be the minimum needed for a given situation.
Start with the people and then decide what level of process and tools is necessary for a given circumstance.
Valuing people more highly than processes or tools is easy to understand because it is the people who respond to business needs and drive the development process.
2. Working software over comprehensive documentation.
Historically, enormous amounts of time were spent on documenting the product for development and ultimate delivery.
Technical specifications, technical requirements, technical prospectus, interface design documents, test plans, documentation plans, and approvals required for each.
The list was extensive and was a cause for the long delays in development.
Agile does not eliminate documentation, but it streamlines it in a form that gives the developer what is needed to do the work without getting bogged down in minutiae.
Agile documents requirements as user stories, which are sufficient for a software developer to begin the task of building a new function.
The Agile Manifesto values documentation, but it values working software more.
3. Customer collaboration over contract negotiation.
With development models such as Waterfall, customers negotiate the requirements for the product, often in great detail, prior to any work starting.
This meant the customer was involved in the process of development before development began and after it was completed, but not during the process.
The Agile Manifesto describes a customer who is engaged and collaborates throughout the development process, making. This makes it far easier for development to meet their needs of the customer.
4. Responding to change over following a plan.
Many projects that have elaborate project plans with detailed Gantt charts have failed.
We make the plans so complex and detailed that they're difficult to modify when changes occur.
Agile process replaces project plans with release schedules and burn-down charts that can accommodate change. We can still track progress and, in fact, progress is more transparent than in a typical Waterfall project plan.
With 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.
Agile’s view is that changes always improve a project; changes provide additional value.
The 12 principles laid down in the Agile Manifesto have been adapted for managing a variety of business and IT-related projects, including business intelligence (BI). They include:
1. Satisfying 'customers' through early and continuous delivery of valuable work. - Customers are happier when they receive working software at regular intervals, rather than waiting extended periods of time between releases.
2. Accommodate changing requirements throughout the development process – The ability to avoid delays when a requirement or feature request changes.
3. Frequent delivery of working software – Scrum accommodates this principle since the team operates in software sprints or iterations that ensure regular delivery of working software.
4. Collaboration between the business stakeholders and developers throughout the project – Better decisions are made when the business and technical team are aligned.
5. Support, trust, and motivate the people involved – Motivated teams are more likely to deliver their best work than unhappy teams.
6. Enable face-to-face interactions – Communication is more successful when development teams are co-located.
7. Working software is the primary measure of progress – Delivering functional software to the customer is the ultimate factor that measures progress.
8. Agile processes to support a consistent development pace – Teams establish a repeatable and maintainable speed at which they can deliver working software, and they repeat it with each release.
9. Attention to technical detail and design enhances agility – The right skills and good design ensures the team can maintain the pace, constantly improve the product, and sustain change.
10. Simplicity – Develop just enough to get the job done for right now.
11. Self-organizing teams encourage great architectures, requirements, and designs – Skilled and motivated team members who have decision-making power, take ownership, communicate regularly with other team members, and share ideas that deliver quality products.
12. Regular reflections on how to become more effective – Self-improvement, process improvement, advancing skills, and techniques help team members work more efficiently.
The intention of Agile is to align development with business needs, and the success of Agile is apparent. Agile projects are customer focused and encourage customer guidance and participation.