What is agile? Well, in simple terms it means the ability to change quickly and easily. The same definition goes well with Agile software development. The concepts and ideas of Agile are dated far back, but the name Agile came into picture in the year 2001, where an Agile manifesto was created as a guiding principle which collaborated all the concepts into one.
While many software industries used traditional waterfall approaches for their project delivery, the need to keep up with the constant change and be in the market competition has given way to many companies adopting agile software development practices. Once, we understand the true meaning of agile software development and how it needs to implemented in an effective way, it is found to reap benefits. Few principles which are mentioned in the agile manifesto are worth mentioning here which gives a better understanding of the concept agile software development. These are compared to the traditional approaches.
- Individuals and interactions over processes and tools: While agile insists on following the processes and tools, more emphasis is given to interaction with motivated people which will provide value to the customers. Without proper communication and involvement of the entire team, success in terms of customer satisfaction cannot be achieved just by following the processes.
- Working software over comprehensive documentation: In agile, documentation is evolved over time and is not a detailed one at the start of the project. While traditional methods insist on a detailed documentation before commencement of the project, agile believes that working software will add more value to the customer. Documentation cannot be complete at the start of the project as there can be changes to the project as time evolves and hence the document should be emerging at each stage of the life cycle.
- Customer collaboration over contract negotiation: It is important to have a contract which focuses on collaboration between all the stakeholders. The customers and suppliers need to have an open relationship with each other for the success of the project.
- Responding to change over following a plan: With increasing nature of change in market places, every company has the pressure to keep up with the pace of changing environments. Every delay in adapting to the change is a loss for them. Hence, they are more open to agile methodologies, which can adapt to change easily. Planning is a major part of agile, but they expect it to change and are flexible to accept this change.
Apart from these, there are few concepts that form the base of agile:
Simplicity: Development is based on what is needed. Extra features and unused applications need to be avoided.
Iterative and time boxed: Development is split into number of sprints based on priority, so that the user can expect value addition from the end of first sprint. Each sprint is time boxed and the schedule cannot be changed.
People oriented: Customer is involved throughout the life cycle and are aware of what to expect at every stage of the life cycle. The team is given authority to take decisions which boosts morale of the team and indirectly helps in achieving better results.
Change is welcome: Change in features is welcomed even in the later stage of development life cycle, which is a major advantage of using agile.
Considering these basic features of agile, a project can decide on whether they need to use an agile approach or traditional waterfall approach. Here are few guidelines:
When the objectives are clear and how to achieve it, is also well defined; it is better to use a waterfall approach for the success of the project. Whereas, when the end results are not clear or are subject to frequent change and the solutions are complex and evolving; it is better to use an agile approach for the better success of the project.