Ten Benefits Using Continuous Integration With Agile. Imagine a single author writes a book, checks it for grammatical mistakes, plot holes and other gaps prior to submitting that work for publication. It is reasonable to think he will find a handful of problems, but not many. Now imagine there are 8 different authors for that same book, each working separately on individual chapters. At the end there would be legions of problems with the plot and voices of the characters to make the work incomprehensible. How are the outcomes different for code writers who working the way those 8 authors are? Two words: continuous integration.
This week on The Guardian Podcast with Ryn Melberg, continuous integration in Agile is the topic. The Guardian Podcast can be heard on Soundcloud, iTunes or www.rynmelberg.com. According to Martin Fowler of ThoughtWorks, continuous integration is a software development practice that requires team members to integrate their work frequently. With lots of code writers all working on the same product but doing so separately this might yield as many versions of code as there are code writers. But the practice of continuous integration requires the testing of code on a daily if not more frequent basis to make certain that programmers are not stepping on each others code by introducing conflicts, loops or links that were not intended.
Benefits Of Continuous Integration
- Fewer bugs and conflict. If programmers are following their code writing practice of continuous integration, there will be far fewer mistakes made and bad programming incorporated into the base.
- Fewer patches needed. We are all familiar with the software version naming practice of 1.0, 1.01, etc. Each iteration is a patch in the original code that was discovered after the product was introduced to the marketplace. The ongoing testing that occurs as part of continuous integration cuts way down on these expensive errors.
- Mistakes found sooner. With daily or even hourly tests that are part of continuous integration it is far less likely for a line of poorly written code to be incorporated into the source code. The sooner mistakes are found and corrected the less resources are needed for remediation.
- Reduction of defects. When programmers have new code it has to be tested first before it is accepted. If it does not pass the tests, it goes back to the programmer for correction. This is the way to reduce defects, as they occur not at the very end of the process.
- Automation makes continuous integration easier. All testing for continuous integration should be automated with programs like CHEF, GIT, or Jenkins.
- A clean build every day. No one on the team should ever have to go home wondering if his/her work was acceptable because of the daily integration.
- No more integration errors. Known sometimes as ‘stepping on each others code’ which can happen when programmers are working simultaneously on the same line of programming or there is more than one person modifying the same thing.
- Less chance of interpersonal conflict among programmers. If it seems like stepping on each other’s code could cause rancor on the team, continuous integration can help. Communications issues like these are the reason there are so many ceremonies to keep the whole team well informed and aligned.
- Scaling to SAFe is possible. While continuous integration is not a standard Agile practice, without it, scaling projects is next to impossible. Poorly written code from one team will begat even worse code from another during scale up. Or as Ryn so aptly put it, ‘you can’t scale crap.”
- Regression tests are easier to pass. The Agile practices of frequent feedback, communications and teamwork can and should help smooth over any potential conflict and catch mistakes sooner than later. Tests in the continuous integration phase will make clear what happened to the code, and allow for repairs.
These are far from all the benefits of continuous integration, but a reasonably good account of why Agilists who are not using it might reconsider.
The Guardian Podcast with Ryn Melberg is the only weekly podcast anywhere dedicated to Agile, Scrum, SAFe, and related governance topics. To learn more, visit www.rynmelberg.com.