Continuous integration/continuous delivery (CI/CD), which automates code changes, testing and deployment, can benefit software development processes in a variety of ways. It enables smaller code changes, which typically have less of an impact if unanticipated issues arise. CI/CD also allows developers to expand and enhance features more efficiently, increase the frequency of releases, and create happier users whose feedback can help guide improvements.
Buildkite founder and CTO Keith Pitt explains, however, that not all developers optimize their CI/CD processes so they result in the greatest benefits.
What are some of the shortcomings you see in how developers traditionally handle CI/CD?
Pitt: A shortcoming that I’ve noticed is that developers often treat automated test code as a second-class citizen — something you just need to write to get a pull request approved. Since test code is rarely changed, it starts to rot. After a while, no one on the team can tell if the test is providing any value, or in some cases, if it’s still even being run as part of the continuous integration suite. It’s important to treat test code with the same respect and attention as production code.
How can software developers improve the development process?
Pitt: One thing I always recommend as a best practice is to keep your automated test suites under 5 minutes. This can be achieved by running the tests in parallel across multiple machines. This is much easier to achieve today with cloud computing than it was 10 years ago. The faster you can get your test suite, the less time engineers will be blocked waiting for them to finish.
How important is the choice of a CI/CD tool?
Pitt: It’s important to choose a CI/CD tool that goes beyond a pass/fail. Most CI/CD tools give you a green tick if your tests pass, or a red cross if they fail. It’s important to find a tool that tells you “what” and “why” something failed — and even better — how often it fails. The sooner you can find failures, the sooner you’ll be able to fix them, and ship code to customers.
What do software companies need to keep in mind about scaling their operations?
Pitt: As a company scales, you’re going to hire more engineers, who all have their own way of writing tests. It’s important to set standards and practices so tests can be consistent across the board. That way, it’s easier to onboard new engineers and have them write tests faster. Ultimately, as you grow as a company, the more well documented your processes are the better you’ll be in the long run. Startups don’t always want to spend the time to do this when they can be building products, but it pays off in dividends once you start growing.
What’s the most important advice you can offer a software developer startup that wants to operate most efficiently and effectively?
Pitt: There’s a lot of things you can do to operate more efficiently/effectively. But what I recommend is to remember that test suites are the gateway to production. The faster and higher quality the test suite, the faster you’ll be able to deliver high-quality products to your customers. And to operate an effective company, the most important thing is maintaining high-quality products to ensure happy customers.