Written in 2001 by seventeen “independent-minded” software developers, the Agile Manifesto presents the core values and principles that set Agile apart from previous development methodologies and made it popular well beyond the software environment it was originally written for. As you prepare to study the “what” of Agile, here’s the “why!”
Just as “computer” is a generic term that describes a wide variety of products, “Agile” describes a category of software development methodologies that leverage continuous feedback and iteration to continuously improve the software. Examples of Agile methodologies include Lean, Scrum, Kanban, and others.
“Agile” is also used to describe the mindset that drives these methodologies. According to the Agile Alliance, in February 2001, “representatives from Extreme Programming, SCRUM, DSDM, Adaptive Software Development, Crystal, Feature-Driven Development, Pragmatic Programming, and others sympathetic to the need for an alternative to documentation driven, heavyweight software development processes convened.” After three days of discussion they produced the Agile Manifesto, a set of guiding principles meant to help drive consistent adoption.
The Agile Manifesto
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
While there is value in the items on the right, we value the items on the left more.
Clearly, the message to developers is to take their focus off the technical and pragmatic tactical elements of the process of developing software and concentrate instead on the results their work produces for people. Borrowing from author Stephen Covey, their imperative is to “begin with the end in mind” focused specifically on the value of the “end” they are working toward.
It is often said that one of the attitudes developers like these are possessed of is the value of “breaking things.” While agile methodologies are often seen as being less structured, they are also far less limiting to the point of being liberating.
These fundamentals are supported by twelve principles that provide deeper insight.
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Working software is the primary measure of progress.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Continuous attention to technical excellence and good design enhances agility.
- Businesspeople and developers must work together daily throughout the project.
- Simplicity--the art of maximizing the amount of work not done--is essential.
- Build projects around motivated individuals. Give them the environment and support they need and trust them to get the job done.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Just select a single word from each principle; satisfy, working, advantage, sustainable, frequently, excellence, together, maximizing, motivated, emerge, face-to-face, effective. The Agile Manifesto is all about increasing value. The concepts of quick sprints, frequent discussion, informal structure all moved developers away from the confines of waterfall and other previous methodologies.
The ultimate residue of the entire Agile methodology development process is embodied by the progress toward DevOps, the combination of software developers and system operators working together using consistent tools and processes.
Agile: Path to DevOps
Agile was defined as a methodology primarily designed for developers. By incorporating cycles from software releases to immediate feedback to planning for incremental improvement to revision to rapid deployment of software releases, DevOps extends beyond Agile to promote collaboration between developers and operators with the goal of improving speed and quality of software delivery. This extension promotes focus on standardized development and operating environments, automating every process possible to improve the efficiency of rapid, iterative revision deployment. By adhering to these guiding principles, those embracing agile truly achieve the ultimate goal of continuous improvement through continuous development and deployment (CI/CD).