This article first appeared on the Oracle Blog on Sept. 11th, 2017.
Tips for successfully implementing DevOps from inside your organization
DevOps is not just the latest trend to hit the software community, nor is it just the latest buzzword. DevOps is changing the way companies and teams communicate, how they collaborate, and how they bring products and services to the market. That would be a lot of credit to give to a simple buzzword.
Yet, there are companies that consider DevOps the latest trend, and we all know how tempting it can be to secure quick benefits by adopting the latest and greatest trend. The problem begins when companies start looking to hire for DevOps roles in order to adopt this seemingly easy principle. They start looking for "experienced DevOps"' or "senior DevOps" partners to join their teams in the hope that this will bring them closer to the ultimate goal, DevOps adoption.
If only it was that simple. You see, DevOps is not as easy as just hiring one person or a team of experts. Having these people does not mean you've adopted DevOps. In fact, you'll be even further from DevOps adoption if you start with disjointed, siloed teams of DevOps professionals. DevOps is inherently a cross-team approach to managing the software development processes that relies heavily on collaboration, automation, and sharing—something smaller startups are uniquely positioned to get right from the beginning. It's a culture that takes dedication and patience to get right.
Because it's a culture, it needs to be embraced by the entire organization. Once implemented, the culture removes silos and focuses on delivering real value. And this implementation takes time and, perhaps more importantly, it takes making mistakes to figure out how to get it right for your organization.
So, how can you help your team implement DevOps and stop looking for experienced DevOps roles? I've outlined some highlights below.
Don't Start with DevOps Roles or Technologies
For those of us that have built a DevOps culture through countless hours of analyzing mistakes, automating systems, building communication foundations across teams, and changing the way we approach product development, deployment, and management, it seems obvious that you can't just hire a DevOps expert to implement DevOps. You have to understand how DevOps functions in the context of the organization in order to make the shift to a DevOps production culture, rather than trying to fill a role.
Expecting an outside "DevOps expert" to implement your DevOps environment won't work. You have to commit to making the change from within through the alignment of DevOps practices and philosophies with your organization's values and goals. In their book Fearless Change, authors Linda Rising PhD and Mary Lynn Manns PhD highlight the importance of choosing a change champion at your organization. For them, successfully implementing change was directly tied to their chosen champion. "I believe the most important element was a successful champion who engendered interest in process change. Our champion is a respected team member who is well known for getting work done and for his sincere desire to help lead the organization toward practical improvements."
So, don't underestimate the value of your internal DevOps champion and because that person will be working to integrate long-separated systems and teams within your organization, make sure your champion has support from all levels within your company. These necessary goals are not easy to accomplish without trust and understanding from management.
Just as hiring an expert won't get you DevOps, adopting DevOps technologies won't do the trick either. Continuous integration (CI) and continuous development (CD) are an integral part of a fully functioning DevOps system; however, you can't put the cart before the horse. Your teams have to be disciplined in the practices of DevOps before adopting the technologies. Otherwise, you'll be forcing developers and operations to work together before they are ready to share and collaborate on the whole software development pipeline.
Train DevOps Experts from Your Team to Oversee Adoption
As I stated above, hiring DevOps experts won't help you adopt DevOps; however, you can train individuals at your organization to become DevOps champions or experts. A DevOps expert needs to be motivated by customer and business objectives and advocate for software—from conception to production and beyond.
Choose champions who display natural and strong leadership skills. They should already be interested in or have expressed an interest in DevOps adoption at your organization. Most importantly, ensure that your DevOps experts have excellent communication skills that they use frequently and across multiple teams.
Do you know the biggest reason behind change management failure? It's a lack of frequent or clear communication. In order for a team to collaborate and automate systems, team members need to be able to communicate in a manner that fosters deliberation, honesty, and clarity.
So, what do you need your DevOps experts to do? First, they should help teams understand and implement the core DevOps values: culture, automation, measurement, and sharing (CAMS). Second, they must work to foster an environment that encourages people to ask questions and to cooperate with and learn from each other. Be wary of teams that don't ask questions or that don't appear vulnerable, because they may be suffering from groupthink. Third, DevOps experts, in order to save time and build consistency, need to champion investing in automation and provide a clear picture of why DevOps practices are relevant at each stage. And, finally, they need to encourage sharing tools to increase efficiency and create a higher level of engagement among employees.
Consider How the Size and Structure of Your Organization Will Affect the Transition
DevOps adoption at startups usually looks different from the way a large organization with a variety of specialized teams oversees DevOps implementation. For the former, it tends to be easier to start with DevOps or to make the transition to it, because there are relatively few specialized teams that need to learn to collaborate. Additionally, individuals are more often naturally part of the whole software development process and are used to working interconnectedly throughout the process.
As an organization gets larger and more specialized, the need for more DevOps champions becomes greater. More-complex projects might require more experts to lead the way to a DevOps environment, especially when your team is just beginning. As more team members become used to producing in a DevOps environment, DevOps experts can transition to focusing on sophisticated techniques—for example, autoscaling, complex monitoring, and high availability—while a newly trained DevOps expert steps in to fill the previous experts' role.
At the organization I work with, we've spent a lot of time trying to adopt DevOps wisely and consistently across teams while being mindful of practices or technologies we don't need. However, we've still made a lot of mistakes, and we now feel much more comfortable speaking up about what isn't working, collaborating across teams, and learning from others at our company that have the expertise. In the end, it's taken a while; however, today when I look at the various teams at our office, I see many DevOps experts working in a variety of roles.
It's never worth reinventing the wheel, that's why I'm sharing some of the challenges my company has encountered and how to fix them: