Working with multiple offices and juggling time zones alongside cultural and language differences can result in an operations nightmare. Properly leveraging DevOps can transform this complicated dynamic into a collaborative environment with smooth handoffs between offices to keep the development team moving forward.
At KMS Technology, we are headquartered in Atlanta (Georgia) with an office in Dublin (California) and two offices in Ho Chi Minh City (Vietnam), giving us around-the-clock coverage of projects. We are able to maintain this with a smooth-running DevOps function.
We’ve learned a lot about what works, and what doesn’t, along the way. Here are a few tips based on our experiences.
1: Ensure you have buy-in at all levels.
DevOps doesn’t operate in traditional silos or phases, such as design, development, testing, deployment, and support. Instead, it leverages a cross-functional team so the designers, developers, testers and admins are working directly to deploy as quickly as possible.
To do this successfully, you need to leave the traditional development model and its rigid silos behind to adopt a more agile, continuous integration model. This more nimble, collaborative approach can be a major organizational shift and requires the support of the entire organization, including the executive team. Do not skip this critical first step!
To achieve buy-in across the leadership team, focus on the tangible benefits of deploying DevOps within your organization. Two common benefits are:
- Addressing pain points. These could be:
- Bottlenecks that keep you from deploying
- Testing slowing the speed of release
- Inaccuracies between development, testing and production environments
- The cost savings of shifting on-premise testing environments to the cloud with services like AWS Spot Instances or Kobiton.
2: Build a team based on skills, not location
We have found that one of the main challenges of implementing DevOps within an organization or project is finding one person with the right skillset. Ideally, your DevOps engineer would have coding, testing, automation, deployment and support experience. Finding the right candidate can be like searching for a DevOps unicorn with a very particular set of skills. Skills that have been acquired over a very long career. Skills that make them the best candidate for DevOps. Skills like:
- Having at least some development/coding skills
- Knowing how to test and interpret results into actionable steps
- Familiarity with deploying code, especially within distributed or cloud platforms
- Maintaining simple DevOps metrics, including: Cycle Times, Build Quality, Environmental Health
But there is another solution at hand. Thanks to having access to a remote workforce you can tap into a larger talent pool, to form a global team with the skills and experience you need. Or even outsource the function to experts who do it well. This positions you to deploy more quickly, with 24-hour support to code, fix bugs and deploy.
3: Set expectations and protocol in advance
You have your team in place. Now what? By having multiple offices connected through DevOps, you can maintain 24-hour CI/CD support. But this does require some flexibility from everyone on the team.
- When working in different time zones, intentionally plan to include overlapping office hours in the work day. This ensures that each team is available to answer any clarification questions to kick off each location’s working hours. We work with a 12-hour time change so our teams adjust their work day accordingly, coming in later or being on call from home.
- Define and maintain a strict handoff protocol so each member of the team, regardless of location, knows exactly where to pick up each day. For us, working with offices in Vietnam and clients based in the United States, our handoff protocol includes a change control document that provides exact information on deployments including where to deploy, what to test and any testing results to debug.
We’ve learned that it is critical for a global team that includes non-native English speakers to commit to a common language upfront.
As an important note, a critical thing we learned working on a global team that includes non-native English speakers, is to commit to a common language up front. This ensures that clients have confidence in our ability to effectively communicate. Here at KMS Technology, all members of our development team have earned their TOEFL language certification, which certifies their conversational fluency in English.
4: Select the right tools for each job
Work with your client to determine up front the communications tools that will best fit the particular project and boost team collaboration.
We find that it helps to outline the process first, and then identify the tools that best support it.
There are numerous communications tools available that essentially fill the same need, so randomly selecting one over the other may not negatively impact your practice, but intentionally selecting the right tool that aligns with your process can dramatically improve your day-to-day practice.
For example if you’re working with remote locations, you will need a tool that not only allows team members to communicate but also to collaborate. Google Hangouts and Skype probably will work well with communication, but will fall flat in boosting team collaboration and project management.
Since the process typically requires communication, team collaboration and project management, you may be better off selecting BaseCamp, Trello, or Slack. Those tools fit your process, so they would help improve the practice.
When we kick off a project, the tools we typically consider are:
- Git for collaboration
- Google Hangouts
5: Invest in your teams
As technology, tools and processes improve, the role of the DevOps engineer will continuously change. DevOps team members will need to learn new skills to adapt to new technologies as they go. Don’t spend your resources training your team on the best ways to implement DevOps to have them lured away. This can have a chilling effect on collaboration and knowledge sharing within the team.
Here at KMS Technology, we have found that by investing in continuous training for our global team, we attract and (more importantly) keep the most curious/interested in learning, qualified and skilled development teams. We bring in technical experts for hands-on seminars at our offices to keep our skills honed.