How to teach CI with “Little red riding hood”?
Let’s talk about the underlying idea of CI (continuous integration) and how to practice it, without the need of any dev knowledge.
Let’s talk about the underlying idea of CI (continuous integration) and how to practice it, without the need of any dev knowledge.
What is CI?
Continuous integration is a practice with a name composed by two words:
Continuous that means almost always
Integration that means to integrate the work done
It seems simple to understand that in CI we want to integrate all the work done of everyone inside the team, almost always. The problem starts when we try to do CI with other practices that are optimized for a different thing.
For example, PRs are not something thought to increase integration frequency, to reduce lead time, they are almost the opposite.
CI tries to improve the communication thought the continuous feedback of the integrations, done almost always by all your teammates.
This means that frequency of integration is key, and there is a relation about this frequency and the integration job itself.
We are in fact trying to follow this old Agile mantra
if it hurts, do it more often
Let’s focus on the idea and not loosing too much with terms.
To make people to understand what is CI and why things are usually higher quality when we work doing CI, I created a dynamic called the “CI tail”.
It’s a simple dynamic, all the team needs to be in a call or in the same place. Devs, qas, pos, people from business everyone is invited.
CI tale dynamic
The goal of this dynamic is writing “Little red riding hood” by small teams and compare the results. There is no much complexity here, that’s out of the game, the tale is well-known by anyone.
Coordination is the only constraint here, to have better or worse results.
We will have 10–15 minutes to do the work, and we will compare later the results.
We will split the people in two or three teams, depending on our forum size. If we are doing this dynamic remotely, we will create breakout rooms per each small team.
Some of these groups will work in isolation and others will work using CI:
The people that are part of a team that is working in isolation need to split the tale in different parts, one part per each member of the team. Each member of the team will start working completely in isolation, in their own document. Once one person finishes, he/she will send the document to a person who is in charge of integrating all the parts of the document.
The people that are part of a team that is working doing CI will use Google Docs and will work on the same document all the time. They can decide to split or not the work done, the only important thing is that they are working in the shared document all the time.
Apart from this, both teams can organize as they want.
CI teams and non-CI teams will have 10–15 minutes to create a document to present the “Little red riding hood” tale.
The interesting part of this dynamic is that everyone can participate, there is no need to understand about development, what is a commit, or any other thing, it’s just to understand how good we can coordinate in different scenarios.
Once the time has finished we will go team by team showing the results of the work done.
I’ve done this dynamic several times, and teams working in isolation expend too much time working in their small parts and few minutes or even seconds trying to improve the whole document.
They usually present documents with different types of letter, parts that overlap, or bad transitions between sections, different styles of writing, etc. Things break because they use few minutes or even seconds to integrate all the parts. No one cares too much of the final job, because they don’t have time, they just care about his/her small part.
In the other side people who worked doing CI usually present better documents, with a better style, more effort in details because they have discussed the final thing all the time. The number of times they integrate their work is much higher than the isolation teams.
Last thing I do is a voting session about what is the best document created, and until now always CI teams has won.
I ended with this dynamic because business people don’t understand the problems dev teams have. But also because a lot of devs think that a higher integration frequency will make the whole system a mess. That we will be always fixing things and to make it work we will need much more time, than working in isolation. All CI teams have finished until now the tale in 10 minutes or less.
This dynamic shows just the opposite to everyone, that is much more beneficial the constant feedback and working in just one copy of the product than split everything and make people work in isolation.