As a former designer, I still catch myself thinking of Corporate Identity and Corporate Design when I hear "CI/CD". (Interestingly, I never associate "CC" with Corporate Communications, but with Creative Commons.) Abbreviations are always annoying because they provoke questions that many people then hesitate to ask. To save you from asking, here is this article.
What is behind the abbreviation CI/CD?
Continuous Integration (CI) and Continuous Deployment (CD) are two central terms in the world of software development that may seem complex at first glance, but in reality are very practical and efficient methods. They are the pillars of a modern and agile development methodology aimed at improving the quality of software while accelerating the development process.
CI: Continuous Integration
Continuous Integration, also referred to as continuous integration in German, refers to the practice of regularly and frequently integrating changes into the main codebase of a software project. Instead of integrating large amounts of changes at once, which often leads to conflicts and errors, small changes are continuously integrated. This allows problems to be detected and resolved early, leading to higher software quality.
CD: Continuous Deployment
Continuous Deployment, on the other hand, goes a step further. This is the practice of automatically transferring changes that have been successfully tested by the CI to the production environment. This makes new features and improvements almost instantly available to end users. This leads to a faster delivery of features and also allows for a quick response to feedback.
Disadvantages
Although Continuous Integration and Continuous Deployment offer many advantages, there are also some challenges.
The introduction of CI/CD can require a significant initial effort. Setting up the necessary infrastructure and tools, training the team, and adapting existing workflows can take time and resources. In addition, CI/CD can increase the complexity of the development process. With the introduction of CI/CD, new tools and technologies are usually added that need to be learned and managed. This can be a challenge, especially for smaller teams.
Since changes are frequently and automatically transferred to the production environment, errors and problems can quickly lead to failures if they are not immediately detected and corrected. However, this risk can be avoided if the automated deployment initially takes place on a test system and is only rolled out to the live system after careful testing.
And finally, it can also become difficult to find the right balance between speed and quality. While CI/CD enables faster delivery of changes, this can also lead to less time being available for extensive testing and reviews, because the next features are already ready.
Despite these challenges and potential disadvantages, CI/CD is a powerful tool that, when used correctly, can lead to more efficient and higher quality software development. It is therefore important to carefully plan and implement the introduction of CI/CD, taking into account both the advantages and potential disadvantages.
Advantages
Since changes are frequently and in small steps integrated, errors and problems can be detected and corrected early. This leads to higher software quality and stability. At the same time, the automated deployment process allows for faster delivery of new features and improvements. This leads to higher customer satisfaction and competitiveness.
Even though this paragraph is much shorter than the consideration of the disadvantages, this article is a clear plea for CI/CD.
An example
In an intranet portal, job advertisements should no longer be published in the form of news, but via a dedicated content type. A template should be provided for input, which accelerates recurring entries. There should be a dedicated page with all open job advertisements and a tile on the start page.
This requirement is first broken down into smaller tasks:
Provide input mask: selection field for type of position, text field, footer (pre-filled with a text module), switch for "open/filled"
Create automated overview (only open job postings)
Design of the individual view
Design of the overview page
Create icon for the tile on the start page
Roll out when everything is finished?
In a traditional software project, everything is developed and designed first. After all, two typical job advertisements were provided, which the service provider could use as a guide. Then there is a discussion about the icon for a while and several new suggestions are made over a few weeks. And then the human resources department notices that there must definitely be a button to download the page as a PDF.
Or in quick small steps
In an agile project with CI/CD, on the other hand, the new input mask is first tested and rolled out. The personnel department has started to enter the first job advertisements and it turns out that two more fields are needed: one for limitation and one for the entry date. A follow-up task is recorded.
In the meantime, the overview page has been created and in parallel the designer has fine-tuned the presentation of the individual page. The overview page is not yet nice, but it lists the titles of the active ads grouped by type and sorted by recency. This change is also rolled out. A link to the overview page (still without icon) can already be placed.
While the icon is being discussed, the designer takes care of the presentation of the overview page. In development, the two additional fields are added, the personnel assistant at the customer checks the change on the test system and releases it. He can then update the information for the existing job advertisements shortly afterwards. There are now fewer of these than before the weekend, because in the meantime two vacancies could be filled at short notice.
The icon for the tile on the start page is then added when the discussion is finished.
And for generating a PDF, which was not planned in the original order, it is agreed to include it in the plan for the next development round.
Technology
In practice, CI/CD is often used in combination with other agile methods and practices such as Scrum or DevOps. Various tools are used, including version control systems like Git, build systems like Jenkins, and deployment tools like Kubernetes.
You don't need to understand this now. But if you've heard that your service provider uses such tools, you might not need to do any more evangelizing.
Project managers must join in
As a project manager or decision-maker for your project, you should consider a few aspects if your service provider works with CI/CD.
Project culture
CI/CD promotes a culture of continuous improvement and shared learning. It requires open communication and the willingness to recognize, acknowledge and correct errors early on. Blame and time pressure must be left out. Also, one should be able to discipline oneself and stay focused on the task. Reprioritizing is not the goal.
Invest time
On the one hand, it takes some time until you have learned to formulate the tasks in such a way that they can be efficiently processed. On the other hand, it also regularly requires a certain amount of time to check the current work results and give feedback. Anyone who thinks they can collect the approvals and process them en bloc at the end of the month sabotages the advantages of CI/CD.
Initially accept higher costs
Service providers who use the appropriate tools and technologies have invested. They not only have slightly higher basic infrastructure costs, they have also invested in the development and optimization of processes and not least they have to maintain their infrastructure.
Such service providers do not pay for themselves through the lowest daily rate, but through the higher efficiency, the speed, also the fast error correction. The work results rolled out early can also make them pay for the clients early.