In a world where new software development tools and techniques like continuous integration and continuous deployment (CI/CD) debut daily, it can sometimes feel like all of our problems should already be solved. But as we all know, that’s far from the case. As new solutions emerge, new problems come right along with them.
The introduction of the CI/CD pipeline has spurred a new era of fast software delivery and increased innovation, but has simultaneously exacerbated the challenge of ensuring code quality. Particularly during a global pandemic where software quality is increasingly important, balancing speed and quality is very top of mind.
OverOps CTO Tal Weiss recently sat down with Gigaom analyst Jon Collins to discuss the state of code quality today. On the Voices in Innovation podcast, they chatted about the growth of CI/CD, and how continuous reliability (CR) could be the answer to the speed-quality conundrum.
Check out the highlights from their conversation below. Be sure to listen to the full Gigaom recording for more insights.
Gigaom Voices in Innovation: CI/CD, Code Quality & OverOps
On the State of Software Quality in 2020:
Tal Weiss: “Over the course of the last few years, we’ve seen how software has essentially taken over almost any meaningful part of our lives. And the stakes for delivering high reliability software have become exponentially bigger. For example, if I told my mother, in her 70s, four years ago that my web conferencing software wasn’t letting me log on for a few hours today, and it was really a hassle for me in work meetings she might have mom said, “Oh, that’s unfortunate.” But if I told her now in 2020 that she can’t log on and see her grandkids because Zoom had an application bug that prevented users from logging in, when she’s supposed to do bedtime stories with them, it’s a major disturbance to her life.”
“We now see that software reliability impacts people’s lives in a very deep way. We do everything on our phones – banking, communicating, booking our travel, etc. The stakes for being competitive and innovating rapidly while still maintaining continuous reliability, have never been higher.”
Jon Collins: “I think it’s not just about software, because [the term] software is very nebulous. You can do anything you like with software, and that’s the problem. The challenge is how you do the right things. Sometimes that comes down to trying lots of different things. [Then] if you’re going in the wrong direction, stopping and going in the right direction as quickly as possible. So that possibly is exacerbating the situation that organizations are desperately trying to do more and more things and [are] therefore hitting more and more quality issues as they do so.”
On Speed and Continuous Integration / Continuous Deployment:
TW: “Continuous integration and continuous deployment (CI/CD) are really taking the world by storm. Five or so years ago, it was common practice for companies to just throw binaries into production very manually. The industry has since gone through a process where they said, “We need more predictability, we need more automation.”
But how do we move from continuous integration to continuous deployment to continuous reliability? Where it’s not just about releasing software every week because we need to meet the objectives of the business. How do we do so in a way that does not negatively impact the experience of our users? It’s like performing heart surgery on a train that’s running 100 miles per hour.”
JC: “When I was a developer, which is an awfully long time ago, we did have a quality first mindset. There was a review checklist, we had a programming and peer review, and so on. I came from a very lucky place. Reading the book “Peopleware” by Tom DeMarco and Timothy Lister, about the things that can go wrong, I thought it was fiction. And then I moved to another company and found it wasn’t fiction at all. It was very real, and everything that could go wrong was going wrong at that company.”
On CI/CD Maturity & Automated Code Quality Gates
TW: I enjoy working with organizations that are pretty mature in their CI/CD journey, where you can go from continuous integration to continuous deployment to continuous reliability by asking, “where do we want to set up our quality gates?”
This means essentially identifying at this point in time, in this environment, at this exact stage, what is the score for the code right now compared to yesterday’s baseline? And then creating a feedback loop back to the right team. At companies with a mature CI/CD pipeline, you don’t have to do all the infrastructure work to establish those checkpoints. Borders are already laid out between the different environments.
These quality gates will detect that a developer unknowingly introduced an unexpected issue and caused an error or negative impact to the system. Then they’ll actually interact proactively and block that release within the CI/CD pipeline.
JC: “Putting checkpoints in a chaotic situation is not going to be a simple job, but what you’re saying is that organizations that already understand the notion of a coherent pipeline, and then can say even at a high level, “Here are the stages we want to work through, as we deliver, as we create software, as we integrate it and as we deploy it.” That gives you the backbone you need to then apply quality gates and then apply the measurements, understand where the issues are and then mature and build upon that.”
Be sure to give the full podcast a listen to learn more about how your team can go from continuous integration to continuous deployment to continuous reliability.