DevOps Anti-patterns and How to Correct Them
DevOps is one of the most interesting concepts that I have encountered in my professional career for several reasons, the biggest one being that there is no single definition of what “DevOps” actually is. There are several organizations such as the DevOps Institute which offers one perspective on this, while other organizations such as Scaled Agile Inc. and PMI/Disciplined Agile have their own definition.
In order to explore DevOps anti-patterns, we must first establish a known baseline, a foundation with which to measure current practices and mindsets. Hence, for the purposes of this article, looking at this from the viewpoint of the DevOps Institute, we will consider DevOps to be based on the following core principles:
- Systems thinking
- Amplify feedback loops
- Culture of continual experimentation and learning
Using these foundational concepts as the basis of comparison, we can argue that if you are not applying these principles in some shape or form, you are not aligned with DevOps as a whole. If you agree with this assumption, then we may also infer that the following practices may be considered “anti-patterns” because they do not embody “The 3 Ways” described above.
DevOps Anti-pattern #1 — Treating DevOps as a set of tools
Most technology and knowledge workers would likely agree with the claim that tools make things better, more efficient or easier in some shape or form, when applied appropriately. In the DevOps world, many teams that I have worked with treat “DevOps” and tools are one in the same, which is a tremendous mistake that undervalues the power of DevOps and the core outcomes it aspires to achieve.
DevOps Anti-pattern #2 — Treating DevOps as a team
Many organizations establish a “DevOps team” which is typically a team of software engineers that have expertise in specific tools that enable various processes and practices including (but not limited to) Continuous Integration, Continuous Testing and/or Continuous Deployment, just to name a few examples. This team specializes in automation of processes using a set of tools, which is important, but should not be considered to be the desired end-state in a DevOps transformation.
DevOps Anti-pattern #3 — If you automate, then you are doing DevOps
As mentioned previously, automation is a significant piece of the overall DevOps puzzle. However, if implemented in isolation without considering the overall workflow and organizational value stream, the value that automation delivers will likely not fulfill its full potential.
DevOps is one of those domains that appear to be evolving which is not necessarily a bad thing. The key to taking advantage of these principles and practices is to keep an open mind, step out of popular opinions that are described above in the DevOps anti-patterns; this may help you consider a broader view that will lead to a more practical and applicable DevOps strategy.
For information on DevOps training options, see below for course offerings provided by Cprime.