Once only adopted by cutting-edge software teams, agile is now a mainstream approach used by app development teams across a range of businesses, whether in healthcare, manufacturing or engineering, to make their processes more effective.
But adopting agile processes is only part of delivering software faster. When it comes to improving how an organization uses software to innovate its business, merely installing a new tool such as Kubernetes to streamline operations will not bring about dramatic change if businesses are not addressing how they think about software creation and delivery.
Currently, many projects are designed like a waterfall: software features are specified up front, developers write the code, and the app is released to users. These activities flow forward, one after the other, often to the detriment of the project.
Sticking too rigidly to the process means developers will continue down the same path until the endpoint, when they often find endemic software issues that could have been avoided earlier on by wider and more frequent testing. Luckily, there newer software development practices and tools that help you avoid falling down the waterfall. One of the most important among these are continuous integration (CI) and continuous delivery (CD). As we'll see, a critical tool modernizing your software supply chain.
What are CI and CD?
These are the collection of tools, processes, and policies that allow your app development teams to quickly code, build, test, and deploy new features on a weekly, if not daily basis. Deploying this frequently is key to putting the feedback loop in place needed to start using software as your organization's primarily innovating tool. A recent survey found that 46% of high performing organizations in EMEA (those with revenue growth of 15% or more) credit CI/CD with helping their transformation.
And yet, historically, organizations have been slow to adopt CI/CD. Progress has been made but adoption of CI/CD is still low, with this year's State of Agile survey putting CI at 55% and CD still only at 36%. These numbers have remained steady for many years now, showing that CI/CD adoption is stagnant.
Putting CI/CD in place is vital for the entire pursuit of digital transformation with software – but with business uptake still down, let’s explore what teams need to do to successfully adopt these processes.
Rewriting testing into your strategy
Fast feedback and having a tight focus on requirements even as they change is crucial to success when using agile in projects. This is where CI/CD can provide huge value to software project teams, helping to regularly test and integrate solutions to incorporate changes as they are made. However, the nature of this process also means starting to use CI/CD for the first time can be time consuming and may require an entire rethink of how software teams work.
While traditional teams perform a good amount of testing at the end of a project, typically this takes place just before deployment. This pushes out software verification late in the process, right where you can smell the long weekends of meeting your deadline.
Without ample testing in place from the beginning, it's first difficult to actually do CI. At its core, CI automates running unit tests, checking for code use compliance, and ensuring that all of your code works together (the "integration") part. If the tests are facile, the value of doing CI is negated.
Preparing production for day-to-day deployment
Finally, software teams introducing CI/CD must prepare their production environments to handle weekly, if not daily deployments. Failure to do so will block the benefits that the technologies can provide, as the purpose of CI/CD is to deliver frequently, in a series of shorter cycles that allow you to learn and adapt as you go along. Your approach to software becomes agile, not locked into 12 month old requirements and plans that are no longer helpful, or even realistic.
Working together, CI and CD mean that each phase in development does not operate in silos but can be adapted as they go along. This in turns helps adopt a closer understanding of customers and how to do business with them.
Test (and test again) for a streamlined outcome.
Without continual and rapid testing of code, developing quality software that's actually useful from start to finish is significantly more difficult. Having these processes ongoing and automated will not only reduce time and costs but help to optimize software as it’s being developed. The ability to deliver software frequently is key to using software to improve your business.
So, if you're not doing CI/CD already, making the time and getting the resources it takes to implement CI/CD sooner rather than later will pay huge dividends in the long term when it comes to spotting and fixing problems.
- Michael Coté, Staff Technologist , VMware Tanzu.