In the fast-evolving world of software development and operations, no two organizations are the same. Every company, every team, and every goal is unique, requiring a tailored approach to DevOps that aligns with specific needs and objectives. In this post, we’ll explore how understanding your current state, streamlining practices, and adopting the right tools can lead to higher quality, more frequent deliveries, and reduced friction in your software development process.
Before setting out on any journey, it’s crucial to know where you are. The same principle applies to your organization’s DevOps journey. Understanding your current state is the first step in determining the direction you need to take. This is where a State of DevOps Report comes into play.
Baseline Assessment: The report helps you understand your current practices based on modern engineering and DevOps standards.
Informed Decisions: Knowing your starting point allows you to make informed decisions about where you want to go and how to get there.
Alignment: It ensures that everyone in the organization is on the same page regarding the current state and future direction.
When conducting a State of DevOps Report, consider the following areas:
Release Processes: How are products being released? Are there bottlenecks or inefficiencies that need addressing?
Tooling: What tools are currently in use? Are they the right fit for your needs, or is there redundancy that could be streamlined?
Ground-Level Practices: What’s happening on the ground, not just at the leadership level? This involves understanding the real processes used by the teams.
Example: I once worked with an organization that had 13 different source control systems in use for a single product. The waste was staggering, and it was clear that streamlining this process would lead to significant improvements.
Once you understand where you are, the next step is to evaluate and streamline your practices. This process often reveals dysfunctional behaviors—what I prefer to call “opportunities for improvement”—that can be corrected to enhance efficiency and quality.
Branching and Merging: One organization I worked with had a team of 30 engineers who understood branching but not automatic merging. They were manually copying code between branches—a process that was not only inefficient but also prone to errors.
Custom Tools: Another company had developed a custom tool that allowed product managers to create builds with selected features. While it seemed like a good idea from a business perspective, it was highly problematic from an engineering standpoint. The tool led to inconsistencies and a lack of cohesion in the final product.
Solo Interviews: Conduct solo interviews with team members to uncover the real issues. People are more likely to speak honestly when they’re not in a group setting.
Automated Processes: Embrace automation where possible. For example, understanding and implementing automatic merging can save countless hours and reduce errors.
Tool Rationalization: Assess your current tools and eliminate redundancies. Streamlined tools lead to streamlined processes.
One of the significant challenges many organizations face when adopting DevOps practices is compliance, particularly with regulations like Sarbanes-Oxley (SOX). A common misconception is that compliance requirements necessitate a separation between development and operations, which can hinder the adoption of DevOps practices.
SOX Compliance: It’s a myth that SOX compliance requires a strict separation between developers and those who release code. In reality, it’s possible to meet SOX requirements while still embracing DevOps principles like continuous integration and delivery.
Education and Coaching: Part of our role in helping organizations adopt DevOps is to educate and coach both technical teams and business leadership on how to meet compliance requirements without sacrificing the benefits of DevOps.
Example: Automatic deployments are often resisted due to compliance fears. However, with the right controls in place, it’s entirely possible to automate deployments while staying compliant with SOX and other regulations.
One of the most significant benefits of adopting DevOps is the shift towards ownership. When teams are responsible for the entire lifecycle of an idea—from development through deployment and monitoring—it leads to higher quality and more frequent deliveries.
Continuous Delivery: DevOps enables more frequent, higher-quality deliveries by fostering a sense of ownership among teams.
Reduced Friction: When teams are responsible for the entire process, there’s less friction in getting software out the door.
Closing Feedback Loops: Ownership ensures that feedback loops are closed, leading to continuous improvement.
Empower Teams: Ensure that teams have control over the entire lifecycle of a feature or product.
Monitor Quality: Implement monitoring tools to track the performance and quality of deployed features.
Deploy Strategically: Avoid deploying on Fridays. Instead, aim for Monday mornings when the entire team is available to address any issues that arise.
To successfully implement DevOps in your organization, it’s essential to adopt practical steps that align with your specific needs while maintaining quality and compliance.
Compliance Tools: Use tools that help you meet compliance requirements without sacrificing the agility of DevOps.
Quality Assurance: Shift your focus from User Acceptance Testing (UAT) as a cost center to ensuring high-quality delivery from the start.
Case Study: Learning from CrowdStrike
A recent incident with CrowdStrike highlights the importance of controlling the blast radius during deployments. When deploying new features, it’s crucial to start small and gradually expand to avoid widespread disruption.
Controlled Deployments: Deploy to a small, low-impact group first to monitor performance before rolling out to the entire organization.
Strategic Timing: Deploy on Monday mornings, not Fridays, to ensure that any issues can be addressed promptly.
Example: Even organizations with high-quality products, like Windows, control their blast radius by deploying to a small group before a full rollout. This approach minimizes risk and ensures a smoother deployment process.
DevOps is not a one-size-fits-all solution. Every organization is different, and the approach to DevOps must be tailored to fit specific needs and objectives. By understanding your current state, streamlining practices, and adopting the right tools, you can unlock the full potential of DevOps—leading to higher quality, more frequent deliveries, and a more efficient software development process.
🔍 Key Takeaways:
Know Your Starting Point: Use a State of DevOps Report to understand where you are before setting out on your DevOps journey.
Streamline Processes: Identify and address dysfunctional behaviors to enhance efficiency and quality.
Embrace Ownership: Empower teams to take full ownership of the development and deployment process.
Stay Compliant: Meet compliance requirements without sacrificing the agility and benefits of DevOps.
By following these principles, your organization can successfully navigate the complexities of DevOps and achieve a more streamlined, efficient, and effective software development process. 🚀
If you've made it this far, it's worth connecting with our principal consultant and coach, Martin Hinshelwood, for a 30-minute 'ask me anything' call.
We partner with businesses across diverse industries, including finance, insurance, healthcare, pharmaceuticals, technology, engineering, transportation, hospitality, entertainment, legal, government, and military sectors.
NIT A/S