The goal of DevOps is to improve the relationship between an organization’s development and operations teams by advocating better communication and collaboration between these two important business units. This results in a better-run and more productive organization that can further a business’s objectives on a far larger scale than either could alone. Adopting the wildly popular practice isn’t always easy, though.
Before committing to implement DevOps, it’s therefore important to ask: does your organization have what it takes to successfully implement it?
Here are 10 key questions you should ask to find the answer before jumping on board.
1. Are your interventions automated?
Humans make mistakes. Automated intervention thankfully offers the chance to alleviate as many of those as possible. In testing and deployments specifically human error can cause huge delays, often heavily disrupting the agility of a team.
With manual testing it is impossible to implement continuous integration and continuous delivery in an agile manner because doing so often results in unplanned work. Full or partial manual deployments also significantly increase the risk of deployment failure, which also slows teams down tremendously and results in added unplanned work. It is therefore recommended that teams automate the building and deployment processes and implement a test automation process such as test driven development (TDD).
2. Is your team’s software development life cycle (SDLC) mature?
A lack of SDLC maturity has long been a thorn in the heel of many IT departments. The maturity of a team’s SDLC directly impacts its ability to deliver quality software. In the age of DevOps, this rings even truer.
In order to deliver software quickly while maintaining a high degree of reliability and quality, mature processes are critical. It is therefore extremely important to invest in training for a team and meet continuously to – blamelessly – point out what went wrong with a process and what can be improved in the future.
3. Are your testing practices outdated?
Your QA team must be fully integrated with the development team. When that doesn’t happen, workflows grind to a halt and code gets thrown back and forth between two silos within the business.
Instead, modern, agile teams should ensure that they are using automated test harnesses that will immediately fail the build if the test isn’t passed.
To achieve this, developers and testers must work in unison to create a system that creates quality software quicker. Having a quality product, after all, is in everyone’s best interests.
4. Are your change management processes modernized and agile friendly?
Companies often stick with the same change management processes for years – processes that were created at a time when deploying and updating back-office solutions or infrastructure happened infrequently.
Therefore, these processes are ill-suited to today’s fast-moving deployments that are made up of many small components and micro-services that change rapidly. If your company has legacy processes, it is important that you look at how they can be modernized to be more agile so that they don’t slow everything else down.
5. Do you have governance in place?
It is often easy to have some success on a small, initial project with only an isolated team. However, things become far more complex once your DevOps initiative starts scaling to bigger projects that require more infrastructure and resources.
At that point, a multitude of things can go wrong, including not having shared services available or common security architecture. For this reason, you need to have the right governance in place from the outset. Assign someone the task of creating a plan for scaling DevOps across the entire organization.
6. Does everyone share the same incentives?
This is essentially why DevOps was created to begin with.
When part of the team is incentivized for speed to market while the other is incentivized for security and reliability, conflicts are sure to emerge. Instead, teams should strive to align everyone’s goal towards achieving or furthering customer satisfaction while also stressing the importance of agility, reliability and quality. You can also reward your team for acting towards these goals to promote positive behavior.
7. Are your environments consistent?
An inconsistent environment can delay projects for days or even weeks as developers work to fix bugs that happened as a result of a change in environment instead of an error in the coding.
When different environments are configured similarly, code can be moved from one environment to another without any unnecessary errors that will derail the project and kill a team’s agility.
It is therefore critical to create standard infrastructure blueprints and continuous delivery that is implemented throughout an entire team to ensure consistent environments.
8. Does your team rely on heroes?
Your team is not operating effectively if it relies on people to work crazy hours or if it simply relies on luck. This can be caused by a combination of poor management, too little automation, immature operational processes or too much tribal knowledge.
Such a work environment will eventually lead to burnout, high staff turnover and unhappy customers. Do what you need to do to make sure these issues are fixed.
9. Are you automating your waste?
When deciding that you want to convert to DevOps, instead of immediately automating your existing processes, first work to remove any bottlenecks or other organizational issues that may already exist.
If not, you will essentially iron them in and make them more difficult to remove at a later stage.
10. Does your team receive executive support?
For your team to truly come together, you need support from the top down. Perhaps leadership should be supplying DevOps training to ensure that it is a top organizational priority.
This means breaking barriers, improving incentives and funding the initiatives. Although it is sometimes necessary to start as a grassroots initiative, sooner or later it will be important that the C-suite gets on board with DevOps in order for it to truly succeed.
These 10 questions should help you get a better idea of what it takes to successfully implement a DevOps environment. Implementing DevOps can be an extremely complex process and must therefore be done right. A well-functioning DevOps organization, however, can turn your organization around and help you to quickly produce high-quality results.
Yaniv Yehuda is the co-founder and CTO of DBmaestro, an enterprise software development company focusing on database development and deployment technologies. He is a DevOps expert who spent the last couple of years raising awareness about the challenges surrounding database development and deployment and how to support database continuous delivery. Follow him on LinkedIn.