"DevOps Strategy should be a customer-value-driven approach to deliver solutions using agile methods, collaboration, and automation," says Gartner in its 2020 report of DevOps Adoption Frameworks.
What does that mean?
It is probably easy to make the personal evaluation that your business is already providing customer value which are built on collaboration and automation. If that is your stance, then the rest of this article is not for you.
If you are interested in how you can turn that you do today into an overall strategy, then follow along to learn the differences between what you are doing today an a strategic approach to more reliably provide value to the market!
- Transformative Strategies For Peak Development Productivity
- The Importance Of Quality Assurance In DevOps
- How To Avoid Sabotaging Your DevOps Transformation - Part 1
What is DevOps Strategy?
DevOps strategy is the idea of simplifying a delivery workflow down to the baser parts which provide the highest value to customers. When looking across the the delivery landscape, it is easy to lean back on existing processes which have brought you to where you are today. With a perpetual focus on uptime and speed, it is easy to get mired in manual validation processes to certify your next release for production readiness.
With a DevOps strategy in place, the end goal remains the same around providing value to your customers, but the way you deliver changes significantly. Manual processes are replaced with automated processes. Manual validations are replaced with automated validations. In essence, you raise the strategy about HOW you deliver to the same level as WHAT you are deliver.
▶ Key Insight
In my experience, it is easy to identify processes which have been home grown over a long period of time. They are a winding road of internally developed protections to catch issues before they reach production to avoid the reputational damage that comes with those issues.
These home grown processes have significant long term cost to a business in a variety of hidden ways. A single home grown process is not easy for a new employee to get up to speed with. They need training and time to accommodate these new processes into their already developed workflows.
By pivoting into more industry recognized delivery strategies, you are able to more quickly ramp teams up and down because HOW you deliver is much more broadly engrained into the broader talent pool from day 1.
I look at this as a plumber showing up at my house to do some work on my pipes. I expect them to show up with a van full of parts and tools along with the skills to use the parts and tools to perform the work. I don't expect them to come up with a new way to put plumbing into my house using my toolbox and my plumbing parts.
What are Low Value Facets, Factors, and Activities of Software Development?
Software development can be slowed down by various factors and challenges. Here are some common factors that can hinder the progress of software development projects:
- Unclear Requirements: Ambiguous or constantly changing project requirements can slow down development. Developers may spend time reworking code to accommodate new features or modifications.
- Inadequate Planning: Poor project planning, including inadequate resource allocation, can lead to delays. It's essential to create a realistic project plan and allocate the necessary time and resources.
- Technical Debt: Accumulated technical debt, such as poorly written code, outdated libraries, or shortcuts taken to meet deadlines, can slow down development in the long run as maintenance becomes increasingly challenging.
- Scope Creep: Expanding project scope without proper evaluation can lead to delays. Changes should be carefully considered and managed through a formal change control process.
- Communication Issues: Poor communication between team members, stakeholders, and departments can cause misunderstandings, leading to rework and delays.
- Bureaucracy and Red Tape: Excessive bureaucracy or organizational processes can slow down development by adding unnecessary layers of approval or documentation.
- Lack of Testing and Quality Assurance: Neglecting testing and quality assurance can lead to the discovery of critical issues late in the development process, requiring extensive rework.
- Integration Challenges: Integrating new software with existing systems can be complex and time-consuming, especially when dealing with legacy systems.
- Hardware and Infrastructure Constraints: Inadequate hardware or infrastructure can limit development speed. Slow build and deployment times can hinder progress.
- External Dependencies: Reliance on third-party services, libraries, or APIs can lead to delays if those dependencies change or become unavailable.
- Unforeseen Issues: Unexpected problems, such as security breaches, data loss, or hardware failures, can disrupt development timelines.
- Inadequate Documentation: Lack of documentation can make it difficult for developers to understand and work on existing code, leading to delays when making changes or fixing issues.
- Legal and Compliance Issues: Legal and compliance requirements, such as data privacy regulations, can add complexity and time to development efforts.
- Geographical and Time Zone Differences: Distributed teams in different time zones may face challenges in coordinating work and communication.
- Market Competition: Stiff competition within the industry can make it challenging to gain market share, retain customers, and achieve profitability.
- Regulatory Compliance: Staying in compliance with local, national, and international regulations and standards can be complex and time-consuming, particularly in highly regulated industries.
- Changing Consumer Behavior: Shifts in consumer preferences and behavior can necessitate adjustments in product offerings, marketing strategies, and distribution channels.
- Leadership and Management: Effective leadership and management are critical for guiding the organization, fostering innovation, and maintaining employee morale.
- Strategic Planning: Developing and executing a clear and effective business strategy is essential for long-term success. Adapting to changing market conditions and trends can be challenging.
- Risk Management: Identifying, assessing, and mitigating risks, including financial, operational, and reputational risks, is crucial for protecting the business.
- Supply Chain Disruptions: Disruptions in the supply chain, such as natural disasters or global events like the COVID-19 pandemic, can lead to delays, increased costs, and reduced product availability.
- Customer Satisfaction: Meeting customer expectations and providing excellent customer service is vital for retaining existing customers and attracting new ones.
- Brand Reputation: Managing and protecting the organization's brand and reputation is essential for building trust with customers and stakeholders.
- International Expansion: Expanding into international markets brings challenges related to cultural differences, regulatory compliance, and adapting products or services for different markets.
- Economic Volatility: Economic fluctuations can impact consumer spending, demand for products or services, and overall business stability.
- Cybersecurity Threats: Protecting against cybersecurity threats and data breaches is an ongoing concern, as cyberattacks can result in financial losses and damage to reputation.
- Ethical and Social Responsibility: Companies are increasingly expected to demonstrate ethical behavior and social responsibility, which can involve addressing environmental, social, and governance (ESG) issues.
- Mergers and Acquisitions: Integrating acquired companies or divesting business units can present operational and cultural challenges.
- Evolving Technology: Keeping up with advances in technology and integrating new tools and systems can be both a challenge and an opportunity.
- Employee Well-being: Ensuring the well-being and mental health of employees is becoming increasingly important as organizations recognize its impact on productivity and retention.
To mitigate these challenges and accelerate software development, organizations often adopt agile methodologies, DevOps practices, and continuous improvement processes to promote transparency, collaboration, and flexibility in their development workflows. Additionally, regular project monitoring and risk assessment can help identify and address potential slowdowns early in the development process.
▶ Key Insight
Utilizing a DevOps strategy for your delivery is meant to deal with every one of the points detailed above. Now, DevOps is not a panacea that will fix everything everywhere, but it is a great way to cut down on many of the glaring low value activities immediately and get everyone focused on delivering value quickly.
In my experience, these low value facets are often seen as a cost of doing business and the real dollars and cents cost to eliminate these factors are often seen as too expensive. I believe that the real cost of these low value factors have a cost that cannot be ignored even if the cost of remediation is high.
▶ ExampleIf you have poor employee well-being, then you and your business will be living in a perpetual revolving door of talent coming and going from your business. This can be fixed by making sure you have a large focus on mental health and empathy towards their outside of work life, commitments, and interests. Gone are the days when a company can demand anything it wants to get top talent, talent can move around freely with almost no recourse and businesses must adapt to this new climate.
What is Better About a DevOps Strategy Compared to Traditional Software Development?
"What is a DevOps strategy?" you may ask. Well, from my experience, a DevOps strategy is a game-changer for many businesses. It's a method that improves the quality of software produced, all while requiring less effort. This means less risk of blowing the budget or exceeding time constraints. It's a real win-win for businesses looking to balance top-quality software with cost-effectiveness.
Let's delve a bit deeper into what makes a DevOps strategy tick. One of its standout features is the focus on frequent, smaller, and more targeted releases.
This approach is aimed at reducing the risk of errors with each deployment. Instead of rolling out large-scale updates that could potentially harbor multiple errors, DevOps promotes releasing smaller updates more often. So, if an error does pop up, it's likely to be less disruptive and easier to fix.
Another key aspect of a DevOps strategy is the use of automated testing procedures. These procedures allow developers to spot and address issues early on in the development process. Catching potential problems at this stage can improve the overall system stability. This early detection and correction of issues play a significant role in producing reliable and stable software.
A DevOps strategy doesn't just stop at producing quality software, though. It also simplifies the process of spotting and addressing issues quickly. Regular automated checks give staff the ability to identify and correct problems promptly. This efficiency frees up more time for innovation, fostering creativity within the team.
And when it comes to managing large-scale infrastructure, a DevOps strategy really shines. Automated deployment and testing practices enhance consistency and reduce errors. This is crucial for businesses handling large-scale operations, where even a minor error can have major consequences.
Finally, a key part of a DevOps strategy is the use of monitoring and logging tools. These tools enable teams to identify and correct problems swiftly, minimizing downtime. This quick response gives DevOps an edge over traditional models, which may take more time to detect and fix issues. In turn, DevOps can provide a more seamless and efficient service, leading to enhanced customer satisfaction. So, that's what a DevOps strategy is all about!
▶ Key Insight
At one point in my career, I measured how many touch points there are between an initial request and a single line of code making its way into production. The number was staggering and I am slightly embarrassed by the sheer number of individual people who needed to be involved.
- Account Manager
- Business Analyst
- Project Manager
- Database Wizards
- Quality Assurance
- Customer Testing / UAT
- Customer Stakeholders
And those are just in the technical line of business. From there you start getting into accounting, finance, systems teams, security, etc. GROSS!
While this may feel like a normal development flow, these touch points are really costly for everyone involved. Everyone needs to do some kind of knowledge transfer, they need to understand the customers, they need to understand the outcomes, all of which is a giant game of telephone which requires a high degree of coordinated flight control.
None of that flight control has ANY value for a customer. NONE!
DevOps is meant to remove the centralized flight control aspect of software delivery and put the responsibility of delivering quality software back to the individuals implementing the work. Strategically, you are moving decision making as close to the work being performed as possible while fundamentally removing the idea of big bangs all together.
5 Steps to kickstart a successful DevOps Strategy
As a seasoned professional, I often find myself asking, "What is a DevOps strategy?"
Well, let me share with you that the first step towards a successful DevOps strategy is having a clear vision. It's like having a roadmap for your journey. Without it, the adoption of DevOps could turn into a chaotic mess. We need to know what we want to achieve and how to do it.
The second part of our DevOps strategy is identifying problems in our current software development process. It's like finding the bumps in our roadmap. Once we know what's wrong, we can set targets to make things right. This step helps us focus on the areas that need improvement and track our progress.
Creating an implementation roadmap is the third step in our DevOps strategy. This roadmap helps us overcome obstacles like resistance to change, lack of skills, and outdated systems. It gives us a clear path to follow and makes the transformation process less complicated. Without this roadmap, navigating through the challenges of implementing DevOps could be tough.
Clear communication is the fourth step in our DevOps strategy. We need to make sure everyone understands the strategy and direction to avoid confusion. It's like making sure everyone in the car knows where we're going and how to get there. This step is crucial in avoiding misunderstandings that could potentially derail the implementation process.
The fifth step in our DevOps strategy involves a big culture shift. We need substantial planning, a willingness to adapt, and continuous improvement of our processes. It's like changing the car's engine while it's running. We need to change our team's mindset, plan every aspect of the implementation, and be ready to deal with unexpected challenges.
Even though implementing a DevOps strategy can be complex, the benefits are significant. We can expect increased efficiency, improved collaboration, faster delivery times, and higher quality products. So, while the journey may be challenging, the destination makes it all worthwhile.
Having a clear vision serves as the guiding North Star for your organization's transformation journey. This vision not only provides a well-defined direction but also acts as a unifying force, aligning teams and stakeholders towards common goals and objectives. By establishing a clear vision, you can effectively streamline the implementation of DevOps practices, ensuring that everyone is on the same page and working together to achieve continuous improvement in software development and delivery processes.
▶ ExampleIncrease release cadence to once per day through the use of automated testing, deployments, and monitoring while reducing on-going costs for maintenance and management of the system.
Once you have your DevOps vision defined, the next crucial step in your strategy is to conduct a comprehensive gap analysis. This involves evaluating your current processes, tools, and team capabilities and comparing them to the desired state outlined in your vision. By identifying these gaps, you can develop a strategic roadmap that outlines the specific actions and initiatives required to bridge these differences, ultimately moving your organization closer to the envisioned state of efficient and streamlined software delivery. This gap analysis serves as a strategic compass, ensuring that your DevOps transformation efforts are targeted and prioritized effectively.
▶ ExampleA clear gap that you might find is that centralized source code repositories are not being used, or code is being manually deployed to servers. These are big issues when trying to move towards greater stability, value, speed, and quality for your customers. Identify this as a gap and start to move your organization towards utilizing more centralized tooling with traceability built into the system.
After identifying your problem areas, start to develop a plan for moving your business towards fixing those problems. This is a great time to also think about measurements that help you quantify success. It is easy to move the needle one direction or the other, but how do you know if you are achieving the results you were expecting if you do not setup measurements for success?
Much like any plan, your roadmap should consist of tasks and milestones each of which are traceable and trackable. As new information is discovered through the transformation process, integrate that information into your plan as well. Do not be afraid to perform retros while executing your plan as well. Retros are a great way to get feedback which can help define additional meaningful change which may not have been readily apparent when the transformation was kicked off.
▶ Key Insight
Remember, we are after a "customer-value-driven approach" with DevOps strategy. A customer-value-driven approach does not mean that we are hyper focused on a particular customer and making sure that they are getting the features they are requesting.
An approach that is customer-value-driven means that you are taking a hard internal look at yourself and working out how you can deliver better, faster, stronger, and more valuable work to your customers. It is easy to get "Customer Myopia", but do not fall into that trap. You and your organization are as important if not more important than you customers and you should treat yourself as the first class citizen you deserve to be.
Let's face it, communication is difficult. I personally prescribe to the SAFe methodology for project planning simply because this methodology has clear and concise communication built right into the process. All stakeholders are consulted while plans are being developed, and information is continuously disseminated to all parties throughout the process.
A simply rule of thumb is, if you think you have communicated well and everyone is on the same page, you are fooling yourself. There is never enough, and there is never clear enough communication for everyone. Communication needs as much if not more focus than the overall transformation itself.
The last step in kick starting a DevOps strategy is to start an overall cultural shift. What is a cultural shift?
In this blog I will often talk about the difference between strategy and reactivity. Persistent reaction to the market is NOT a strategy. Building a delivery methodology which allows you to pivot and meet market demands quickly and efficiently without burning out your people is a strategy.
Building a culture of accountability and trust are crucial steps simply because everyone will be able to hold each other accountable to the process which in turn builds trust that the number of curve balls out of left field continue to decrease over time.
A customer requests that X feature be shipped by the end of the week.
In a reactive culture, the "tyranny of the urgent" would take over and resources would be diverted to accomplish the task at hand. Delivery teams would need to quickly pivot, work long hours, sacrifice quality, and finally push something which can have long term detrimental impact to ongoing cost and future flexibility.
In a healthily running DevOps strategy, the request would be evaluated and weighed against the other work already in queue. Thoughtful decisions could then be made which are both beneficial to all customers and to your business. Reliable feedback can then be provided to customer on what it means to ship X feature by the end of the week.
Setting yourself up for success with a DevOps strategy can seem like a daunting task. If you identify with any of the low value activities, start to implement the steps I have detailed in this article at a smaller scale to see if you get any improvement. You always have the opportunity to grow from there if you find some early success!