When programming languages appeared in the 1950s, software development struggled with many problems. This included catching up with hardware development, high costs, delayed schedules, and extensive debugging. These problems often resulted in systems not getting completed, or solutions not meeting customer needs. Software engineers adopted strict continuous processes to ensure work delivery, but it became apparent that they needed a more dynamic and collaborative approach. The Manifesto of Agile Software Development of 2001 created the agile approach used by so many businesses today.
What Is the Agile Manifesto?
To provide alternatives to the rigid Waterfall approach borrowed from the manufacturing and construction industries, several lightweight development methodologies emerged in the 1990s. Some of these are Extreme Programming (XP), Scrum, Crystal, Test-Driven Development (TDD), and Adaptive Software Development (ASD). Software experts believed they needed to streamline processes. However, companies and management insisted on excessive planning and documentation. This overshadowed the primary goal of helping customers.
Read more: Agile vs. Waterfall: Differences in Software Development Methodologies
In 2001, 17 experts from different software backgrounds met at The Lodge at Snowbird, a ski resort in Utah, to share their frustrations. They agreed to a list of values and principles they called the Agile Manifesto. This manifesto for agile software development identified important aspects of the development process. They chose to give some aspects more value than others. This hierarchy of values would guide future processes and define the culture of agile software development. The Agile Manifesto authors are:
Agile Manifesto Values
The Agile Manifesto identified several resources, activities, and components of software development that developers need, encounter, or produce during the course of building software solutions. These are developers and clients, interactions between parties, development processes, software tools, a working end product, and project documentation. It also identified the importance of customers and developers working together. They also acknowledged that teams do not know everything at the beginning of a project, so they may have to make changes in spite of careful planning.
The authors of the manifesto believed that misplaced emphasis on some of these components over the others made many development teams unable to produce complete and working solutions for their customers. They wrote the Agile Manifesto values in sentences that compare a set of software development components over another. They emphasize the importance of interactions over process, working software over documentation, collaboration over negotiation, and responding to change over following a plan. All these factors are important and useful, but the items they value more will help satisfy customers better.
Read more: Agile Project Management Methodology & Principles
Agile Manifesto Principles
To elaborate on the four values, the drafters added 12 Agile Manifesto principles to provide further guidance. These are more specific statements that tell agile practitioners what to prioritize and how to do it. When developing software, teams will always encounter issues and challenges where they need to make decisions. During these decision points, they can use the Agile Manifesto principles to guide them back to the proper course.
12 Agile Principles | ||
---|---|---|
1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. | 5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. | 9. Continuous attention to technical excellence and good design enhances agility. |
2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage. | 6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. | 10. Simplicity — the art of maximizing the amount of work not done — is essential. |
3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. | 7. Working software is the primary measure of progress. | 11. The best architectures, requirements, and designs emerge from self-organizing teams. |
4. Business people and developers must work together daily throughout the project. | 8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. | 12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly. |
- Principle 1 gives teams a clear understanding of their main purpose and the way to achieve it. Delivering software that provides value now is more important than delivering a complete solution in the future.
- Principle 2 prepares teams to accept that everything is always changing. The sooner they can adapt to changing requirements, the better their product will deliver a valuable solution.
- Principle 3 advises teams to use an iterative method of delivery that can be quickly deployed and continually tested.
- Principle 4 inspires communication and collaboration; every team and client has unique viewpoints and valuable perspective. When working together, they address the needs of the customer more comprehensively.
- Principle 5 gives management advice on how to support the development team to build better solutions. People who understand their purpose should be given the chance to find a way to accomplish their goals and get better at what they do.
- Principle 6 warns against ambiguity and relying on written methods of communication, such as email and messages. Face-to-face conversations provide crucial context.
- Principle 7 sets priorities: if the customer does not have a working software, then nothing else matters. Other metrics can improve performance or efficiency, but working software is paramount.
- Principle 8 notes that the business of building solutions entails endurance and consistency. Teams, sponsors, and clients need to come to an understanding that a healthy pace will serve everyone’s best interest.
- Principle 9 suggests that teams should strive to give their best and improve continuously because management, colleagues, and clients trust them to do so.
- Principle 10 advises teams against wasting work on needless complexity.
- Principle 11 urges management to give teams the opportunity to organize their own processes and designs, and come up with their own solutions.
- Principle 12 instructs teams to regularly review their performance, identify areas for improvement, and incorporate these adjustments in the next opportunity. This helps teams gain mastery as well as adaptability.
Read More: What is Project Management? Definition, Types & Examples
Agile Today
When the Agile Manifesto was written 20 years ago, the authors were trying to address software development problems. Agile’s success gained the attention of other industries outside of software and IT, including marketing, finance, and HR. Companies also started scaling agile from teams to departments, and even whole organizations. Some were successful but others were not.
It is clearer today that agile is not suited to all projects or industries. For instance, projects with sequential stages that can’t be completed in a non-linear fashion are better suited to Waterfall than agile. However, with its greater focus on people, a working solution, collaboration, and flexibility, the agile approach enables many types of teams to adopt a mindset that makes them more prepared for new challenges.
Read next: Best Agile Software & Tools for Project Management