During some Scrum training classes, I have been asked, can teams practice Continuous Delivery (CD) , using the Scrum Framework? The answer is a resounding yes! Let’s explore why some believe that Scrum only allows you to release at the most, every Sprint against what the Scrum Guide says.
What Scrum says
From my reading of the scrum guide, the Scrum framework requires a Scrum Team to deliver working software (product increment) at least by the end the Sprint. Here is a quote from the Scrum Guide:
“The heart of Scrum is a Sprint, a time-box of one month or less during which a ‘Done’, useable, and potentially releasable product Increment is created”
From this explanation, some teams I have worked with understood it to mean that your team can only create a potentially releasable product at the end of the time box. It is correct that the Scrum Guide states you must have a potentially releasable product increment at the end of the Sprint time box.
I understand that statement in the guide to mean I can develop several potentially releasable product increments during the sprint. To achieve a potentially releasable increment by the end of a sprint, I like to keep checking that it is indeed potentially releasable. In other words, the Scrum guide does not forbid using a continuous delivery model within the Scrum framework.
Continuous Delivery Defined.
According to Carl Caum from the Puppet Blog, “Continuous Delivery doesn’t mean every change is deployed to production ASAP. It means every change is proven to be deployable at any time.” This fits my definition as well. I say that “Continuous Delivery means a team can deploy a feature whenever a product owner approves the feature and wants to deploy it.” To be able to tell your product owner they can do this, does take time for the team to institute the right practices to enable CD.
How can I implement CD with my Scrum teams.
Now that we agree CD can be included in your implementation of scrum, how can you make sure that happens? First make sure that your Definition of Done helps CD can happen. Typically this includes a lot of automation, to make your CD work smoothly. Also I recommend good test automation (a full blog post in its own right).
Scrum encourages teams to adopt practices like, CD, unit testing etc. The Scrum Guide does not provide guidance around practices and tooling. The Scrum Guide encourages you to adopt good engineering practices. Scrum.org also provides guidance around good engineering practices. The course called the Professional Scrum Development course provides exposure and interactions with these tools and practices. Teaching concepts including Continuous Delivery. Other good practices taught, that you need in your continuous delivery pipeline include:
- Automated unit tests
- Automated integration tests
- Good Testing practices
- Infrastructure as Code
Now Go forth and CD
Assuming you agree that CD and Scrum are not at odds, now create your strategy to implement CD within your Scrum Teams. Use training like the PSD, coaching or just trying this to get to a CD state. Remember that it takes time to implement these good practices. Good luck, now go forth and CD!