From the course: Agile Software Development
The software crisis
From the course: Agile Software Development
The software crisis
- The rise in popularity of agile methodologies can be attributed to what is commonly known as the software crisis, the challenge of creating efficient and useful computer programs in a specific-defined timeline. Compounding the crisis was the trend of managing software teams with the same methods used for manufacturing or construction projects. Generally, manufactured products are identical. Think about cars of the same make and model coming down an assembly line, one after another. Design engineers and managers typically produce well-defined checklists with well-defined processes and tools that workers are expected to follow. Comprehensive system documentation is produced so defects can be tracked and fixed easily. And in construction, once you sign a contract to build a house, the requirements are frozen. If you want something changed or added, there is an additional cost. Change is generally frowned upon, and as time passes, making changes becomes more and more costly. Early software development tried to mimic the construction and manufacturing approach by following what is known as the waterfall model. Waterfall has five phases, requirements, analysis and design, development, test and deployment and maintenance. Each phase ends with well-defined frozen deliverables that act as inputs for the next phase. Requirements are captured early and are used as inputs for analysis and design. When the analysis and design phase is completed. We have a fully designed system that is ready for development. When development is done, the system is expected to be ready for testing and so on and so forth. So what's wrong with this approach? There are two obvious issues. The first problem is that the customer does not get to see the product before the early testing phase, which is usually two thirds of the way through the product timeline. You could be in deployment and maintenance phase before you would realize that the product you were building was no longer viable due to change market conditions or organizational direction, or change competitor landscape. Or you could realize that the product had a major architectural flaw that prevented it from being deployed. In other words, your product development initiative could completely fail after a lot of money and time had been spent on it. The second problem with the waterfall approach is that it uses top-down management. Development team members are expected to follow checklists and detailed controls. In other words, this approach prioritizes processes over people. Each phase is gated and has entry conditions before the development team can start working on the next phase. The software industry started debating, the manufacturing industry like approach used for developing software as early as the '90s. According to a 1994 Standish group report, only around 16% of the projects surveyed were successfully finished within budget and on time with the features originally scoped. 53% of software projects were either over budget, lacked features, did not finish on time, or a combination of these. And according to a 2000 book by Scott Ambler and Larry Constantine, 85% of software projects surveyed ended up as failures. So clearly, a new approach was required for software development. Enter Agile methodologies.
Practice while you learn with exercise files
Download the files the instructor uses to teach the course. Follow along and learn by watching, listening and practicing.