As my role demands, I work with various large enterprises looking at implementing DevOps to improve their software delivery cycle times. I have seen many strategies being adopted by them—some working, and some not working yet. I have pulled together some of the more common ones so we could debate them to see if these indeed are worth looking at. With that, I kick off my “DevOps Debates” series.
The first one on the list is a popular one: If you want to create anything in large volumes, you need to standardize the manufacturing process. That makes it easier to understand what is going on, control the quality and later change processes if necessary. This is happening in a similar fashion for software delivery processes and in DevOps.
Standardization techniques adopted in many large enterprises often include standardizing the toolset used by software developers. To do this, companies create a centralized tools group or software center of excellence (COE), which tries to find the best tool for the company and then implements and manages it for the teams. The intent is to streamline DevOps implementation across the board by having a common DevOps platform that hooks into these standardized tools, delivering common practices and reporting.
I have seen and heard a lot of emotional discussion on this. Here is my go, for and against the topic. Your thoughts are most welcome!
For Standardization:
- Centralized teams can take a global view of how things are being used across the organization. As such, they are better placed to push best practices where necessary and learn best practices when they need to. This helps in picking the right set of tools.
- Centralized teams can create a generic DevOps platform that can serve the needs of the organization across all groups. They then can help bring a DevOps focus and manage budget centrally.
- Standardization helps organizations streamline license cost to optimize software use.
- Small teams focusing on DevOps may not have the muscle power or the budget to create a momentum needed for adoption. Running a central body for such implementations helps.
Against Standardization:
- DevOps is still evolving—standardizing may be detrimental to the innovation process that needs to happen within the tools and needs ecosystem.
- Developers from various teams driving a DevOps implementation will be more successful; they can solve the issues “on the ground” rather than a central team trying to understand and then implementing a solution.
- Some tools are good for a specific use and may not be used companywide. Standardization may reduce productivity.
- Developers are the users of the tools—they need the freedom to choose what they want to use. Standardizing won’t allow them that freedom, which may upset them and, in turn, lead to decreased productivity.
Would that then mean,
- While it is a good idea in the long run to standardize, is now too early to do it?
- Would it be better to create a DevOps platform that can provide multiple tools support while standardizing the organization’s needs?
Thoughts?