Pantheon is all about making the workday easier for developers, especially development teams. Agencies on Pantheon never cease to amaze us with the ways they incorporate our platform into their workflows along with other awesome open source tools. We’ve already talked with Thinkshout and Alley Interactive on how they created and tightened their development workflows to keep their teams efficient, and now we’re adding the team at Modern Tribe to that list. We spoke with Travis Totz, Senior Web Strategist, and Daniel Dvorkin, Director of Development, on how they keep all systems go for client projects.
Modern Tribe is a development agency operating in a manner many of us strive for—they’ve built a truly global, decentralized, remote team. They are currently a team of 65, mixed across 7 time zones, 7 countries, and 6 languages. They split their business between professional services—building projects for some pretty awesome clients—and products—building plugins than can be productized and repurposed for multiple clients, such as The Events Calendar Plugin. The goal behind their fully distributed company is to bring together the best development talent, regardless of location, to build the next generation of digital agency. Their team and client base continue to grow, so they've definitely got some things figured out.
Modern Tribe is living the development dream, but we were curious how they are able to maintain order over projects and agency culture with a team that only meets face-to-face once a year.
Project Management with a Distributed Team
“We don’t like to take on projects if we aren’t in love with the idea from the get-go, so allowing the team to have a say helps keep everyone engaged and passionate about the projects we work on.”
—Travis Totz, Modern Tribe Senior Web Strategist
Travis told us they keep to a strict process called their “client lifecycle” to make sure their team knows exactly how they engage in projects, and are empowered to work on projects they enjoy. Once you are a formal client, you get assigned to one of their two teams. They’ll have a kickoff meeting with the strategists and project managers. Next, a discovery process begins to identify what the project really is, not just what the RFP said (can we get an amen?). From there they move into four-week sprints until the scoped project is complete. While each sprint is active, the assigned project lead is planning the next sprint in tandem. This works very well for Modern Tribe, because they can be actively working on design requirements while planning and scoping to make sure designs are ready for development in the following sprint.
Cross-team Notifications + Ticketing
Modern Tribe uses GitHub for all projects even if Git repos are integrated into a development platform. In these cases an upstream is used to send deployments to those integrated repos. This is because having Git integrated with Slack for all-team notifications is crucial to Modern Tribe’s remote development process, and because they rely heavily on the Code Review tool GitHub provides.
For ticketing, Modern Tribe has a heavily modified version of ChiliProject they’ve been using for more than seven years. Daniel notes that it’s not perfect, but a lot of time and money have gone into getting this ticketing system customized to their needs. Using the system enforces processes and helps keep sanity across a massively distributed team.
“We use this system extensively, nothing happens in the company if it isn’t posted in Central. For instance, if someone sends me a request on Slack, it isn’t something I would work on until I see a ticket show up on Central.”
—Daniel Dvorkin, Modern Tribe Director of Development
Branching for Sprints and Features
Modern Tribe manages their projects with a feature branch workflow. As mentioned earlier, they keep to four-week sprint cycle on projects. They typically create one Git branch per sprint that acts as a “Sprint Master” for those four weeks instead of a single master branch for all work. They create a branch from the sprint master for all features and large tickets so work can be done separately during a sprint. This allows their team to stay hyper-focused on sprint end dates, all that is ready is merged into the sprint branch and deployed on the date that sprint closes. If a feature isn’t ready to go at the end of the sprint, they can hold deployment and continue work to merge the final code once QA’d and complete.
Modern Tribe has large team devoted to QA for testing features. Once they have approved a feature, it moves to code review. Each project has one frontend and one backend lead responsible for reviewing code for that specific project, while other team members review the code pushed by the leads. Once reviewed and approved, the feature gets merged back into the sprint branch to be deployed at the end of the sprint.
They also keep a branch for each environment—one for development, one for test, and one for live. So there is a sprint branch that is merged into each environment when they deploy. In the event that something needs to be hotfixed off of production, there is no worry over what has, or hasn’t, been deployed since it should all be up-to-date in the branch.
Modern Tribe’s deployment process varies according to host. They are hosting agnostic and follow different protocol for different types of hosting. While the process may change according to host, they have invested in proprietary tools to help with deployments.
They created a tool for development sites called Pick-n-Pull. It was created as a tool to allow the QA team and other non-developers to try different versions of a site. With the tool, you can change branches, pull and update modules, or change the branch on every individual submodule. For example, you could change to a different version of WordPress core to make sure it works. This is a tool is primarily used by Modern Tribe’s QA team and is conceptually similar to Multidev, when Pantheon is not an option.
“It’s not a Multidev exactly, it’s one dev server where the QA person has a lot of control over the status of the install. It works well for us when we aren’t using Pantheon for a project.”
— Daniel Dvorkin
Advice to Other Agencies
We know Modern Tribe’s workflow didn’t appear overnight, so we asked Travis and Daniel what advice they’d give to agencies who are still trying to nail down a solid workflow for their team.
“When it comes to development we are very pragmatic. We have built enough large projects that we’ve definitely learned a thing or two about the difference between idealistic and practical coding. I think the best advice is that your goal is not to produce the most beautiful code but to produce the most comprehensive solution using easily readable code. Aim to solve not just for today’s requirements but for tomorrow’s inspirations and ideas.”
“There are two big efforts that definitely helped us step up in terms of quality and consistency. The first one is peer code reviews for every feature branch. The increase in time/cost sounds scary, but it has helped us reduce the QA and maintenance time significantly, while improving quality at the same time. The second one, which we haven’t totally mastered yet, is automating as much as possible the development workflow. We hired a DevOps person to help with this effort. We have bots looking at all our pull requests and checking code styles, running tests, looking for obvious errors, etc. We’re working on an Ansible based system to standardize all our dev environments. We’re working on a Jenkins-based system to deploy to any production, regardless of the hosting the customer chose to partner with. Automating all those tasks made our team more efficient and less error prone, and gave us a more robust framework to be able to tackle bigger and harder problems.”
Thanks to Modern Tribe for taking the time to chat with us. We think there is quite a bit agencies can learn from the time they’ve devoted into identifying a solid workflow for their dispersed company.: Agencies, Development, Digital Agencies, WordPress