5 Challenges That Can Break Your Continuous Integration Efforts

Continuous integration is a widely praised idea, it has multiple benefits for organizations such as improved productivity and lowered cost. There are a wide variety of CI / CD tools and services available for companies with all scale and budget. But applying continuous integration does not only mean to set up and run a CI tool or use a CI service. Even though many are convinced that CI could benefit their development team there are companies who are failing to successfully adopt continuous integration practices due to organizational and cultural challenges. In this article, we discuss some of these common challenges that can stop you from truly taking advantage of continuous integration.

1. Individuals May See Continuous Integration Counterproductive

Members of a development team have different roles, responsibilities, and priorities. Product managers’ first priority might be launching new features, project managers’ have to make sure that their team meets the deadline, and programmers might think stopping to fix a small bug every time they occur will slow them down. They might feel keeping the build clean is an extra burden on them and they won’t not be the beneficiary of their extra efforts. This can potentially jeopardize the adaptation process.

To overcome this:

  • Make your whole team come on board before starting to adopt continuous integration.
  • CTOs, team leaders need to help employees to understand the costs and benefits of continuous integration.
  • Highlight what and when will coders gain by dedicating themselves to a different working method that requires more openness and flexibility.

2. Integrating CI Into Your Existing Development Flow

Adopting CI inevitably comes with the need of changing some parts of your development workflow. Your developers might say “If it ain’t broke, don’t fix it.” Mainly if your team has a big routine in executing their current workflow. Changing the workflow must be done with great precautions. Otherwise, it could compromise the productivity of the development team and also the quality of the product. Without sufficient support from the leadership, the development team might be reluctant to undertake a task with such risks involved.

To overcome this:

  • Give enough time for your team to develop their new workflow and to select a flexible continuous integration solution that can support their new workflow.
  • Ensure them that company has their backs even if things might not go very smoothly at the beginning.

3. Relapsing to the Former Testing Habits

The direct effect of adopting continuous integration is that your team will test more often. More tests will need more test cases. And writing test cases can be time-consuming. It sounds like a vicious circle isn’t it? Developers often need to divide their time between fixing bugs and writing test cases. Temporarily, developers might be able to save time by manually testing, but it can hurt more in the long run. The more they procrastinate writing test cases the more difficult it will become the catch up the progress of the development. In the worst case scenario, your team might ends up going back to their old testing process.

To overcome this:

  • Emphasize that writing test cases from early on could save a lot of time for your team and can ensure high test coverage of your product.
  • Embed the idea in your company culture that test cases are as valuable assets as the codebase itself.

4. Developers Ignoring Error Messages

It is a common problem when a bigger teams work together that the amount of CI notifications become overwhelming and developers start ignoring and muting them. Therefore, they are also likely to miss the updates that are relevant to them. It can lead to a point where coders develop a relative immunity to broken builds and error messages. The longer they ignore relevant notifications, the longer they develop without feedback into the wrong direction. This could potentially cause huge rollbacks, wasting money, resources, and time.

To overcome this:

  • You should only send critical updates
  • Only send the notification to developers who are in charge of fixing it.

It is a common practice to keep a team member “on call” for a day. On that day he will be the only one in charge of reacting to CI notifications. Other team members don’t have worry about the notifications.

5. Creating Fear-Driven Development

Adopting CI certainly requires a paradigm shift. Getting used to daily building and testing could be challenging for your team. Being afraid of breaking the build or not passing tests could build up pressure and fear in individuals. Working in an uneasy environment could lead to delayed builds and big buggy merges.

To overcome this:

  • Make team members consider failed tests as positive results, the earlier their tests fail the earlier they can resolve problems.
  • Don’t punish but reward good performance.
  • Don’t blame or pick on employees for occasionally breaking the build.
  • Pursue and promote continuous self-improvement. (Eg.: try new development methods)
  • Help developers look at changes as opportunities not as threats.

We at flow.ci believe that understanding your own team’s or organization’s reality is fundamental to adopt CI successfully. 
The points we made here are not carved in stone and since every business is different and you might face or used to face challenges that we didn’t mention here. We would love if you shared your opinion and your experiences below.

flow.ci is a hosted continuous integration and delivery service, designed for teams who need a flexible and scalable solution but prefer not to maintain their own infrastructure. In flow.ci, development pipelines or automation workflows are simply called flows. In a flow, every step is a plugin that can be added by two clicks. You can add as many steps to your flow as you need, and there is no time limit on builds.