Fundamental Factors of DevOps
-
in DevOps
One thing I can say about DevOps as a whole is it's not going anywhere. While the solutions and technologies we develop change, the process of getting that value quickly into customers' hands will always remain relevant.
For the past number of years, I've spent my time helping organizations adopt DevOps practices and principles in their organization. I've learned quite a lot about what works and even more so of what doesn't. On top of this, I love to learn about the opinions and experiences of others in the DevOps space. Learning from others is an imperative life lesson. One such resource is the the DevOps Handbook. If I could only recommend one resource on the internals of DevOps, this is it.
With all the knowledge and experience I've gained over the years, I've identified what I call the fundamental factors of DevOps. The following items are so critical to creating and maintaining a high performing DevOps practice. I will note that this is my opinion based on years of experience and research. There are LOTS of other important elements that go into creating a true DevOps ecosystem (i.e. continuous integration/deployment, shifting security left, fast feedback, etc.) however the following items are ones I've found to be foundational, fundamental to getting you where you need to be.
Transformational Leadership
A quote from the movie Remember the Titans sums this up best, "attitude reflects leadership". It's no mystery that leadership has a huge impact on the performance and attitudes of the individuals they manage. DevOps is not something that gets implemented overnight, nor does it come without its hurdles. When upper-management understands the need for a DevOps culture and makes its implementation a priority, it makes getting to where you need to be so much easier. You will try things along the way that work and some that don't. Having leadership that understands and accepts that is necessary.
Automation
One of the primary metrics of DevOps is throughput. How much value are you creating and how long does it take you before it's in the hands of end-users. One pillar to making this happen is automation. Automating anything and everything speeds up this lifecycle.
Continuous and Automated Testing
While considering the above on automation and throughput, one must maintain stability. It's great if you can deploy on-demand, but if all it does is collapse and fall apart after every deploy, you haven't accomplished much of anything. The key to ensuring your changes are stable, all the while maintaining high throughput, is through continuous, automated testing. Once you lower the risk of your deployments and have confidence that when tests pass the code is ready, you enter a whole new world of "Git er done!".
Team and Architectural Autonomy
Team and architectural autonomy is all about being able to get your work done without relying or being dependent on teams or systems you don't control. Like I tell folks, "If you are waiting on someone else before you can do your job, you'll never get to where you need to be". This can take months or years to accomplish due to organizational or architectural challenges, but it's possible and totally worth it. You want to become a high-performing group or organization? This is fundamental!
What do you feel is fundamental to DevOps? Put your comments below, would love to hear what you think.
Well done!
Christopher