One of agile development’s core principles is to deliver working software at the end of every sprint. Teams accomplish this by defining robust user story acceptance criteria, committing to the sprint as a team, automating testing, demoing sprint results, and maturing other practices to ensure that code is complete and ready for production.
Organizations adopting devops practices, including CI/CD (continuous integration/continuous delivery) pipelines, develop the automation to push code to testing environments; the most advanced teams implement continuous deployment where they push code to production at the end of every sprint or even more frequently.
Ask some of these teams what they are delivering next month or at upcoming releases and many will struggle to answer the question. Ask how they ensure that their priorities positively impact customers and end-users and they’ll admit to limited understanding, reach, and visibility to adequately answer this question.
Then consider deeper questions:
- How often has one user story that looked easy to implement led to multiple stories executed over several sprints?
- What is the cycle time for new features, measured from the time the product owners list them in the backlog to when they are fully delivered to customers?
- Are teams reinventing the wheel, or are standards evolving as teams deliver new capabilities?
- Are teams blocked by activities such as hiring, upgrading infrastructure, training, and other activities that require lead times longer than a sprint or two to plan and execute?
- How often are operations teams caught off guard by the timing, scope, activities, or risks of an important application release?