Previously at Project Portfolio Office (PPO), we followed a “tick-tock” approach for new releases. That is, we would have a customer facing release (the “tick”) followed by a technical release (the “tock”). The customer facing releases were typically enhancement requests from our customers or internally generated enhancements that our users would “see”, while the technical releases generally had to do with behind the scenes types of enhancements, such as performance and scalability improvements.
In practice, this meant that we completed approximately six releases a year, three of which were customer facing and three of which were technical. This implied that we typically worked on each release for about two months.
As we have matured as an organisation, improvements to our deployment processes have made deployments highly automated and repeatable – to the point that we began to wonder whether it would be possible to accelerate the pace at which we brought out enhancements. For the last year or so, we have therefore changed our approach and started to roll out enhancements at an increased pace, reaching the stage where we are now deploying changes almost every week.
The biggest impact of this new deployment approach is that we had to learn how to break large enhancements up into smaller chunks. With this is mind, the PPO team started using feature switches extensively, which allow us to hide major new functionality from users until it is ready, while still allowing us to roll out changes into production. Although doing this add a bit of complexity, I believe the change in approach has been generally beneficial.
The biggest advantage is that it has significantly reduced the risk associated with the release of a new functionality. Previously, when we released new functionality, it was a large chunk of code that was kept checked out for the duration of the change. Even after extensive testing, there was still a considerable risk that we could have missed something. With the new approach, however, very little code is committed during each release – it is easier to test and we can see how the code behaves in production. Deployment also becomes routine.
The other benefit is that where we previously had to branch our code to allow for hot-fixes, we now develop directly on the main branch. We have a high level of confidence that we can deploy our code at any time without any negative impact.
From a customer’s perspective, the greatest advantage is that PPO can be more responsive to client requests and get the functionality out faster.
This new approach does require a high level of automation and discipline, but our experience over the past year has been greatly positive. In the coming year, we will continue to tweak this process and look at ways to further accelerate our deployments. We’ll keep you posted!
For more on how regular product enhancements follow our blog, /category/product-news/