This post belongs to this root post and may be out of context if it is read separately.
Continuous integration is the practice of regularly and very often merging the code generated by the teams on a project. And when I say ‘very often’, I mean several times each day.
When I was a child, at school, my classroom mates and I participated in a nativity scene building contest. The contest consisted of portraying the nativity scene on a mock-up made of clay, paper or similar.
So the plan was that each character on the scene would be assigned to a child, then when the characters are finished, we would put everything together on the base. And that’s how we proceeded.
After one month, each of us came to the school with our character, and discovered the horrible truth:
Some kids didn’t understand they should have used clay as the material for their creations; as we didn’t discuss about the size, our Jesus was like Godzilla in a Tokyo city model; both the donkey and the ox where turning their head to the same side, causing one of them to look backward when placed around the cradle.
Our lack of coordination caused a complete disaster on our scene. If we had known the Continuous Integration concept back then, this would have never happened. Every day, we would have shown each other what we were working in, and we would have realized the misalignment earlier, when it was still fixable, instead of realizing it some hours before the contest.
The CI allows us to build code in parallel safely, because it decreases the feedback cycle, uncovering misalignments, and also affording changes.
You may know about CI benefits as-well. Have you ever reformed your bathroom or kitchen? If you did, probably the workers did show their work to you regularly. I don’t think you would be happy with your new bathroom if workers would have built what they understood from your first request. And at the same time, they were able to introduce changes, like a different floor or wall color.
Do you want to share your own anecdote around CI? Write it on a comment below!
Go back to the root post to read about other Agile techniques.