DevOps

Towards Better DevOps KPIs: A Codeless Change Maturity Model

15 Oct 2018 2:53pm, by

Liran Haimovitch
Liran Haimovitch is the co-founder and CTO of Rookout, the rapid debugging company. He’s a low-level technology expert and an advocate of modern software methodologies. Liran holds a bachelor degree in Computer Science and an MBA.

In their excellent book “Accelerate,” Nicole Forsgren, Jez Humble and Gene Kim discuss four core DevOps key performance indicators (KPIs) for measuring change. For most of us in software engineering, especially in the era of “configuration as code,” change means “code change” and is about commits to some source control repository.

And yet, value can be delivered and systems changed without a single line of code being written, through the concept of codeless changes, which include any changes to a software product that don’t require a developer to write code. Generally, these changes are requested to enable a particular stakeholder to get more value out of a software product. When broadened to the general case, these changes may even result in an entirely new business model.

However, with the current code change-based KPIs, moving from code changes to codeless changes can depress KPI measures of performance by decreasing the measured rate of code change. Additionally, moving the easiest and most familiar code changes to codeless processes means that changes accomplished by altering code are trickier and more substantial, which could increase defects per change — and also depress KPIs.

Codeless Change Maturity Model

Non-code changes are less discrete and harder to measure than changes to code, especially since some codeless changes are fully automated. Therefore, instead of a KPI-based metric, I am proposing a codeless change maturity model. This model looks at business processes and evaluates whether software development or other processes are making changes that deliver value.

We’ll follow a particular business process, business intelligence (BI) metrics monitoring, to see how it takes shape through the maturity model.

Hands-On Change

This is the most basic maturity level, where business processes start. At this level, R&D knows little to nothing about the business process and the changes it requires. Every change is a new user requirement delivered by the business owner and must be evaluated and implemented using the “generic” software development life cycle (SDLC). In our example, this would be represented by the engineering team building the first BI dashboard for a stakeholder.

Hand-Crafting a Process

At this level, R&D has had multiple change requests from users to implement similar business processes. The requirement will still be delivered to the business owner, who has some experience in estimating and defining it. The change will be implemented by the R&D team, perhaps using tools and techniques they have adopted to make these specific sorts of changes without having to write lots of new code. When the engineering team builds the tenth BI dashboard, they may already have informal processes for building it.

To mature to this level, a company should be asking:

  • Is this user request similar to one we’ve had before?
  • Can we create any processes or tools to make this change faster?

R&D Hand-Off

At this level, the organization has defined a class of codeless changes as a routine part of doing business. There’s a defined use case to which this process should be applied, and a specific way to request the change. This change will often be supported using a formal set of tools and techniques, usually enabling changes to be performed outside of the SDLC. Having a formal process means that these changes can be carried out by technical personnel who are not part of the R&D team, such as a professional services team or integration partners. For our example, this could be BI dashboards that are built by an analyst rather than a developer, and relying on raw information exported to a data warehouse.

To mature to this level, a company should be asking:

  • Should we create a formal process for customers to request the change?
  • Are we prepared to spend the money and time to create tools and methods so that non-developers can make the change?
  • Given that more users will request the change once they know it’s possible, do we have the necessary staff time?

‘All Hands’ (DIY)

At this level of maturity, the organization has not only defined a class of changes but has implemented a process allowing end users to make the changes by themselves. The change needs to be very rigidly defined so it can be easily distributed to a large number of people. The UX is central to this level of maturity.  It must not only it be possible to make the change, but also easy for the end user to do so.

A self-service BI tool that allows all stakeholders to create and share their own dashboards would be a good example of this type of end-user change. It’s also a good, real-world example of the importance of the UX; there are a lot of confusing and badly-designed dashboard tools out there, and they make it hard for end users to make the changes they need, on their own!

Not every change should be handed to end users in this way. To mature to this level, a company should be asking:

  • Is the change defined narrowly and simply enough to allow the end user to make it?
  • Can the end user possibly break anything by making the change?
  • Is the change requested often enough to justify the time and expense of developing user-facing software to handle it?
  • Will giving users control of the change limit future development possibilities?

Hands-Free (automation)

At this level, the organization has built a system that’s capable of modifying its behavior to meet individual users’ needs. Machine learning is often used to provide this level of flexibility but it can also be achieved using simple rulesets

To mature to this level, a company should be asking:

  • Is the change something that users would want to be automated?
  • Will automation feel ‘creepy’ or intrusive?
  • Are we prepared to provide ongoing product support for an automated feature?
  • Do we want to provide users with the ability to manually override the automation?

Bottom Line

Measuring code change for code change’s own sake can sometimes incentivize developers to take on the ‘easy’ tasks that really should be taken out of code altogether. Businesses need to move beyond the standard DevOps KPIs and properly assess and value codeless changes, too. This means measuring how development teams are advancing along this maturity model alongside the classic KPIs.

Modern software engineering focuses on delivering value to the parent organization, so it’s important for software companies to understand the business needs that require changes to be made. If we can pinpoint where change is most required and ask ourselves the questions above, we can advance more quickly through the change maturity model, with less coding and faster, easier and safer delivery of value.

Illustrations by Ortal Avraham.


A digest of the week’s most important stories & analyses.

View / Add Comments

Please stay on topic and be respectful of others. Review our Terms of Use.