The driving force behind CI is to have an integration server that runs code builds a few times every day.
Developers can submit changes without affecting 'prod/live' as nothing happens without CI. But consequences can be enormous, and hidden errors can sneak into the system, and break it.
Yes, CI is a barrier, a shield, for developers. It fights against errors and human mistakes; against bad modules, that could be shipped into the production version. The code submission process isn't complete by committing changes with CI practice, while all compilation scripts, test jobs, and code inspections return no errors. And, if all those check-marks have a green status, you have a green light to push your changes into the main codebase.
The ideal way is to start your project with CI in mind, to make you battle-ready for any issues that get caught by applying this approach.
However, life is not ideal. What to do, if your project is ongoing, and it didn't integrate DevOps methodology from the beginning?
Automated Solutions FTW You could try out tools that automate certain modules/processes of the software development lifecycle. For example, Jenkins is a popular automation server. Bamboo covers functional testing among other things. OR. You can check out this newsletter's sponsor - Circle CI. These guys automate the entire pipeline, fromsetting up workflows, enabling debugging during builds, automating your tests and sending you notifications when everything is done. Basically, you can push your commits with confidence.
Especially near Deadlines.
✳️ CI Gives You Breathing Room to make Small Mistakes
Do you believe in Dr. House's catchphrase?
“Everybody lies."
And/Or Murphy's law:
CI is like your shield against the above being proven correct. Like science, you can't blindly trust your results when you programming until a third-party can replicate it and get the same result as you.
Developers are real people, and we tend to make mistakes. Instead of trying to work in a tornado, it's better to have solid ground under your feet.
A Sports analogy: You can purchase a star, that is at its peak and will score at every game, but, more often than not, you'll prefer a good and reliable team with a plan, mentored by a smart coach to get you more predictable results.
A Poker analogy: You trust your luck with a pocket Aces, rather than go all-in with 7-2. Won't you?
What will you pick(Neo)? – The way, full of pain? Or you'll admit that CI is not just a wish. It's an important thing that will improve your code quality, and we all want that quality, right?