The Real Reason Why Agile Took Off In Software

Ben Butler
3 min readJan 20, 2023

Before Agile software was often created in phases. This entailed a big upfront design, locking in requirements, doing the work once, and hoping it all works out in the end.

The reason for this was because of the rigidity of software. It was like building construction or an infrastructure project. Projects soon hit a point of no return.

Agile ways of working did happen. In the design phase. Images were able to be worked and reworked, iteratively, drawn, erased, changed with feedback loops with the customer. That was the best place to make changes. This required an emphasis on comprehensive documentation.

Since then Software technology advanced. Software and language developers discovered patterns for making software less coupled. Eventually this started to become inherent in software technology, such as object oriented programming. Iterative development models such as Scrum emerged.

“SCRUM Development Process”, 1997, the first paper on Scrum

Eventually the development of software became nearly as flexible as creating software diagrams and documentation. Many forms of documentations were starting to be realized as waste. With the right practices iterating on software development become nearly as easy as iterating on the design document.

Design and development phases overlapped into one.

Test Driven Development became popularized. Most code was tested. Developers became more confident that their changes didn’t break anything. Automated tests became a continuous intrinsic part of developing software.

DevOps also since came into the picture. It removed the divide between development and operations.

Additionally the internet replaced manufacturing-style production environments with an environment that can change multiple times a day.

This is why Agile took off in software. Legacy project management practices confined agility to the design phase. Since then subsequent phases became obsolesced. Now the entire software lifecycle is design phase. The output of the design phase is an immediately deployable fully functioning software that is done.