Oct 16, 2018 - Suri Patel    

An ode to stable counterparts

Our workflow model streamlines decision making, cultivates trust, and promotes cross-functional collaboration.

They said this model would help us thrive. To foster trust, familiarity, and drive,
We would work side-by-side, knitting our workflows
And supporting one another in our highs and lows.

Before we embarked on our journey, I fretted and fussed.
With a furrowed brow, I felt a careful trust
In my leadership who often discussed
The need to readjust lest we combust.

We shipped and scaled and detailed
Our results.
Seamlessly soaring towards Two and Twenty,
Our managers said, “In their progress, that
team exults.”
We collaborate, update, and accelerate with flair.

And now I must declare:
I have drawn the ace of hearts
With my team of stable counterparts!

At GitLab, we adopted a stable counterparts model to facilitate cross-functional connections in the hope that working with the same people would increase the speed of communication, build trust, and encourage iteration. In a stable counterparts model, every team works with the same team members, including frontend engineers, UX designers, and test automation engineers, for each release, creating a smaller team within GitLab.

The benefits of stable counterparts

The ability to build long-term relationships is the foundational benefit of having stable counterparts. Repeated interactions helps us understand personal workflows and communication styles, so we know how to most effectively work with our counterparts. Knowing how to best communicate with someone is a great benefit when working in high pressure situations or resolving conflict. Consistent collaboration means faster results and more efficient processes.

In addition to building long-term relationships, we’ve noticed a few other interesting benefits to having stable counterparts.

  • Enabling a faster workflow: There are some product areas that are easy to understand because every team member engages with them, but there are some that are challenging, such as CI, security, or Kubernetes, that require domain knowledge that can be harder for a team member to quickly fathom without a certain amount of pre-knowledge. When a stable counterpart has developed deeper understanding in complex areas, others know who to quickly consult when confronted with a specific technical challenge, an insight that drives velocity since team members are no longer blocked trying to determine who can offer assistance.
  • Promoting long-term brainstorming: In traditional workflow models, product managers often have individual meetings with engineering managers, UX designers, and frontend managers in which brainstorming through ideas and talking about long-term goals happens in silos. With stable counterparts, discussion benefits from cross-functional perspective, enhancing ideas, and igniting creativity, which can take place over several milestones.
  • Increasing familiarity and comfort with problems: Working with a rotating set of team members can result in a lack of comprehensive historical knowledge on an issue, causing delays while team members digest information and become acquainted with the state of a solution. By working with the same people over several releases, we’re able to provide context early and and implement learnings to solve problems in the right way.

Let’s talk about workflow impact

Working with stable counterparts has helped the team develop a faster and more iterative workflow. We’re more focused in that we can pick up on discussions and items that we tinkered with in previous releases. We now approach problems with a deeper understanding, since we have long-term insight into why changes are important. Taking context from release to release and retaining that knowledge ensures that we develop thoughtful solutions, especially since we feel a higher sense of ownership of projects because we’ve been involved throughout every stage.

This model has also resulted in better dependency management. We spend a lot of time doing upfront investment into project planning and prioritization, so teams have visibility into collaboration with backend and frontend. This makes it easier to see whether we need more backend or frontend resources in certain areas and to allocate engineers as needed.

Sounds great, but what are the drawbacks?

This model could lead to engineers feeling like they’re feature factories, so leadership must actively work to keep their team on an edge so that there’s a healthy balance between product features and other tasks that are more complex or exciting.

When working with stable counterparts, there’s a potential for conflict and personality issues. If personal communication styles or workflows don’t align, interactions can become tense and handoffs can be fraught with friction. When pairing stable counterparts, leadership should consider personalities, communication styles, and workflows to ensure that a team, at baseline, can work well together.

Working with the same people for too long means that we’re not exposed to a broader audience and may not have fresh ideas come into conversations. It’s possible that teams become comfortable with the way things are and ideas are no longer questioned. We haven’t encountered this problem at GitLab yet, since we’re growing so quickly that every team frequently has a change or new addition, which is accompanied by a variety of new questions and unique feedback. For teams that don’t have as much growth, it can be useful to invite other team members to provide perspective and question long-held beliefs.

Advice for other teams

If your team is interested in adopting a similar model, we suggest starting small and breaking teams into smaller components. For teams that are unaccustomed to an interdisciplinary model with agile teams, it can be a difficult adjustment, so it’s important that teams are structured around either a specific initiative or area of the product. To determine whether this is a model that could benefit your organization, consider selecting a problem and pairing the same 4-5 team members, including a product manager, a UX designer, and a few engineers, for several releases until the problem is solved. Working together for several releases helps team members nurture a strong, stable relationship, so it’s important that they’re given enough time to learn about and from each other.

Although stable counterparts has worked well for GitLab’s workflow, it’s important to be sure that this is the model that fits your company’s needs. Developing a workflow depends on strategy, targets, and the maturity level of an organization. These are all variables that need to be considered when building or changing a process. This setup wouldn’t have worked for GitLab 12 months ago, but it works now, so continue to experiment and examine options as your team and organization develop. Whether you pursue a stable counterparts model or some other setup, remember to select an approach that complements your organization and the product you’re building.

The writer is grateful to Jeremy Watson, Liam McAndrew, John Jeremiah, and Tim Zallman for sharing their experiences as stable counterparts.


Cover image by Markus Spiske, licensed under CC X.

Install GitLab in 2 minutes

With Ubuntu, Debian, CentOS, openSUSE, and Raspbian packages or from source

Install GitLab Now

Try GitLab Ultimate risk-free for 30 days.

No credit card required. Have questions? Contact us.