Building our (remote, distributed) engineering culture
We’re proud of our engineering culture at Envoy. We’re also proud of the fact that 50% of our team works from their homes (the balance is in our San Francisco HQ) and we feel like a unified, high-functioning team. We’re actually required to wear these all the time Note: this isn’t about how you build a […]
We’re proud of our engineering culture at Envoy. We’re also proud of the fact that 50% of our team works from their homes (the balance is in our San Francisco HQ) and we feel like a unified, high-functioning team.
Note: this isn’t about how you build a multi-location engineering org, meaning teams located in different geos. In my experience the tactics to make that work are different. This is about building a team composed of folks in different locations.
Here are the things we do that make it work for us and keep it going as we hire more folks. We hope these ideas can help you too.
It starts with your goals and mindsets
The biggest factor is how our team thinks of our distributed environment. Do we hire folks outside of San Francisco because they’re cheaper? Do we believe being in the same room is unilaterally better for communication? Are we doing this to compete for the best talent?
Goals and mindsets affect your approach, strategy, and day to day behaviors so it’s important to be clear, explicit, and on the same page about them.
For us, we do it simply because we’re out to hire the best, and don’t think the best only lives in San Francisco. The talent pool in the world is only getting larger with the evolution of the industry.
The mindsets that help us strategically and day to day:
Everyone is a 1st class citizen. We prefer the word “distributed” over “remote” as there’s no implied hierarchy.
Communication is critical. The biggest difference between working colocated with someone and not is the communication channels can be different. It never means that communication is somehow less important.
We hire and value folks that can succeed in a distributed environment. It’s not for everyone, and not everyone will be good at it.
A strong engineering culture > distributed culture. We believe that promoting shared values, mindsets, skills, and behaviors in our people promotes fairness, regardless of location (and ethnicity and gender and sexual orientation and age and …).
We hire and construct our team around these goals & mindsets
If the goals & mindsets are the “what”, the “how” is in part about who you hire and how you set your teams up to work. These are the guidelines we use for hiring and constructing teams:
We hire folks primarily in or near our timezone (our specific guideline is continental US timezones) so folks can more easily collaborate real time. Timezones cause more pain than location in that regard. If we go into other timezones it will be with the intent of constructing a self-sufficient team there but right now we don’t want or need to.
50/50 split between HQ & distributed is our target, though that’s flexible. This is because much of our company is still HQ bound, so it’s important to have a significant enough presence in HQ.
Balance. It’s more ideal when there’s a good balance of senior folks working in and outside of HQ, so a location doesn’t have an implicit importance. Similarly, we try and avoid situations where there is a lone person working from home on a team. This should be a lagging indicator of our approach, but is nice when it’s achieved. 2 of our 4 managers and half our senior engineers work out of their home, for example.
Evidence of success working from home. This usually means we won’t hire junior/early-career folks that work out of their house, and we’ll be extra judicious with experienced folks working from home full time for the 1st time. This might change as we get bigger and more able to afford the time to work kinks out.
Empathy, “High I/O” (good communication and open mindedness), strong accountability … basically we hire to the desired behaviors in our job bands. This enables our culture everywhere.
Note: as mentioned earlier, these are tactics for constructing teams made up of folks distributed across locations. At a certain size, we’ll probably mix in having entire teams at locations or perhaps teams made up entirely of folks working from their homes. We’ll evolve our tactics then.
How we work
It’s not just how we hired and constructed our teams. We also put in systems to ensure it works day to day.
Overcommunicate everywhere. This works whether we’re talking to someone a few desks away or in another city. We’ve focused a bunch of energy on great Github etiquette (verbose, templated pull requests and reviews), task tracking (Jira), heavy use of Slack and video, recording meetings if folks can’t attend, ceremonies like weekly demos/Show & Tells and all-engineering gatherings, and many more things. Related, we invest in the highest quality tools for collaboration (Zoom is pretty nice). It pays off.
Nothing beats face to face for bonding. No matter what we do, you can’t replace the human connection which is best created face to face. To this end, we have a quarterly co-location, usually at SF HQ, and loose budgets for traveling in between. That way we spend at least a month a year face to face if not more.
We believe this is a template we can follow at scale. We feel as long as we have teams composed of folks distributed across locations, we will be able to perpetuate our success using this formula. We hope this helps you too!