In February of 2001, a meeting was held at a lodge at Snowbird ski resort in the Wasatch Mountains of Utah. At this meeting were seventeen representatives from iterative programming environments. Their common goals at this meeting were to come to an agreement for removing inefficient procedures in standard software development processes and to help promote a new way of thinking; stressing conservative values while at the same time delivering value to customers. The seventeen representatives were from various software giants like e-Architects Inc., DSDM, Humans and Technology, Adaptive Software Development, The Pragmatic Programmers etc. The result of the meeting was a manifesto signed by all the 17 representatives called Manifesto for Agile Software Development.
The Agile Manifesto focuses on straight forward, simple and elegant practices to develop quality software products in a timely manner – thus giving the customer the best value for the money they are investing.
The Agile Manifesto comprises of twelve different principles. Briefly, the twelve principles are;
1) Focus on customer satisfaction
This must be achieved through the delivery of a quality product within the prescribed time limits.
2) Changes in a product must be welcomed at any of the stages of development
Customers shall have the freedom to suggest changes at will and the development team must be properly equipped to welcome those changes accordingly. This should not cause a delay or affect the quality of product delivery.
3) Deliver scaled down prototypes in short time
The customer should be delivered with working prototypes of the products in short spans of time, say two weeks or two months. This enables the customer to be better acquainted with the product and make suggestions for improvement.
4) Management and developers should work as a single team
This helps the development team to know about the strategies and hurdles that management is facing and fine tune their work accordingly. Management can change the strategy and environment for the developing team to deliver quality work.
5) Trust the developers and give them the tools they need
Make use of motivated individuals to build quality products.
6) Encourage face to face communication for the team
Face to face communication shall be implemented in the project team so that opinions can be vented openly and ambiguities can be avoided.
7) Measure the project progress in terms of working product entities
This backs up the third principle, as the scaled down working prototypes can be used as the measure of progress of a project.
8) Sustainable development must be maintained
Various people involved in the project must work as a single unit, with proper understanding; so that a fast pace may be maintained throughout the development process.
9) The development team must have good technical and design skills
The team should be made of resources with sound technical and design capabilities in order for the team to deliver quality output.
10) Keep the product simple as possible by scrapping unnecessary features
Don’t waste time by designing complex graphics or shapes or implementations but, follow a more simple form of development so that the time may be utilized to increase the output quality. This principle also discourages the preparation of complex documents during software development.
11) Use the team at the maximum level possible
Allow the team to self-organize so that they will perform in the most efficient manner.
12) Regularly review the strategy and performance of the team
This helps the team to make necessary changes in terms of human resources.