Continuous Delivery vs CI/CD
I have already written about the problems with the tech jargons in general here, and here. This post is on a very particular jargon CI/CD.
The software developers' community learned about this excellent practice from the book "Continuous Delivery", authored by Dave Farley and Jez Humble. Thanks to Continuous Delivery, tech teams can deliver business values with better impact. I am happy and proud to say I am a practitioner of Continuous Delivery.
Over time, I have seen people calling "Continuous Delivery" with the term "CI/CD" and the "Deployment Pipeline" as "CI/CD pipeline," which I don't consider a good choice of words.
From what I remember, the book Continuous Delivery never uses the term "CI/CD." I used the AI tool Answers, available at OReilly, to confirm it. I received the following answer.
"The query intent is to determine if the term "CI/CD" is used in the book "Continuous Delivery", and the answer is that the term "CI/CD" is not directly mentioned in the book "Continuous Delivery" by Jez Humble, but it is referenced in other books that discuss continuous delivery and continuous integration."
Now let us understand what is wrong with the term "CI/CD".
Two of the main characteristics of a good technical term are conciseness and unambiguity. The term "Continuous Delivery" fulfils both of these criteria. CI/CD is an abbreviation that combines two ideas: continuous integration, which existed for several years before continuous delivery, and continuous delivery. If you have practised continuous delivery, I am sure you know continuous integration is a necessary pre-requisite for continuous delivery. Hence, it is not required to be explicit about continuous integration here. Imagine you tell someone that you are a post-graduate. How would you feel if someone asked you if you were a graduate? Hence, "CI/CD" does not meet the conciseness criterion.
FFrom the early days of my career, we practised continuous integration in the projects I worked on, and we used the word "continuous integration" to refer to the practice. Today, if your team just used the practices of continuous integration and not continuous delivery, then you could say, "We practice continuous integration" without needing "CI/CD". Calling it "CI/CD" instead of continuous integration will only result in poor communication.
Now, let us look at the term "CI/CD pipeline." The continuous delivery book uses the term "Deployment Pipeline" to describe the tool that integrates everything involved, from the code check-in to the deployment.
Many teams claim they practice continuous integration because they have installed Jenkins (or similar tools) on a server. In reality, the developers may have been living happily in their feature branches for a long time, not being bothered by the fact that all the features must be delivered in one application, meaning delivery has to happen from one branch. In this case, if they claim they practice continuous integration, they are just lying. Here, the term "CI" might come to their rescue because CI is also the abbreviation for continuous isolation.
It is unfortunate to see people favouring some poor abbreviations instead of well-communicating existing terms.
If you are reminded of Continuous Delivery vs Continuous Deployment by reading this post, check out my post on that.