I was speaking with a few colleagues recently about DevOps transformations happening in plenty of organizations these days. Most of them have started focusing on speed to market with agile movement, cost reduction by automating everything and shifting testing to left. But interestingly, very few are paying attention to cultural hindrance between Development and Operations teams in traditional SDLC.
Development and Operations are two sides of an equation, each holding its own roles and responsibilities. DevOps doesn’t mean eliminating some of the Ops role; rather about breaking silos between Dev and Ops, encouraging collaboration and effective communication throughout the product lifecycle.
Let us look at a few key aspects around breaking silos between Dev and Ops.
The Development team works on code which is then sent to the testing team for validation against requirements. Operation team comes in toward the end of the process, where handover of release is given. DevOps aims to break these silos enabling better collaboration and performance.
The Development and Operations teams work in collaboration to minimize the effort and risk involved in releasing software. But how do you ensure collaboration? This is the question faced by many organizations. Well, you can introduce collaboration by ensuring that the Operations team is giving constant feedback to the Development team about the code, analyzing the impact considering end users and troubleshooting any problems together to gain stability of the product.
DevOps enables a cultural change to remove the barrier between development and operations, working together for common set of objectives.
Cohesive teams are formed to enable strong collaboration between business, developers, testers and operations for smooth release of small and frequent changes. These teams often comprise experts from multiple disciplines that are tasked with quickly and iteratively building or fixing an application. Entire team is responsible for developing and delivering software system. Thumb rule is to go for product focused teams rather than short lived projects, for instance, Operations, development, business and QA members in long standing teams. Consider composing each team of business analysts, product owner, DBAs, developers, iteration managers, QA engineer and release engineers. With a cohesive team, you eliminate the wall of conflict and "not my job" syndrome.
Dev and Ops work cohesively toward common objectives such as setting product objectives and vision statement aligned with overall organization strategic objectives. This also involves establishing collective team ownership where the entire team is accountable for accomplishing the Sprint Goals agreed upon.
Coordinating work and sharing information between teams often requires a lot of meetings, conference calls, and email threads. Weren’t you in that meeting? Didn’t you read my last email? etc. Co-location helps in improving collaboration between team members easily.
Invest in a collaborative floor plan such as learning hubs, electronic media, informal spaces to encourage meaningful conversations and collaboration amongst team members and encourage use of collaboration tools like Confluence, Yammer, Slack and Jabber. Introducing SCRUM ceremonies at team and program level will also help facilitate opportunities for collaboration, transparency and identifying risks early.
Shared tools strategy helps teams to collaborate across development, testing, and deployment. Design your DevOps blueprint to have common set of processes enabling continuous Integration and continuous delivery. Code quality checks, security testing, automated regression testing help cohesive teams to deliver efficient work in production. The key to effective DevOps is breaking down silos and creating cohesive teams.