Today experience is the new business imperative. Whatever business you’re in, the customer experience is the brand and the product is the website.
These experiences are dynamic, personalised and always-on, across multiple channels and devices. So how can businesses adapt to feed the experience machine?
Traditional businesses are learning quickly from today’s disruptors that if you can’t go to market fast enough, you very quickly start to fall behind your competition. Companies such as Spotify, Netflix and Uber are deploying new features at a pace that is becoming the expectation and the norm.
This has given rise to new practices and, inevitably new buzzwords, that are changing the software development landscape. Disruptive businesses were built around these practices which are often bunched together under the term DevOps. This blog aims to demystify the terms continuous integration, continuous delivery and continuous deployment, and explore why these iterative development practices are good for business.
Why change?Software development cycles were initially created around more traditional product launch cycles. Months of complex development were vested in one moment of truth, the Go Live. This was hugely stressful for everybody working on a project, large chunks of new code would be merged and tested, producing numerous conflicts to resolve. Within large development teams it would be hard to define what caused bugs and errors and who should be responsible for changing them.
Programmers would be anxious because of the growing amount of work due to unexpected bugs. Business teams would be worried about potential project failure and the impact on customers and the bottom line.
Continuous development cycles remove the risk associated with these huge code integrations and deployments by… doing it more often. With continuous integration and continuous delivery, the huge and long-awaited launch becomes a thing of the past. Instead, developers push new code to a central depository as frequently as possible, where automated testing produces ready-to-release functionalities on a regular basis. Let’s apply an exercise analogy to this. Little and often hurts far less than the occasional marathon.
So what do all these buzzwords mean?
Continuous integration is all about code development. In a project where multiple developers are individually writing new code on a daily basis, continuous integration merges that code to a central repository several times a day. The merged code is then subjected to an automated build and testing process. If something is wrong, the team receives instant feedback and the developer responsible for it can fix the issues before starting on another task.
The implementation of continuous integration takes the new code one stage further, towards continuous delivery. Continuous delivery automates the cycle up to the moment when the new functionality is fully tested and ready for release. The aim is to keep the code in a deployable state so that a new feature can be turned on instantly, when the need arises, at any time. This is of huge value to business users who can test new features more often and feedback to developers on a regular basis.
Continuous deployment automates the final stage of the cycle which pushes code into the production environment, where it’s quickly available for consumers in the form of a new feature or application.
So why are they good for business?
Cost control is probably the biggest benefit of adopting DevOps practices. It’s far easier to guarantee constant costs when making small, frequent changes. Whereas big, long-awaited releases carry bigger cost implications and bigger consequences when things go wrong.
Testing and experimentation
Iterative processes mean that you can adjust your product according to the market, changing existing features or developing new ones based on data and demand. Each iteration brings you the opportunity to check if the recently released functionality is exactly what you expected and your customer wants. If not, no big deal, you can reverse the changes and steer further development in the right direction.
Merging months of code development right before a big release is risky. There’s a far bigger chance of deeply hidden errors, which might be found at some unexpected point in the future. By dividing the time spent on developing a single feature into smaller, atomic parts, it’s much easier to detect and fix bugs. And more frequent check-ins force developers to stick to the rules, resulting in a higher quality product.
Frequent releases mean frequent feedback from users. And when developers are more in touch with users (both business users and consumers) there is less time wasted developing functionalities that ultimately may not be used. Time saved can be devoted to experimentation, which under waterfall practices might have been cost prohibitive, with fast turnaround results and massively reduced risk.
Gone are the days of waiting several weeks or months to introduce a new feature in the next release. When work is finished it can be released without delay. It drastically reduces the time from ideation to value in a properly working functionality. The release process itself also takes much less time. It can literally be done in a few seconds, avoiding downtime in your system.
The continuous delivery workflow reduces stress, improves wellbeing and provides a sense of stability to your team. They no longer have to worry about the stressful period at the end of a long development process.
Given the benefits listed above, switching to a DevOps practice probably feels like a no brainer. However, to take advantage of all these benefits, there is inevitably a transition process (previously discussed in this blog). Most people don’t like change. It will always cost time and effort to change mindsets, establish new habits and get used to a different workflow. The bigger your company, the harder it will be. However, once software releases in your business become part of the daily routine, we’re pretty sure you won’t look back.
For advice on moving towards continuous development practices in your business, get in touch!
We're always looking for new faces to join the Cognifide family. Take a look at our available jobs.