Contributed by Nick Penston, Fidelity Investments | originally posted on medium.com
Continually transforming the way you deliver value to your customers is paramount in a world where change is constant. A key tenet to ensuring success on this journey is enabling a successful DevOps culture. This culture transforms how you work and deliver software, and it can have a monumental impact on the velocity of value.
Recently as part of our presentation at cdCon, I spoke about three key areas of focus to lay the foundations of success when enabling and embarking on cultivating a DevOps culture. Over the next three posts I’ll expand on the introductions I gave in the presentation — deep diving into the key focus areas that I see as critical to enabling a successful culture.
Let’s dive in.
When building a highly scalable and resilient cloud application, you need to consider a wide range of engineering and operational best practices to ensure exceptional quality, stability and agility of your software. In a digital transformation as teams embark on their transformational journey, it’s common to have different levels of engineering and agility maturity. It can be a challenge to align teams on the practices which help shift the excellence needle in a consistent way. Let’s take a look at three key focus areas which can help address this challenge.
Outcomes & capabilities
One approach is to focus on defining and implementing capabilities that are proven to accelerate the performance of your delivery teams, and in turn have a direct impact on value which lands with your customers.
Depending on your context and your overall goals, the capabilities you focus on can vary, but I have found that three capability sets are fundamental to a successful enablement of any DevOps culture.
These capabilities are
Being prescriptive about the capabilities you prioritize provides clarity and a guiding light for your teams, empowering them to pursue excellence in these areas while clearly understanding what to focus on, and their impact to the value you deliver for your customers.
Let’s take a look at each one and why they are important.
The goal is to build and leverage capabilities that accelerate the delivery of your applications by removing friction in the path to the cloud. The slide below highlights some critical capabilities to consider. There may not be too many surprises here with familiar capabilities like Continuous integration / Deployment (CI/CD) falling under this pillar. After all, they are foundational to a high velocity of value and paramount to enabling the remaining capabilities.
But it’s not all about CI/CD — Your business needs to be able to pivot quickly to changing needs of our customers, and enabling agility at all levels of the organisations is paramount to ensure continual success. Let’s take a quick look at two capabilities often overlooked in this set which contribute heavily to your feature agility.
Code maintainability & Technical debt management
Why are these important? Both ensure you have agility in the software and the platforms which run your business. Without a strong maturity across these areas, the lead time to pivoting quickly and getting fast feedback can be considerably elongated. Foster excellence in engineering practices like clean code, refactoring, dependency management , and continually focus on understanding the friction introduced by your technical debt.
- Lay the foundation with core capabilities like CI/CD and well-defined security practices.
- Agility of your code and platforms is as important as agility of processes in your organization.
- Reduce cogitative load by applying reuse strategies to increase adoption, engineering and operational excellence.
Now let’s switch gears back to our capability sets, and look at one which is paramount to enabling continuous improvement, ensuring stability and reliability: measurement. The capabilities cut across two general areas,
- Your ability to observe everything you and your systems do.
- Embracing data to drive continual improvement.
A strong observability capability is paramount to build and operate at scale — building highly resilient applications requires a strong maturity across the trio of logging, metrics and tracing as well as making the enablement and understandability of this data easy for your developers. In addition, capabilities like monitoring, alerting and self-healing rely on a robust implementation and are foundational when adopting to the changes in your operating market. Don’t skip this one.
As you embark on your DevOps enablement journey, your teams will be faced with many challenges including making choices on what practices and standards they should learn and implement. It can be difficult to pinpoint the right focus areas at the right time and to identify your largest constraints to remove. This is where data comes in.
What is considered best practice can be an opinionated space — what is good for one team may not be the right focus area for another. Using data to enable your teams to make these decisions is paramount — not only to drive a data-driven culture but to empower your teams to use data to detect their biggest constraints while removing opinions from the mix. This helps reduce conflict and focuses your team on an outcome of an improvement. Enabling this data transparency not only enables empowerment but enables your team to have evidence-based discussions on improvements — always focusing on the outcome.
- Simplify the adoption of logging, metrics and tracing strategies make them part of everything you build.
- Use data to determine what practices and improvements to focus on — remove your largest constraints based on evidence, not opinions.
On to the final set of capabilities, one that underpins the previous two, and drives the key behaviours needed to build an exceptional culture.
Let’s look at two.
- Open and transparent culture
- Learning culture
High-performance teams are known for their safe environments, where discussions are open and are void of any judgment. An open and transparent environment is the foundation to this. Creating this type of environment requires continual focus and embracing concepts like working out loud with everything you are doing and how it is being done, with information communicated openly — and not just the good stuff. Being comfortable with this openness creates the cornerstone of the open culture built on trust — critical when creating safe environments.
Technology moves fast and the skills and knowledge needed to be successful today are changing faster than ever. Establishing a learning-based culture to ensure your organization is always ready to leverage the next generation services is a must. Supporting the pursuit of excellence in the craft of cloud/software engineering while fostering a culture driven by curiosity and experimentation is a key enabler to continually adopting to change. Ensuring your engineers have time to share knowledge, learn outside the context of their work and are free to experiment are key to building a successful learning culture.
- Foster an open and transparent culture across all levels of your business, communicate these values frequently and reward advocates for their contribution.
- Enable forums for sharing tacit and explicit knowledge.
- Allow engineers time to freely experiment and learn outside their day to day.
Building a DevOps culture is a journey, one which has many twists and turns and one that should always start with the why. Framing where you focus as a set of capabilities complements the why, defining clearly what is needed to be done and how you can achieve it. The capability sets provide important clarity where teams should be spending their time, and data helps them to track their progress as they move along the path — all essential to cultivating an empowering culture focused on outcomes.
This article is part one of a series. (Part 2 coming soon).