Lessons Learned From Getting Into The Spirit Of Continuous Release
One of the main rituals of agile is continuous delivery, it gives you the chance to build faster, measure promptly and learning instantly from any and each of your product increments.
Knowing all the benefits of the continuous release any product teams can be forced into Big Bang releases instead of the continuous release of the product. This might happen because :
- Marketing or sales wants to do a big launch event so they think nobody can see it until they’re ready.
- Engineering team is often interested to release software at it’s best, they don't like to release software that they believe is not really something that should be released.
- Sometimes product manager is just in rush for shipping a new product or feature to reach out a given deadline in the roadmap or rolling out new features for product review with stakeholders.
- Business owners might not have a clear & prioritized list of their business objectives, so they would ask product team to work on a problem that they are not ready for launch yet, operationally, logistically or financially.
After identifying some root causes of why product team force to big bang releases, in following I would like to share with you the great lessons we’ve learned by adopting a continuous release pipeline in our product development process.I’ve synthesized these lessons into the 3 categories of business, user and product team perspectives.
User Perspective:
- In general, users do not like big changes, there is often a backlash from users because of too much change at once. To minimize the disruption your new updates will make, continues release will help you out with applying the changes gradually.
- Delivering continuously will help you to get product feedback and validation your idea sooner.
- While we’ve used to keep our product in maintenance mode for a couple of hours in each big release , since we opted to continuous release we keep running while we are releasing. As your software is always available and running, user experience of your product will be improved and accordingly, your referral rates will be higher too.
Product Team Perspective:
- Your product team might get nervous & anxious about each big releases, especially when something unexpected is happening during or after release, contineous release makes releases sane and calm for your team.
- While you continuously releasing your software, your master branch will always remain clean & align with production code, this helps you to merge & integrate any new features faster and easier.
- HotFixes ; when you need to patch something fast to solve a bug that is already in production, it needs to go out right away, so if all your features are sitting in the “master” branch and your master branch is cleared after release, you are able to perform this fixes right of the bat!
- Life-saving rollbacks; since you are releasing regularly, number of changes you would ship in each release will be way less than a big release, this makes rollback easygoing particularly when you’ve broken something while releasing.
- Continuous Release + Feature Flags; If you’re already practicing continuous delivery, feature flagging can become an integral part of your dev cycle in no time. Using feature flags will even enable you to merge incompleted features into your production code. With continuous delivery and feature flags, you can launch, control, and measure features at scale. This has a great advantage for a product manager to conduct significant combination of A/B tests.
- More QA efforts; continuous release needs continuous Integration and Regression test, this would create a very heavy workload for your QA team, if your software has a complex architecture nothing besides an efficient test automation strategy will save you and your team.
- Continuous release needs a strong & robust DevOps culture. You will need a strong DevOps team for establishing the vital processes to persuade continuous release, this includes establishing automation test, continuous integration and continuous delivery’s tools and terminologies. Having strong DevOps culture would also help you to sleep without anxiety the night after release.
Business Perspective:
- One of the tangible results of continuous release for your business is shrinking time-to-market (TTM) while you are introducing new features or services.
- It saves money and reduces waste in the long-run : although establishing a continuous delivery pipeline consumes your people and need initial investment in tools and machines, while you are releasing incrementally and iteratively, you could collect up & review your delivery process, you would get more chance to think about the right solutions in each step to plan for better ROI .
Conclusion:
It’s not easy to adopt a practical continuous release process in your product development process, it needs loads of work on the part of your engineering and operation team, product manager has got to work hard to get this change done. A good way to adopt this practice would be reducing your release cycle times gradually. If you have bimonthly release cycle, make it monthly first, adapt to the new cycle and work for releasing each month, each week and ultimately multiple automated deployments per day. Make the release boring for your team!