By definition, this agile guide is a work in progress. We welcome community participation.

Historically, a majority of software development products have failed to actually be useful to real people or been over budget with missed deadlines.

Software development was often conducted by defining a set of requirements up front, and then handing those exhaustive requirements to an implementation team. The team then developed the product to specifications in the requirements document. The product was only put in front of actual users of the software at the very end of the development cycle.

Before we start building software, there are a wide variety of research techniques we can use to understand the problem we’re trying to solve. By observing people struggling without the benefit of our new solution, we can gain a deeper understanding of the problem and our audience.

Even if we could perfectly understand what is needed before we build it, change happens. We don’t need to wait until the software is complete before allowing people from our target audience to try the software. Getting software in front of people allows us to learn more about how they work and adjust the design of the software to meet their needs. This allows us to correct an incomplete understanding, and also to notice when the landscape changes. In today’s world, our software often runs on several platforms and needs to integrate with other software as well.

The old linear method of software development deals with change poorly. A key component of agile is iterative development with quick validation, emphasizing testing early and often with real users to ensure that the product actually works for real people. This cycle of learning helps manage change and leads to more successful outcomes.

Open Source and Contributing

This project is open source, and we welcome contributions from the public.


This project is in the public domain within the United States, and copyright and related rights in the work worldwide are waived through CC0 1.0 Universal public domain dedication.

All contributions to any repositories of this project will be released under the CC0 dedication. By submitting a pull request, you are agreeing to comply with this waiver of copyright interest.