In the 1990s, projects were usually approached by engineers in consecutive and dependent stages. The aim was to be able to define from the outset exactly what the complete product would look like and how it would meet the customer’s needs. It was assumed (wrongly) that the needs and contexts would not change throughout the development process and that there would be nothing new to incorporate in the whole process.
This system or methodology caused so many projects to fail that in 2001, in Utah, a number of people convened by Kent Beck met. Their purpose was to try to improve software development techniques and processes. From that meeting the term “Agile Methods” emerged, to define the new methods that emerged as an alternative to formal methodologies.
The new values they contributed to carry out these methodologies were:
- Individuals and interactions over processes and tools
- Software running over extensive documentation.
- Collaboration with the client over contractual negotiation.
- Response to change over following a plan
Based on these new values, the signatories drafted the following principles, from which they derive and which constitute the principles of the Agile Manifesto.
- Our top priority is to satisfy the customer through early and continuous delivery of valuable software.
- We accept that requirements change, even in late stages of development. Agile processes leverage change to provide competitive advantage to the customer.
- We deliver functional software frequently, between two weeks and two months, in preference to the shortest possible time period.
- Business managers and developers work together on a daily basis throughout the project.
- Projects are developed around motivated individuals. They must be given the environment and support they need, and entrusted with the execution of the work.
- The most efficient and effective method of communicating information to the development team and among its members is face-to-face conversation.
- The software running is the main measure of progress.
- Agile processes promote sustained development. Promoters, developers and users must keep a constant pace indefinitely.
- Continuous attention to technical excellence and good design improves agility.
- Simplicity, or the art of maximizing the amount of work not done, is essential.
- The best architectures, requirements and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to be more effective and then adjusts and refines its behavior accordingly.
All this was a turning point in software development methodologies. If you’re reading this, you’re probably already using some agile methodology or you’re close to being part of a team that uses them… Right?
I hope the article was helpful in clarifying “what is this Agile thing?” 🙂