How Design Thinking Can Improve Your DevOps Practice
DevOps is a well-known, modern practice in the software industry. For those who aren’t familiar, DevOps is a set of practices focused on automating and streamlining the processes between software development and IT teams to build, test, and release software faster and more reliably.
Customers and investors demand only the best performance from software products. DevOps provides an approach that can meet these high demands in within the tight time frames provided.
Sound like a dream? Many companies have adopted DevOps to some capacity, recognizing its benefits. But have all companies adopted it successfully?
The short answer is no. While the approach makes intriguing promises of speed and reliability, it’s often mistaken as an overnight solution centered around automation.
DevOps is an equation of people, systems, and tools. Fluctuations between variables affect the outcome. What we tend to see is a heavy reliance on automation and systems but little focus on people, leaving companies disappointed in the outcome.
It’s easier to focus on automation and systems. There are hundreds of vendor solutions for automation and hundreds of processes to follow. Adopting these factors carries a lower burden because you are met with little to no resistance.
People are much more challenging. Your team isn’t a tool that you can simply integrate into your DevOps’ system. Changing human behavior is an involved process that requires purposeful action, time, and patience.
How Do The Experts Explain DevOps?
Today, experts use Systems Thinking to explain the behavioral nature of DevOps. Systems Thinking is a holistic approach to analysis that focuses on the way a system's constituent parts interrelate and how systems work over time and within the context of larger systems.
So what? Your company has systems in place that promote continuous integration and continuous delivery through automation in a centralized pipeline.
Uncheck that box. This is where executives mistake the purpose of Systems Thinking as having physical systems in place again finding disappointment in the end results.
The real key to a successful adopting Systems Thinking isn’t the system. It’s about focusing on who is executing and how they are executing. DevOps was ultimately designed as a way to enhance collaboration between the teams responsible for building, executing, and maintaining a product. Instead of viewing a product as various parts and stages, Systems Thinking encourages teams to see the product as a whole. This is what DevOps truly reflects; working as a whole, rather than the sum of the parts.
If managers dig deeper, they’ll find their automation tools or even their process are not the root cause of their disappoint. It’s their people, who haven’t fully adopted the practice of working as a whole.
Reminder: DevOps is an equation of systems, tools, and people. If we improve the people side of DevOps, we will improve the outcome.
What Can We Do to Improve the People Side of the DevOps Equation?
Enter Design Thinking. Design Thinking is an iterative process in which teams seek to understand the user, challenge assumptions, and redefine problems in an attempt to identify alternative strategies and solutions that might not be instantly apparent with our initial level of understanding.
At the same time, Design Thinking provides a solution-based approach to solving problems. It is a way of thinking and working as well as a collection of hands-on methods.
Most importantly, Design Thinking is human-centric where collaboration, like DevOps, is crucial to producing a great product.
Let’s look at how you can incorporate Design Thinking to improve your DevOps practice.
Focus on Empathy for All Sides
The first stage of Design Thinking focuses on gaining an empathic understanding of the problem you are trying to solve. The goal is to understand the problem from the end user’s perspective.
We can apply this concept to DevOps by encouraging teams to take an empathetic perspective to each other’s roles and challenges.
This is especially important for larger operations because they are more susceptible to silos. It’s easy to stay within your department and point fingers at others when problems arise. This drains energy, wastes time, and causes more avoidable mistakes. Purposefully instilling empathy across all stages and roles helps people spend more time finding feasible solutions and less time pointing fingers.
Experiment. Test. Feedback. Repeat.
Like DevOps, Design Thinking relies on experimenting, testing, and feedback. Post-delivery feedback is just as important as pre-delivery testing, yet often gets bucketed as maintenance or bug fixing. Collecting feedback should used to understand how users view your product, debugging code, and ensuring smooth delivery outside of the testing environment.
Similarly, automation can make testing more efficient but can also turn testing into just another repetitive step in the process. Teams start going through the motion rather than working to draw actionable conclusions.
Design Thinking emphasizes the need for continuous improvement at all stages by focusing on user responses and drawing actionable conclusions that can lead to new features or performance improvements the team hadn’t thought of before.
Managers should emphasize the importance of purposeful testing and use feedback to make adjustments across all stages of DevOps. Automation should be leveraged to speed up testing results, but deriving valuable insights and conclusions to continuously improve the product should be the primary focus of your team.
Adapt Quickly Through A Flexible System
The capability to adapt quickly is a non-negotiable in Design Thinking. It’s costly and time-consuming to make big assumptions, build a full blown product, and hope the product is a hit with the market. Design Thinking values progress over perfection. It’s better to generate real feedback, fail fast, and make improvements quickly rather than bet your entire budget on assumptions.
If your DevOps practice only sells these one-way assumption tickets, then you are hurting your adaptability. The goal of DevOps is to increase speed and reliability. The non-linear, flexible approach of Design Thinking will improve speed and long-term reliability by allowing products and features to get to market faster and continuously improve through real feedback.
Some features will come out of the pipeline ready-to-go, some will require more experimenting internally, and some will require improvements based on consumer feedback. Rigid practices cause bottlenecks and obstacles that slow down progress.
Promoting flexibility in your DevOps system will decrease these roadblocks and allow people to move quickly to meet the demands of users. If people are given freedom to solve problems, they are less likely to resist.
Even your systems need to be human-centric, not tool-centric.
At first glance, Design Thinking and DevOps appear to be from entirely different worlds. At second glance, we find each method stems from the same roots. If your organization isn’t seeing the expected results from your DevOps practice, try taking on a more human-centric perspective. Too often we find comfort in placing blame on processes and tools, because they are easy to change and replace. Design Thinking provides a great framework for enhancing the people side of DevOps. It will help your team move towards Systems Thinking by promoting a holistic approach over a segmented approach.
Keep in mind this is not an overnight solution. Developing a successful DevOps practice requires time and continuous effort from team members, managers, and executives. Just like that shiny new automation tool isn’t your silver bullet, neither is Design Thinking. Rather they are all means to the end goal: a successful software product.
Sign up to receive updates and announcements from DynAgility.