What it is: Continuous Integration (CI) is a paradigm of software development practice in which developers integrate and test new code as it is written. This makes it easier to isolate problem code early, encouraging rapid development without loss of quality. This is different than the traditional model, in which developers work on features or fixes in isolation before committing them.
What it does: In CI, developers “commit” new code (make it permanent) frequently, often many times a day. The new code is tested automatically and stored in a central repository. This entails code being committed and tested in small chunks, which then enables the frequent, automated rebuilding of the application.
Why it matters: In CI, the speed of this process encourages developers to enact bug fixes and incorporate new features as the need arises, rather than lumping them together in large batches. Additionally, CI allows for Continuous Delivery, where applications are built, and potentially deployed, continually as they are updated.
What to do about it: Most organizations today are looking to deliver on digital transformation goals through the adoption of faster, more responsive software delivery. Depending on your own organization’s goals, review whether your development teams are practicing CI. If not, examine the business case for how CI can support and catalyze your wider technology-driven business goals.
- Makes it easier to identify problem code, thus cutting down on bugs
- Lowers the probability that developers will waste time on irrelevant or incompatible code
- Encourages more responsive development, within the framework of agile best practices such as DevOps
- Makes it easier to release small updates
The Risks of the Old Model
Before CI, developers produced large batches of code in siloed teams, integrating them and testing them less frequently. This introduced opportunities for error and wasted time, by allowing developers to spend long periods of time working on code that could prove buggy or incompatible. In addition, these failures could be more time-consuming to fix because it could be harder to figure out which code was at fault, adding unexpected and unnecessary delays to software release.
Once CI is implemented, there’s another potential stage in the continuous evolution: Continuous Delivery (CD). As the name implies, in CD, the software is delivered continuously into a production environment. Like CI, this poses big challenges, which are mainly down to the complexity of the elements involved (e.g. software code, internal and external libraries, target infrastructure) but potentially leads to huge benefits—with CD, software updates can occur seamlessly in a matter of days or hours instead of weeks, which shortens time to (business and customer) value and enables faster feedback, further accelerating innovation.