Agile methodology is a collection of software development principles that values adaptability and small, incremental changes in an effort to improve software quality and provide better responsiveness to changing business needs.
Agile principles arose in the 1990s, in part, to address perceived weaknesses of the traditional waterfall development process. Agile methodology has steadily gained credibility and adherence over the last two decades.
There are many specific practices and not all software development teams implement all the practices. However, all agile development teams subscribe to the core tenets, which revolve around short, iterative changes and frequent builds in order to make the development process responsive and adaptive to changing requirements. Agile developers believe that making the customer/business happy is more important than executing a long-range plan.
Agile methodology has gained wide acceptance in part because it is a much better fit for the fast pace of change that drives business competition in the age of the Internet and mobile devices. Creating a single set of requirements for a software product and then setting a date to freeze changes during a weeks- or months-long development process is unsuitable for the pace and complexity of today’s business needs. In contrast, agile developers view creating software as an organic, evolutionary process.
Agile is used widely in companies that build customer or consumer web-based software products or mobile applications in which daily or even hourly releases are common. However, the overarching principle of smaller releases and greater automation in build-and-test processes have gained broad acceptance, even in organizations that have not formally adopted agile methodology.