In 1970, when the Waterfall methodology was invented, it became a breakthrough because it brought discipline to the software development process by ensuring that there was a clear specification to follow. The waterfall was based on a manufacturing method derived from Henry Ford’s 1913 assembly line. When it came to software development, applications were complex and outcomes were predictable and clear. The market also changed slowly, so large-scale efforts were not problematic. Today everything has changed and still keeps changing. The market is evolving rapidly and the pace is only kept growing. This requires a quick response to the changes from the companies. As a result, in 2001 a group of software developers got together and found that they for a long time were practicing development differently from the classic waterfall approach.
Later, they came up with the “Manifesto for Agile Software Development” where they underlined 4 Agile Values:
- Individuals and interactions over processes and tools – People are more important since they are responding to business needs and drive the development process. If the tool or a process will drive the development, it may result in less response to change from the team and could lead to not meeting the customer needs.
- Working software over comprehensive documentation – In the past, a huge amount of time was wasted on documenting product development and delivery. The list of documentation was extensive and it was a reason for delivery delays. Agile does not eliminate the need for documentation but states that only required documentation, which provides value for the customer will be created and delivered.
- Customer collaboration over contract negotiation – In the Waterfall model, customers negotiate the requirements for the product in advance, prior to any work starts. As a result – the customer was involved in development only at the start of the project and in the end. This is not applicable to the modern fast pace market, where requirements and customer demands might change rapidly. In Agile, the customer is engaged and collaborates throughout the development process by frequently reviewing the requirements and providing feedback.
- Responding to change over following a plan – For traditional software development models – change is regarded as an expense that should be avoided. Opposite to that, in Agile – changes are welcomed. Agile consists of short iteration based deliveries of working product to the customer. As a result, priorities can be shifted between iterations and new features can be added. From the Agile point of view, changes always improve a project while changes are providing additional value.
In addition to 4 key values, 12 Agile principles were developed. They describe change-welcome culture and customer focus. The twelve principles of agile development include:
- Customer satisfaction through early and continuous software delivery – the customer is receiving working software on a regular basis, rather than waiting long periods of time between releases.
- Welcome changing requirements, even late in development. – avoid the delays even when the requirement or feature requires changes.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. – Scrum accommodates this principle with sprints – short iterations of the development.
- Business people and developers must work together daily throughout the project. – Best decisions can be made only when business people and developers work in close collaboration.
- Build projects around motivated individuals. – Trust the team and the team will do their best.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. – Communication is more successful when development teams are co-located and they are limited in size.
- Working software is the primary measure of progress. – The progress can only be measured by delivering working software to the customer.
- Agile processes promote sustainable development. – Teams must keep a sustainable pace of the development, in which they can deliver working software.
- Continuous attention to technical excellence and good design enhances agility. -Team must consist of professionals with the right skill set.
- Simplicity – Keep things as simple as possible.
- The best architectures, requirements, and designs emerge from self-organizing teams. – Skilled and motivated team members with the ability to make decisions should take ownership and regularly communicate with another team.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly. – Regularly look back on problems and search the ways for improvements.
For more Details: https://www.logitrain.com.au/courses/agile-training-courses.html