People who succeed with DevOps do three things very well:

First, they know what infrastructure automation is and how to harness its power to deliver value faster and more efficiently.

Second, they are good at assisting organizations to deliver software in a continuous manner and know how to respond rapidly to technology-driven changes that organizations may face.

Third, they collect and analyze feedback throughout the software life cycle to make proper changes and enhancements to address business challenges in a cost-efficient manner.

But you are probably wondering:

How do they nail these three? What rules do they follow? Is there a way, or rather a set of DevOps principles and practices they rely on to help businesses create innovative, user-friendly applications in a quick and agile manner?

Well, it turns out, there is no universal set of core principles of DevOps. Organizations stick to different principles behind their DevOps approach and often interpret what DevOps is in that context. On top of that, the principles (or, at least, their vernacular) may vary not only across enterprises, but also across teams within the IT organization.

In today’s post, I am going to take a peek behind the curtain of DevOps complexities and share my perspective on the underlying principles of the DevOps movement.

1. Adopt the Shift Left Approach

The first thing that comes to mind when we talk about DevOps principles is the concept of Shift Left.

According to IDC research, Fortune 1000 companies lose from $1.25 to $2.5bn USD per year due to downtime and infrastructure failures. On average, one hour of an essential to business application downtime can cost from $500,000 to $1m USD.

So, what does Shift Left have to do with that?

Shift Left is all about adding more Ops and QA to the early stages of the software development lifecycle. By mixing your QA and Ops teams into the Dev stage of the software delivery process, you adopt a business-driven software delivery approach and, basically, allow Operations and QA engineers to learn how the application behaves and operates in virtually real-world scenarios before it gets deployed.

As a result, IT organizations drastically improve cost-efficiency by reducing the amount of failures and downtime. Additionally, they get empowered to:

Note: The earlier the application is run through QA and Ops, the better.

While the first can test the application beforehand and check if all application delivery processes run smoothly, the latter get their hands on valuable environment performance insights and can make the required adjustments to ensure the app’s high-level performance in the production environment.

For the record, Shift Left allows all team members to see the bigger picture and assume their personal responsibility for the product. This enables organizations to create with a clear goal in mind and fully realize their employee’s potential.

2. Harness the Power of Automation

Automation is the holy grail of DevOps.

It allows an IT organization and the entire business to:

  • Cut waste and reduce overwork
  • Deliver innovation in a fast and cost-efficient manner
  • Learn from failures to continuously improve operations
  • Act on feedback rapidly to improve end-user experience

The power of automation lies in its ability to improve processes throughout the software release life cycle. By automating the development and delivery pipelines, you make your entire organization more lean and agile, and ensure that all processes are repeatable and reliable, which reduces human error and enhances operations efficiency.

Note: Automation is not only about the software development process, though. DevOps allows migrating seamlessly the entire infrastructure to the cloud where it is versioned and treated as code. Automation has the potential to fundamentally change the way of how applications and software are delivered.

3. Monitor Quality Metrics Frequently

Businesses can monitor applications performance in production, since they generally have all required analytics tools at their fingertips. The tools collect and analyze real-world data in real time, which provides IT organizations and companies with valuable insights.

But here is the deal:

It is too expensive to capture insights in production to create quality metrics after the application is deployed. Quality metrics need to be monitored and validated frequently earlier in the life cycle.

Developers, QA engineers, and Operations should be aware of what quality metrics to use in advance to properly monitor the application’s characteristics. Its features and functionality have to be analyzed against quality metrics every time the app gets tested and deployed.

This DevOps principle underpins what DevOps is since frequent monitoring of quality metrics allows to pinpoint existing and potential quality issues. Knowing where they may occur in production, stakeholders can act to resolve the issues in advance, which ensures faster, smoother releases.

Note: Data analysis requires expertise and, since tools collect data in a disconnected manner, often businesses get misinformed about how their apps operate in production. Thus, quality metrics should be provided by professionals.

4. Capture and Act on Feedback

Feedback is one of the most important aspects of DevOps. Organizations need to be able to gain feedback quickly and act on it rapidly to deliver higher value to customers.

Should we exclude feedback from the DevOps process, companies will not be able to flexibly build products around users and will eventually fail to satisfy the needs of customers.

It is important to have short, customer-centric feedback loops. Stakeholders should be able to access feedback anytime to act on it.

Provided the organization captures and acts on feedback efficiently, it will:

  • Incentivize and accelerate continuous innovation
  • Make educated decisions about its development strategies
  • Empower development to adjust their plans and priorities
  • Assist production in enhancing their production environments

5. Learn from Failures Continuously

The ability to continuously learn from failure is the key principle behind DevOps.

Why?

If your DevOps team is neglecting to learn from failures, this means several things:

  • They do not take full responsibility for the product (i.e. do what they are supposed to, but do not focus on the product and, most importantly, on the end user)
  • They are not flexible enough to continuously adapt to an ever-evolving environment (e.g. user requirements, legislation, technology, strategies, etc.)
  • They are afraid of experimentation and prefer to stick to the conventional ways, which by default curbs the culture of innovation that is synonymous with DevOps

Simply put, if your team does not analyze and act on their failures, they considerably reduce their ability to cut overwork, simplify and accelerate product delivery, and improve their applications and software.

6. Strive for a T-shaped DevOps Team

In DevOps, teams working on a product need to be autonomous, independent, and self-sufficient. That being said, DevOps works best with T-shaped teams.

A T-shaped team commands a broad set of skills and is able to cover the whole software life cycle. Its members have both deep and broad expertise, which creates synergy and spurs growth.

On the contrary, traditional teams lack the broad expertise component, which isolates every participant in their sphere of responsibility. This results in communication issues, reduced innovation, and slower releases.

In this regard, operating as a T-shaped DevOps team is one of the underlying principles of DevOps today.

Conclusion

DevOps principles and practices are many.

Basically, every now and then DevOps professional come up with their own set of core principles that help both IT organizations and businesses fully harness the power of the DevOps movement.

In this article, I argue that Shift Left, automation, frequent monitoring of quality metrics, feedback analysis, learning from failures, and operating as a T-shaped team are the ultimate principles of DevOps in 2018.

Ideally, these principles and practices should help your IT organization to continuously deliver high-quality software and applications to end users.

What do you think? What DevOps principles do you generally refer to when explaining what DevOps is? Share your thoughts in the comments section.

Yevhen Duma

Senior DevOps Consultant at SQUADEX

Yevhen has more than ten years of professional IT experience, developing and delivering consumer and enterprise applications, infrastructure and process improvement projects for various scale businesses. His experience at all software development stages allows for better understanding of business needs and improved processes by utilizing established DevOps tools backed by the best Agile practices.

His area of expertise includes software development lifecycle, version control, CI/CD, Atlassian JIRA, Service Desk, Confluence, Bitbucket, Slack, Flowdock, as well as virtualization, cloud platforms, and their automation.