Articles about DevOps often mention the importance of establishing the right team culture, one in which collaboration and communication replace functional silos and competing interests. In many cases, however, the articles provide few details about what steps you can take to establish that culture, focusing instead on the technology side, such as how to implement DevOps processes or the tools needed to support those processes.
But cutting-edge technology isn’t going to save your DevOps efforts if you don’t establish the right team culture. You need teams made up of development and operations professionals that work together as a unified group to build software faster and with fewer errors. To make this happen, the individual members must share a common vision and set of goals, which can help facilitate communication and collaboration, the building blocks on which DevOps is built.
A DevOps team should be more than just a collection of individuals who happen to be working on the same project. The organization must make a concerted effort to ensure the team’s effectiveness, creating a culture that facilitates collaboration and seeks to unify the team into a cohesive whole. To help you with that process, this article provides a set of guidelines for building DevOps teams that work together toward a common vision to achieve the best results possible.
1. Get leadership on board from the start.
Building an effective DevOps team culture is not possible without the full support and engagement of the organization’s leadership. If they’re not fully behind the DevOps effort, it stands a good chance of failing. A culture of collaboration and communication starts with the right leadership, people who remove roadblocks and encourage cross-team cooperation. The organization’s leaders must be DevOps evangelists, championing its cause and promoting its benefits, while making it clear why DevOps is being implemented and what everyone stands to gain.
At the same time, leadership should not try to implement DevOps based only on what they’ve read in a book. DevOps is an organic process that continuously grows and evolves. It requires a keen sense of the nourishment and patience it takes to build the proper culture. DevOps is not a one-size-fits-all solution that’s implemented the same way in each organization, nor is one DevOps team the same as the next. Leadership should make it possible for each team to flourish in its own right, ensuring that they have the resources they need to operate while knowing when it’s time to step back and let them do their jobs.
2. Assemble the right people for the team.
The DevOps team provides the foundation on which all other efforts are built. The better that team members cooperate with each other, the more effectively they can create and deploy applications. Everyone on the team must come with a willingness to collaborate and communicate with the other members. Whether developers, testers, operations professionals, or security experts, each individual needs to adopt a mindset that values the importance of working together toward the same common goals.
A team’s diversity can also contribute to a collaborative culture. A diverse team helps the individual members step out of their routine ways of looking at problems and finding solutions. Individuals from different backgrounds and with different experiences bring with them new perspectives, unique insights, and innovative thinking. When given the necessary training and opportunities, most people can make the adjustment necessary to adopt a collaborative mindset and a DevOps way of working. In some cases, however, an individual might not be willing or able to embrace this mindset, in which case, you’ll likely need to reassign that person somewhere else.
3. Provide the necessary training and education.
Ensuring that team members come with the right mindset is only part of the process of creating a collaborative culture. They must also receive the training and education necessary to be able to participate effectively on the team. This begins with making certain everyone fully understands what DevOps is and how it can benefit the organization and each person individually. They must also be trained in the DevOps processes themselves and the tools used to carry out these processes. The more thoroughly each team member understands what DevOps is and how it works, the more likely the effort will succeed.
Training and education should also take into account the importance of improving soft skills. For example, team members often benefit from training in communication and interpersonal skills. Some individuals, such as junior engineers, might also need training in specific areas. For them, an organization might also consider a mentoring program. That said, training and education should be ongoing for all team members and should include frequent feedback to help them improve in their jobs and grow more adept at collaborating with one another.
4. Work toward a common vision and goals.
A DevOps team works best if the members share a common vision with the organization as a whole. Team members should have a big-picture understanding of where the organization is heading so they can make better decisions when developing and deploying applications. The organization’s leadership plays an essential role in communicating this vision and helping team members understand how their efforts should progress. By working toward a shared vision, the team has more solid footing when trying to collaborate on their individual projects and communicate with other team members.
Just as important as a shared vision is a shared understanding of the individual goals they’re trying to achieve. Not only do these include goals at the organizational level, but also at the team and project levels. In addition, they can include goals for the DevOps effort itself, which might include multiple teams and widely diverse software projects. DevOps teams should not need to contend with different priorities, nor should they have to deal with competing goals. Again, the organization’s leadership will play a pivotal role in communicating goals at the various levels, along with sharing the overarching vision.
5. Prioritize open and transparent communication.
Open and transparent communication is essential to team collaboration. Although a shared vision and set of goals can go a long way in fostering this communication, they’re not enough on their own. Team members need a safe environment in which they can share information and express their ideas. Everyone should have the opportunity to communicate their opinions, even if they don’t agree with the other team members. They should also feel comfortable going to other members to ask questions or discuss project specifics.
To help foster communication, everyone on the team should be included in planning meetings and other essential gatherings. They should all have an opportunity to talk about what they’re working on and contribute to the larger discussion. At the same time, meetings should be focused and kept to a minimum (in terms of number and time) to ensure that team members have the uninterrupted space necessary to focus on their work. Information sharing should also be a part of the team’s communication strategy so that everyone has access to what others have learned. DevOps works best when you avoid knowledge silos.
6. Establish an environment of trust and respect.
A DevOps team can communicate effectively only if the individual members trust and respect each other. This means respecting differences as well as similarities. People come with different cultural backgrounds, personal experiences, learning styles, problem-solving skills, education, and work histories, but they should all be treated with an equal level of trust and respect. It will, of course, take time for team members to learn to fully trust each other, but this will steadily increase as long as they’re working in a collaborative and supportive environment.
Training and education can also help team members better trust and respect each other. For example, they can be trained in how to listen to each other more carefully or resolve personal conflicts more effectively. But trust and respect must also come from the organization’s leadership. Team members are less likely to treat each other with respect if they’re not getting that respect from their managers. A team can’t operate effectively in a culture of blame nor in an environment that fails to recognize them for their accomplishments. Trust and respect must be built into the system at every level.
7. Empower the team with a sense of autonomy and ownership.
One of the most important steps in creating an environment of trust and respect is to instill the DevOps team with a sense of autonomy, ownership and empowerment. Team members should be able to operate with enough independence to get their jobs done as efficiently and effectively as possible. This doesn’t mean they get to do whatever they want, but it does mean they have the ability to figure out what it will take to deliver software that adheres to the project’s overall goals.
In a functioning DevOps environment, each team member has direct insight into what it takes to develop, test, deploy, and maintain an application throughout its lifecycle. Rather than development throwing the product over the wall to operations, everyone is invested in the outcome and recognizes that they all benefit by delivering the application as quickly and efficiently as possible. The only way to make this work is to empower the team with the autonomy and sense of ownership it needs to figure out the best way to deliver their applications, without having to navigate a convoluted hierarchy of approval processes that can bring an operation to its knees.
8. Instill a sense of shared responsibility.
As a DevOps team becomes more autonomous and takes greater ownership for its projects, the individual members adopt an increasing sense of shared responsibility for the entire operation. At this point, there should be no silos between development and operations, but rather a realization that they’re all in this together and have a vested interest in ensuring the best possible outcome. The development side better appreciates what it takes for successful operations, and the operations side better appreciates what it takes for successful development.
To gain a sense of shared responsibility, the team must avoid blame-game politics and instead work together toward productive problem-solving and process improvement. Members must recognize that their tasks are all interconnected and dependent on each other and that any misstep along the way affects everyone. At the same time, they should be encouraged to experiment with new processes and technologies and to challenge current methodologies and not be afraid of failure. By sharing in the risks, they also share in the responsibility for ensuring the best possible results.
9. Implement the right tools and technologies.
Team collaboration takes a lot more than just the state-of-the-art tools; however, those tools still play an important role in facilitating that collaboration. If everyone is expected to work together to implement an effective continuous integration/continuous delivery (CI/CD) operation, they must have the right tools in place to ensure that all team members can participate in the delivery process as efficiently as possible. At the same time, they need tools that facilitate communication between members and support where and how they work.
One of the most important considerations when planning tools and technologies is to ensure that the systems you put into place support a high degree of automation. Without extensive automation, team members must perform numerous manual and repetitive tasks, which can slow operations, introduce errors, and lead to inconsistencies between deployment environments. Automation helps to standardize operations and free up team members to focus on improvement and innovation, while leading to better software, faster delivery, and greater job satisfaction.
10. Establish a pattern of continuous learning and improvement.
DevOps is on an ongoing process, not a one-off operation. It should be continuously refined and improved and updated, with the goal of constantly making it better. The same goes for sustaining a collaborative team culture. Team members should be continuously learning, improving their skills, and working to enhance collaboration. The better they work as a team, the more effectively they can improve DevOps processes and achieve their goals. With each project, they should assess what has worked and what has not and then come up with ways to make operations better.
A team’s sense of shared goals and responsibility will go a long way in driving them toward ongoing learning and improvement. But members also require continuous feedback (both formal and informal) that provides them with insights into where and how they can improve operations. Feedback can come from the CI/CD tools themselves, such as error messages, build failures, or key performance indicators (KPIs), but it can also come from other sources, including the other team members, which is why effective communication skills are so essential.
Building a collaborative DevOps culture
Like DevOps itself, an effective team culture doesn’t happen overnight. The team must be nurtured and provided the training and tools necessary to accomplish its goals. Ultimately, the team’s motivation for its success will come from the members themselves, working together in a collaborative manner to deploy applications faster and with fewer errors. But to get to that point, they’ll need the commitment of the organization’s leadership and assurance they’ll receive the support and environment they need to work together in a cooperative and cohesive manner. Only then will they be able to deliver quality software as efficiently and quickly as possible.
If you like this article, you might also like Ten tips for attracting and retaining DevOps talent.