In today’s world, every business is driven by software. We are living in an era where technology drives behaviors, decisions, and business outcomes. Anytime you have an app, website, or software element, software development becomes a critical part of day-to-day business strategy — even for non-traditional software companies. Because of the mandatory role software development has taken on in everyday business, C-level executives are taking a deeper interest in how software can be delivered in an effective way.
Before we begin dwelling on the specifics of DevOps, I would like to sincerely empathize with all these executives for their patience – they are the most bombarded targets with buzzwords by all consulting powerhouses, vendors, and advisors. I truly appreciate their spirit to keep up with such adversities.
Let’s get started!
Regardless of how you approach it, as a trusted advisor, it is an uphill task to get your message across in crowd of "buzzwords," especially because the human attention span is shortening rapidly. DevOps being one the most talked about topics these days, my aim with this article is to provide a tried and tested approach that can help you establish a common understanding with leaders on what DevOps means in general and why they should care.
To explain DevOps in simpler and more business-friendly terms, I usually start with a story that explains how enterprises are getting impacted due to software failure.
One of the infamous stories is of Knight Capital Group’s Deployment fiasco and continued lack of action.
“Financial services firm Knight Capital lost more than $460 million last summer when an error in its automated trading software unleashed a series of unwanted orders, but the company is still on the hook for more. On Oct. 16, the Securities and Exchange Commission announced that Knight Capital had agreed to pay $12 million to settle charges related to the incident. The SEC noted that the company did not have adequate safeguards in place, nor had it properly reviewed the tools involved in the fiasco.” -Source.
Another story is about the cost of a defect at Citigroup:
“A programming blunder in its reporting software has led to Citigroup being fined $7m (£5m). failure to discover the coding error and to produce the missing data for many years potentially impacted numerous Commission investigations." -Source.
These stories are evidence that business impact due to software failures have never been greater. Leaders are required to take appropriate measures to reduce risk while focusing on increasing quality, innovation, and business value.
One of the typical steps that business leaders take to de-risk is they slow down release frequency by adding more checks/reviews etc. This way they assume they can control failures in production environment. Such short-term measures not only limit their ability to push changes quickly but also become a limiting factor to innovation.
With so many moving parts, it is becoming increasingly difficult to maintain a balance between innovation (speed of delivery) and sustained growth (quality of delivery). In most enterprises, the battle of quality and speed, looks something like this.
With traditional processes and manual checks & balances, if you focus on quality, you lose on speed and if you focus on speed, you lose on quality. You may have few exceptions to this, but those outcomes may not be repeatable. That’s where DevOps practices and tools can help you balance the trade-offs to achieve the optimal business value.
DevOps for Business
At the onset, DevOps refers to a set of modern software processes and tools that can help you deploy software in a frequent and fully automated way. There is a more deeper meaning to it when you add People (culture) to the mix which we shall discuss shortly. DevOps dramatically reduces risk and eliminates last-minute surprises by enabling faster release cycles through automation.
Two fundamental goals of DevOps that every business should aim for:
Releasing software should be a repeatable, reliable process.
Automate software lifecycle as much as is reasonable.
By releasing software repeatedly, you can take out a variable from the deployment equation. If you establish a frequent deployment schedule, even if only into a "model" staged or beta environment, your organization will start to get good at the mechanics of shipping, making decisions based on code readiness and proven deployment procedures. You reduce the risk by releasing more often and getting better at it.
It is easier to complicate than to simply. With an intent to simplify, below is a typical software application lifecycle. The circular flow it represents doesn’t do a good job at depicting the parallel nature of many activities that happen in each of the stages. Business planning (Define stage), for example, is a set of parallel activities that results in a product backlog to the definition of MVP to a release planning. Similarly, construction (Develop stage) is a set of parallel activities that results in source code, compiled assemblies, build artefacts, and so on. Without going into the details of each stage, the idea of this picture is to demonstrate how one stage leads to another and how they connect back in a loop.
When you inject DevOps practices and tools into the software application lifecycle, you are essentially adding three ingredients: automation, collaboration, and innovation. Automation is more related to process and tools, whereas collaboration and innovation have an affinity to process and people.
It is imperative to take a holistic view when you start with your DevOps journey. It is more than automation, it is more than tools and it is more than processes. You can see it has a multi-dimensional aspect that drives the overall theme. You can start with one dimension but to realize the full benefits of DevOps, you would need to cater for all dimensions.
In terms of people, the journey is to combine skillsets of Developers and Operations together. It is not as easy as putting them together and expecting them to know how to work as a multi-disciplinary team – it calls for a mind shift. A shift in thinking where everyone on the team needs to own the outcome end to end. You are not off the hook by releasing the code to production – you are hooked to the code for wherever it is used. It's about owning your creation.
Questions to Get Business People Interested in DevOps
How long it takes to release a new feature into production?
How frequently you test your software in a Test Environment? Do you get a daily release or weekly or end of the Sprint only?
What percentage of the changes your team deploys result in degraded service or require later remediation? (e.g., lead to service impairment, service outage, require a hotfix, rollback, fix forward, patch, etc.)
How long does it generally take to restore service when a major incident (e.g. unplanned outage, service impairment, etc.) occurs?
How often are manual changes made directly on servers in production?
Do you incorporate operations into the entire software delivery lifecycle? (e.g. getting operations input during design and testing operational requirements as a part of the automated testing process.)
Do you incorporate security into the entire software delivery lifecycle? (Examples: Getting security input during design and including security requirements in the automated testing process.)
Is DevOps for Everyone?
Yes. A lot of people confuse DevOps to be best suited for agile environments. However, I recommend DevOps for all environment as an “Enabler” or “Catalyst” which triggers faster delivery. Irrespective of whether you are agile or not, the practices and tools can help you fast track your delivery cycles.
In my view, if you are working with one of the agile methodologies, DevOps becomes mandatory to realize agile values and benefits. I saw teams struggle to deliver working software in a sprint due to lack of DevOps tools and practices. Overall agile and DevOps together increase predictability and reduce time-to-market for your software while increasing quality.
Where Does DevOps Fit in Organization Strategy?
Strategically, most of the enterprises are either starting or mid-way through their Digital Transformation journey. DevOps (when adopted right), can help the realization of the overall organizational strategy by contributing to:
Time to Market - faster delivery.
Customer Experience - Faster response time, better service levels.
Eliminate Waste - Lower failure rate, better quality delivery.
High Employee Engagement - Collaborative Culture, improved handshake.
I recommend DevOps to be considered as one of the levers for the organizational strategy that can help gain a competitive advantage and greater innovation.
Feel free to reach out to me to tell your DevOps conversation story. I am keen to learn how you approached it and what other ways are there to approach it.
Disclaimer: All views expressed here are my own and do not represent opinions of any entity whatsoever with which I have been, am now, or will be affiliated.