As the title reads, my take is: No.
Recently, I was in a conversation with a middle manager, let's call him Terry, whose organization just recently started to move towards agility. He had a serious concern, and asked for help. The following conversation ensued - (with some creative license to protect privacy of the individual) :
Terry: "I'm in charge of our upcoming DevOps department and have a question to you, as an experienced agile transformation expert: How big should the DevOps department be?"
Me: "I really don't know how to answer this, let me ask you some questions first."
Me: "What do you even mean by, 'DevOps Department'? What are they supposed to do?"
Terry: "You know, DevOps. Setting up dev tools, creating the CD pipeline, providing environments, deployment, monitoring. Regular DevOps tasks."
Me: "Why would you form a separate department for that and not let that be part of the Development teams?"
Terry: "Because if teams take care of their own tools and infrastructure, they will be using lots of different tools."
Me: "And that would be a problem, as in: how?"
Terry: "There would be lots of redundant instances of stuff like Jira and Sonar and we might be paying license fees multiple times."
Me: "And that would be a problem, as in: how?"
Terry: "Well, we need a DevOps department because otherwise, there will be lots of local optimization, extra expenses and confusion."
Me: "Do you actually observe any of these things on a significant scale?"
Terry: "Not yet, but there will be. But back to my question: How big should the department be, what's the best practice?"
Me: "Have you even researched the topic a little bit on the Internet yet?"
Terry: "I was looking how many percent of a project's budget should be assigned for the DevOps unit."
Terry: "And every resource I looked pretty much said the same thing, 'Don't do it.'.But that's not what I am looking for."
Me: "Sorry Terry, there is so much we need to clarify here that the only advice I can give you for the moment is to reflect WHY every internet resource you could find suggested to not do it."
Why not?Maybe you are a Terry and looking for how to set up a DevOps department, so let me get into the reasons where I think Terry took a wrong turn.
- Terry was still thinking in functional separation, classic Tayloristic Silo structures, and instead of researching what agile organizations actually look like, he was working with the assumption that agile structures are the same thing.
- Terry fell into another trap: not even understanding what DevOps is, thinking it was only about tools and servers. Indeed, DevOps is nothing more than removing the separation between Dev and Ops - a DevOps is both Dev and Ops, not a separate department that does neither properly.
- Terry presumed that "The Perfect DevOps toolbox" exists, whereas every system is different, every team is different, every customer is different. While certain tools are fairly wide-spread, it's up to the team to decide what they can work with best.
- Terry presumed that it is by default centralization is an optimization. While indeed, both centralization and decentralization have trade-offs, centralization has a massive opportunity cost that needs to be warranted by a use case first!
- Terry wanted to solve fictional problems. "Could, might, will" without observable evidence are probably the biggest reason for wasted company resources. Oddly enough, DevOps is all about data-driven decision makings and total, automated process control. A DevOps mindset would never permit major investments into undefined opportunities.
- Terry was thinking in terms of classical project-based resource allocation and funding. Not even this premise makes sense in an agile organization, and it's a major impediment towards customer satisfaction and sustainable quality. DevOps is primarily a quality initiative, and when your basic organizational structure doesn't support quality, DevOps is just a buzzword.
Reasons for DevOps
Some more key problems that DevOps tries to address:
- Organizational hoops required to get the tools developers need to do their job: Creating a different organizational hoop is just putting lipstick on a pig.
- Developers don't know what's happening on Production: Any form of delegation doesn't solve the problem.
- Handovers slowing down the process: It doesn't matter what the name of the handover party is, it's still a handover.
- Manual activity and faulty documentation: Defects in the delivery chain are best prevented by making the people with an idea responsible for success.
- Lack of evidence: An organization with low traceability from cause to action will not improve this by further decoupling cause and action.
- If you have Dev and Ops, drop the labels and call all of them Developers. Oh - and don't replace it with the DevOps label, either!
- Equip developers with the necessary knowledge to bear the responsibility of Operations activity.
- Enable developers to use the required tools to bring every part of the environment fully under automated control,
- Bring developers closer to the users, either by direct dialog or through data.
- Move towards data-driven decision making on all levels: Task-wise, structurally, organizationally and strategically.
And that is my take on the subject of setting up a DevOps department.