In 1970, Doctor Winston W. Royce published a paper entitled "Managing the Development of Large Software Systems" that challenged sequential development of software. He felt that the method of developing large software systems, which resembled an assembly line, was inadequate due to a lack of communication between groups.
Royce had spent nine years developing software for spacecraft mission planning, commanding and post-flight analysis. He found through experience that agreeing upon a final product and then creating it was ineffective in developing quality software. By the time the product was built, it was no longer a viable option.
In his paper, Royce details an iterative process, called the Waterfall Method, in which multiple groups collaborate to design, code, test and analyze software, all while producing hundreds, sometimes thousands of pages of documentation detailing the process and proposed final product.
The Waterfall Method of software development revolutionized the industry, and changed the way people thought about building large systems. But even with Dr. Royce's more effective method, there were still improvements to be made, particularly the amount of paperwork and documentation required throughout the process.
The coming decades saw evolutions to the model such as the Spiral Model and Rapid Application Development. These models were building blocks that led to a development methodology that did away with the burden of excessive documentation and focused on the collaborative nature of the design process.
Now recognized as an innovative method to quickly develop valuable and viable software, the Agile Methodology was conceived in a lodge at Snowbird ski resort in the Wasatch mountains of Utah in February 2001.
A group of 17 software developers saw a problem with the current method of "heavyweight" development, and collaborated to author the "Manifesto for Agile Software Development." This getaway conference came as a result of frustrations in the methodology behind software development. While these developers saw merit in current methods, they recognized a need to improve, and came to four conclusions about what they valued in software development:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
These four values would aid in authoring the 12 principles of the Manifesto for Agile Software Development. This collaborative process was created with a mindset of cooperation and community by individuals who felt that it was important to act as if people were the most important asset that a company has to offer, rather than simply saying so. According to Jim Highsmith, one of the original signatories of the manifesto, Agile Methodologies are, at their core, about, "the mushy stuff of values and culture." Developing relationships and focusing on the capabilities of the software would lead to improvements in the final product.