Continuous integration or development, known commonly as CI/CD is really just a high level plan for how you will be developing and maintaining code in your project/company/etc. It is the idea that instead of pushing major changes to the main branch of your code all at once, you (and your team if you are working on a team) push changes to the main branch as quickly as possible.
You might be asking why you would want to do that, so let’s look at some reasons why this model is being used as often as it is:
1st — Because pushes and pull requests are happening more frequently in this model with less substance to each one it is much easier to review code for things that don’t just include functionality. When small chunks of code are pushed it’s easier to check the quality of the code in other areas and produce overall better quality of code.
2nd — Identifying problems becomes much easier. If you push an entire feature to the main branch all at once and something breaks it can be difficult to pinpoint the exact location in the code that is causing problems. However with small integrations its much easier to look through the code when something breaks and find what is going wrong.
3rd — Since changes are being pushed to the main branch faster than other models its relatively seamless to address changes that users/clients/designers/or yourself want to implement.
These are just some of the things that CI/CD is useful for and I think a big takeaway is that if you’re working on a big team CI/CD is generally a good starting point because you are less likely to run into conflicting code from multiple members if changes are kept small.
So why isn’t CI/CD for everyone? well lets look at a few of those reasons as well:
1st — CI/CD means you also need to have a strong system of testing/ other ways to monitor the production environment. Generally speaking things break during a change of some kind and if you are changing things regularly you are increasing the chance that something breaks. It’s important that you catch problems early on.
2nd — For users it can be frustrating if a product they are using is continuously changing. Changes in CI/CD aren’t often noticeable to the user but they can be and if they are happening often it can make for an annoying user experience.
Wether you decide to go down the route of using a CI/CD plan or not I think it’s important to have a plan when going into a project. If you’re working with other a plan helps keep everyone on the same page and leads to a consistent product, and if you’re working alone a plan can keep you on track to finish the project the same way you designed or envisioned it.