Friday, May 22, 2015

The Agile Testing Mindset in the DevOps World. Part 1 : Why culture is part of DevOps?

About me: I am an Agile and Lean coach with background in software testing and a strong interest in the human aspects of processes and organizational change. Currently I also hold the position of Director of Operations at a leading software startup, where my responsibilities include building the right processes with the right mindset, along with direct management of DevOps. Connect with me on LinkedIn:

What does DevOps have to do with the software testing mindset?
If you ask people from the industry what DevOps is, you get many different and interesting answers. And no wonder this is the case, since DevOps is still a relatively young approach (2009), born out of the painful need to  deliver fast, high-quality product in a complex and rapidly changing environment. Personally, I have adopted the standpoint that sees DevOps as an integrated approach, combining culture and tools aimed to get things done, within complex fast moving environments, with an emphasis on culture and mindset.

The software testing practices and mindset have radically changed since the early days of Agile and Lean. Today there is no doubt that the software testing practices and mindset are an inseparable part of DevOps culture. There are people who will argue that there is no difference between the Agile software testing mindset and the DevOps culture mindset, and to an extent I can agree; nevertheless, in this post I have decided to put a special spotlight on the software testing mindset within the DevOps world, to try and understand this mindset, see where these practices came from, how they have developed and how it is all connected to a single culture.
So I will divide my thoughts into 3 parts

Part 1 : Why culture is part of DevOps

So let’s get started.  

Part 1 : Why culture is part of DevOps

'Dev ops', 'Mindset', 'Software Testing' - each of these three terms has an entire world of practice and culture relating to it. Before taking them all three together as one topic ('DevOps in the software testing mindset"), I would like to explain each one separately, giving each its respective place.
Let’s start with the mindset.

What is a mindset?

Please take few minutes to watch this brilliant video, "Always #LikeAGirl". 

"In my work as a documentarian, I have witnessed the confidence crisis among girls and the negative impact of stereotypes first-hand," said Lauren Greenfield, filmmaker and director of the #LikeAGirl video. "When the words 'like a girl' are used to mean something bad, it is profoundly disempowering. I am proud to partner with Always to shed light on how this simple phrase can have a significant and long-lasting impact on girls and women. I am excited to be a part of the movement to redefine 'like a girl' into a positive affirmation."

This video illustrates how one’s mindset and preexisting set of assumptions can change behavior, self-esteem, the way we act and what we do.

From Wikipedia : Mindset is defined in professional literature as

a set of assumptions, methods, or notations held by one or more people or groups of people that is so established that it creates a powerful incentive within these people or groups to continue to adopt or accept prior behaviors, choices, or tools . (
Another extreme and terrifying example can be seen in the following article, wherein an Indian minister argues that sometimes rape is justified (

This is a mindset. A mindset that will allow certain behaviors to perpetuate, a mindset that will lead to certain types of legislation, maybe even to violence or death, it will determine the way in which this society treats woman and human rights. It determines the way people explain behavior or treat rape. Just by reading the comments attached to this article one can witness this mindset and realize just how far-fetched it seems when examined from another culture’s mindset.

The preexisting assumptions and beliefs that are held by developers, testers, analysts, product managers or anyone else involved in producing working software will dictate the way they believe they should or should not work together. It will ”dictate" the tools they will choose to use as well as their team members, methods and procedures.

In a world of rapidly changing environments, where DevOps is a necessity, we will need to create the right mindset to enable DevOps to answer these new environments’ needs: producing high-quality product fast.

But what is DevOps?

States that If you ask 20 people the definition of DevOps you will get 12 definitions and 10 people that don’t know the term DevOps. 

He then quotes: "David Herron, provided a simple definition,  “(DevOps is)…an integrated approach to software delivery that include process, tools, technology, resources.”"
Why is that?

In a fast moving environment, where the customer has very little patience to wait but quality is not negotiable, organizations needs to find the way to move from A (the point of the idea) to B (the point of delivery) as fast as they can with the highest quality. Satisfying customers and at the same time reacting to rapid new demands at the right speed, quality and with grace. It's no simple feat to accomplish. 

Can we do it? Can we release changes to customers every month? Week? Maybe every day? How can we make sure that quality will not be compromised and that the changes are well integrated?

First we need to remove some barriers. The barriers between Dev (that wants to change the code, add to it) and Ops (that wants to keep everything stable). We need to break and adjust the boundaries between the developers and the operations people, we want them to work together. We want to deliver something with good quality, fast time to production and at the same time create trust between those groups.

So we can add tools. We can add them everywhere, making sure things are not breaking down on the way to production. Tools will surely do a great deal of work in building awareness to quality. We can create continuous integration for every line of code, continuous delivery for any functionality added and tested, health monitoring, better logs and more. 

But I’m afraid tools are not enough. They are great but they are not enough. Why?
Because we need to know where to employ these tools. What will be a valuable application of these tools? How do we determine this? We need to know our production line. We need to identify production line bottlenecks, to understand the process and set the right process.  Imagine we are a chocolate factory, we can add cocoa but still not deliver chocolate because the mixing machine is not working properly.

And tools, processes and barriers are only a small part of it, why? Because we need the people to be part of it. And they need to have the right mindset to be able to deliver the right feedback.

Why? Because in a rapidly changing environment we need the people to give us feedback from every part of the production line at any time needed. In this complex environment, things may come up, change and develop differently all throughout the production line. Therefore we need the people to be aware, to raise flags. We need the problems to be identified fast, as well as the solutions. We can only do so when we have the right mindset. Only when they are on board, know what they need to do and why. In this complex environment we need all the different professional perspectives to be available to us for fast decision making. We need to know where to use our tools according to accurate feedback and recognized bottlenecks, what to change and why. Without the right people and mindset we will be limited in our ability to do so. In order to reach this state all these people need to work together to create this culture of collaboration for delivering high value fast. Without the right mindset we may still succeed, but we still be generating much waste in the process and reach our goals slower then we could have.

In some extreme cases (and I have seen such) the entire organization will be stuck due to lack of collaboration, to the point of not being able to deliver.

So what is DevOps?

"DevOps means that there are no walls, no gates, no transitions, and no ceremony between Development and Operations. They are seamlessly integrated (when viewed from ’above‘) into a single, value delivering, IT entity." 
“(DevOps is)…an integrated approach to software delivery that include process, tools, technology, resources.”

DevOps includes rapid collaborative development without hassles, continuous testing, continuous deployment and continuous monitoring and it can't work without a proper mindset in place, one that aims to allow everyone to collaborate to deliver value faster.

1 comment:

  1. Thanks for sharing this informative content , Great work
    Leanpitch provides online training in Advanced Scrum Master during this lockdown period everyone can use it wisely.
    Advanced Scrum Master Training