Working in software/IT companies we all come across a word that is coined rampantly - the Agile development. So what is this and why do you also need to understand this was what troubled me few years back and I went onto an Online search expedition to search for the answers. As per Wikipedia Agile software development is - "Agile software development is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.
It promotes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change. It is a conceptual framework that promotes foreseen tight interactions throughout the development cycle. " Makes sense!!! maybe not as was the case with me when I first read it, so how do we then define an Agile development. I think to understand this better we have to take a step back and understand the age old Waterfall model first. Various software development India firms are using Waterfall model which classifies following phases for software development sequentially - Requirement Gathering, Design, Construction, Integration, Testing, Deployment and Support. The catch here is that this is an sequential development, each phase follows previous one once complete. Hence there is no way to go back to requirements during construction if a new change request comes or requirement changes.
This approach that's why lost most of the appeal in recent years when we had more dynamic application being made where requirements evolve during the project life cycle. Hence we saw the advent of Agile methodology which gives companies an iterative approach towards project lifecycle. The features/principles of Agile can be summarized below:
Welcome changing requirements, even late in development
Working software is delivered frequently (weeks rather than months)
Working software is the principal measure of progress
Sustainable development, able to maintain a constant pace
Close, daily cooperation between business people and developers
Face-to-face conversation is the best form of communication (co-location)
Projects are built around motivated individuals, who should be trusted
Continuous attention to technical excellence and good design
Simplicity—the art of maximizing the amount of work not done—is essential
Regular adaptation to changing circumstances
Customer satisfaction by rapid delivery of useful software
With the acceptance and usage of Agile in software development we saw many advantages coming up - the development cycle reduced, companies became more adaptive to change requests, testing/feedback since was provided module wise, it brought less bugs in the final product, reducing cost/time. When the needs of a project change, an adaptive team changes as well. An adaptive team will have difficulty describing exactly what will happen in the future. The further away a date is, the more vague an adaptive method will be about what will happen on that date. An adaptive team cannot report exactly what tasks they will do next week, but only which features they plan for next month. When asked about a release six months from now, an adaptive team might be able to report only the mission statement for the release, or a statement of expected value vs. cost.