The Agile approach to software development emerged in the 1990’s as a result of the increased usage of software by businesses, and eventually end-users. The software development processes being used before this time, while adequate for large infrastructure projects, were inadequate for developing commercial software which contained much more variation to specifications.
What Existed Before Agile?
Originally, software products were coupled with large infrastructure projects, and so were developed using the same processes. For example, government projects and large projects for NASA such as the software development that went into the rockets being launched to the moon. Although not traditional infrastructure projects, this approach proceeded quite well as there was little variation in the project specifications.
When people started using software more and more for business, there was a rise in the amount of business software that was starting to be developed. The commercial software was being developed for businesses initially, and then started to come out for end users as well. Software developers of these modern commercial products found the traditional processes were too heavy on the infrastructure.
Software product development using the traditional approach created a number of problems:
- too much documentation upfront
- contract negotiation with customers designing big plans
- adherence (or lack of) to the designed plans
- focus on processes and tools rather than on the developers trying to implement these
- long coding runs which lead to increased lead times and increased resistance to rework
- long periods of time between review so errors propagated throughout the product
The New Approach
Agile software development was born out of the need to address these challenges created by the traditional infrastructure-style waterfall processes. Software developers identified that it was far more useful to have a process that could respond to changes in customer requests, and to get something basic working quickly, then adjusting and iterating from there. Using an Agile approach, developers could adjust the software based on their experience with the previously developed chunk of the software and move forward using an iterative process.
The emergence of the Agile approach enabled software companies to more quickly develop software that creates value for customers. It also enabled software development teams to be more responsive to changes and reduce the amount of rework required due to changing specifications.
For more on Waterfall, birth of Agile and what comes after Agile, check out our upcoming events page.