Agile Manifesto
Posted on | 28 August 2006 |
Tags: agile
Agile Software Development came about in response to traditional engineering methodologies that were suited for civil or mechanical engineering projects. Within software projects, these methodologies proved to be unsuitable. The Agile Manifesto was created by a group of forward-thinking individuals in an attempt to gather together the main points of agile methodologies.
To me, agile software development can be summed up in 3 words:
- Iterative
- Releases are made frequently and features are added incrementally.
- Iterative development is adaptive to changing requirements. (Changing requirements often happen when customer do not yet know what they want at the beginning of the project - which is normal. Believing otherwise is just denial.)
- The process itself is reviewed and adapted on regular intervals.
- People
- Build projects around motivated individuals. Before hiring more developers, ask if the existing developers are used up to their full potential. Often, there are vast amount of energy and talent within the team that is waiting to be tapped.
- Encouraging home-grown innovation by supporting the people from within the team is a sure way to increase motivation.
- Cooperation
- Face-to-face transfer of information is encouraged as the most effective method of communication.
- Business and technical people work closely together. This means that every developer has access to a related person with business expertise.
- Customers are involved in the process. This is in contrast to methodologies that treat customers as part of the problem.
In his article, The New Methodology, Martin Fowler elaborates on two basic points about agile methods:
- Agile methods are adaptive rather than predictive.
Predictive methodogies came about to run traditional civil and mechanical engineering projects where the design process is predictable because there are ways you can check that a design is good. With software development, the only way to check if a design is good is to implement it. And often, there are details to be ironed out during the implementation phase. From the different requirements, adaptive methodologies are developed that fits the nature of software projects. Agile methods focus on frequently delivering an incremental number of working features rather than delivering “a working system” at the end. This results in a constantly working system, despite a low number of features in the early iterations. - Agile methods are people-oriented rather than process-oriented.
People in software development are not interchangeable. According to Facts and Fallacies of Software Engineering, the best programmers are up to 28 times better than the worst programmers. Because productivity in software development is impossible to measure, the best style of management is sharing responsibility between management and technical people. In other words, give technical people the power to make technical decisions.
Comments
Leave a Reply