Software development practices have evolved over the years to more streamlined processes for creating higher quality applications at greater speed. Many organisations have moved away from traditional waterfall models, where each phase of development is dependent on the other. In Waterfall models, testing came towards the end of development. This meant that issues often weren’t found until the later stages of a project. Teams would have to backtrack to fix issues and push back release dates. Historically, the steps taken to minimise these unanticipated modifications involved long planning cycles that stifled agility and incurred excessive costs.