I’ve been asked the same question over and over again. How can developers and operators collaborate better? The answer is simple. Remove horizontal departments.
The level of collaboration between different professionals is directly disproportional to the number of barriers between them.
Traditionally, developers and operators would work in different departments with different goals. Developer goals are to release new features to production as soon as possible while operators are rewarded if their systems never fail. When taken to the extreme, developers would like to deploy every commit, while operators would prefer never to deploy a new release. After all, the system is most stable when it is unchanged; when no one touches it. Such differences in goals and objectives lead to friction which is caused by separation and contradicting goals.
The best way for developers and operators to collaborate is to remove horizontal departments. They should work in cross-functional teams capable of everything, from gathering requirements all the way until the code is deployed to production. In that case, there is only one objective: successful delivery of a project. Either a feature is delivered to production on time and with agreed quality or it isn’t.
More importantly, when people with different skill sets are indeed working together, they feel each other pain. They stop looking into their individual and often egoistic objectives but start collaborating towards the same goals. They start helping each other because they develop empathy for fellow members. If things go wrong, everyone in a team is affected. When things are done well, everyone is rewarded. There’s no conflict of interest when departmental goals are removed.
DevOps is not about new tools. It is not about renaming operators into DevOps engineers. It is not about creating a DevOps department. It is about putting people together on the same team with the same goals. It is the evolution of Agile.
With Agile, we managed to join different skills into cross-functional teams. Those teams include managers (we renamed them to scrum masters), business analysts (we renamed them to product owners), developers, testers, and so on. However, operations managed to avoid being dragged into it. Maybe we excluded them, or maybe they did not want to come to the party. No matter the reasons, they continued being people sitting in a basement and waiting for JIRA tickets.
DevOps is about bringing the rest of professionals to cross-functional teams. It is about including operations and thus completing the software development circle. A single cross-functional team should be able to do everything, including deployment to production, monitoring, and alerting.
Remove barriers, remove highly specialized horizontal departments, form cross-functional teams, give them team objectives, and people will collaborate in ways you thought are not possible.
I read hundreds of posts around the subject. This one is grammy DevOps nominee. To the point, simple and direct. Many cheers!
This sounds like heresy. Each horizontal department has a manager. Every 2-3 departments are grouped to a division and each division has a manager. Domains and business units with line managers, quality managers, solution managers and managers of managers. You start removing horizontal departments, finally you end up with laying off an army of managers. Catch the heretic!
I am kidding. But this is how an established organization rejects any modifications.
Everything you said is, in my experience, true. Managers reject changes until their company ends up in the same position as Nokia was a while ago.