DevOps 101: Cross-Functional Teams

If you’re starting here, you might want to see the introduction (and table of contents) or you may want to go back to the previous page DevOps 101: Keeping it Agile and Lean.


Crayons (courtesy of Wikimedia Commons)

Cross-functional teams play a vital role in a DevOps culture as they bring together individuals with diverse skills and expertise from different areas of software development and operations.

By embracing cross-functional teams, organizations can foster collaboration, improve communication, streamline processes, and create an environment conducive to innovation and continuous improvement. In a DevOps culture, where speed, agility, and quality are paramount, cross-functional teams play a crucial role in breaking down barriers, improving collaboration, and delivering high-value software efficiently.

A Common Mistake: Siloed DevOps

Let’s start with how a lot of organizations, especially older ones, tend to organize teams: with deep silos. Probably there’s one team that’s tasked with DevOps, and every single team must talk to them in order to change their own part of the application. Not only that, this single team is tasked with managing the infrastructure for every team, the Developer Experience (DevX), pipelines, security, networking, monitoring, and more. As an organization, siloed DevOps simply can’t scale: as the number of other teams grow, the DevOps burden quickly becomes too much.

The other problem with putting DevOps in its own silo is that communication and responsibility become muddled. If there’s a failure that is both an application failure and an infrastructure failure (for example, a badly-handled error originating in a shared file system), which team is responsible? In an incident, who needs to be available?

Collaboration

Cross-functional teams enable collaboration and communication across different functions, such as development, operations, quality assurance, security, and other relevant disciplines. This collaboration promotes a shared understanding, breaks down silos, and facilitates the exchange of ideas and knowledge.

Cross-functional teams take ownership of the entire software delivery lifecycle, from idea to development to deployment and maintenance. They work together to ensure that the software is developed, tested, deployed, and maintained in a streamlined and efficient manner, minimizing hand-offs and dependencies between different teams.

Challenges of Cross-Functional Teams

Ensuring alignment and coordination between team members from different disciplines can be a challenge. Each function may have different priorities, goals, and ways of working. Effective communication, shared goals, and a common understanding of the overall objectives are crucial to overcome these challenges.

Cross-functional teams consist of individuals with diverse skill sets and backgrounds. Managing and leveraging this diversity effectively can be challenging, as team members may have varying levels of expertise or familiarity with different technologies and practices. Building a culture of learning, mentorship, and continuous improvement can help address these challenges.

Benefits of Cross-Functional Teams

A few of the most important benefits:

  • Cross-functional teams enable seamless collaboration and cooperation. Team members can work together closely, leveraging their different perspectives, skills, and knowledge to solve problems, make informed decisions, and deliver high-quality software.
  • Having cross-functional teams reduces hand-offs and delays that can occur when work is passed between different teams. With all the necessary skills and expertise within the team, decision-making is faster, and the team can respond to changes and deliver software more efficiently.
  • They also foster a shared responsibility for quality throughout the software delivery process. By involving individuals from different functions, issues related to security, performance, scalability, and other non-functional requirements can be identified and addressed early in the development cycle.
  • Cross-functional teams enable rapid feedback loops, where insights from users, stakeholders, and operations are quickly incorporated into the development process. This allows teams to iterate and improve the software continuously, leading to faster innovation and better alignment with customer needs.
  • Finally, cross-functional teams promote a sense of ownership and accountability. With end-to-end responsibility for the software, team members are motivated to collaborate, solve problems, and deliver value. This shared ownership fosters a culture of continuous improvement and a drive for excellence.

Certainly it can be hard to change an organization’s culture on team composition. If you find yourself in a position to advocate for cross-functional teams, I’d say to do it! This is one of the most important pillars of the DevOps culture, and it’s tough to undo if you get it wrong early on.

So, go straight to your VP of Engineering and blast them with the benefits of cross-functional teams until they change everything on your say-so! (Obviously, don’t do that.) But you probably can advocate with your team lead or manager what skill-set you might need from your next hire. Or, better yet, develop your own skills and become a leader on your team.


Coming soon: I’ll cover why it’s important for teams to focus on improving their processes in the same iterative way that they use to improve their product.