This was originally posted on our blog
TL;DR : team building based on core behaviors
Recently, we had a candidate go through our hiring process, which entails a 1–2 week trial working with our development team. He did exceedingly well and on his first PR, had brought up documentation convention in Elixir, which lead to discussions around our “coding philosophy” and why we document and why do we even care? This ultimately lead us to revamp our “Getting Started” guide, and the core behaviors we care about at this company.
While it looks similar to “Core Values”, it’s slightly different and there’s an excellent explanation of this in Patreon’s Culture presentation (slide 12). Basically, it’s not just what we say on a blog or README, but what we do and how we behave that defines our culture.
So, we actually used this candidate (who we hired) and current employees as a baseline. Why were we so excited by him and what things do our current employees do that we really care about? We came up with 3 common traits that we really look for.
Creating a Psychologically safe environment
There’s an amazing article about researchers for Google that looked at successful teams and the #1 reason was “psychological safety”. For us, its about trusting each other, and encouraging people to participate, engage and investigate equally, collectively working on ideas and executing without fear. There’s the famous Mark Zuckerberg quote about “move fast and break things”, but I think what it really highlights is, only in a truly safe and open environment can you be ok with people just making things happen and be fearless about failure.
This behavior seems kind of a no brainer, but its exceedingly hard. There’s constant miscommunication and given we’re a globally distributed team, miscommunication or lack of communication would be our death knell. We also define communicating in numerous ways, its not just Zoom or Slack, but its through our code, PRs, documentation and product and dev roadmap trello cards. This also includes being open and honest to each other and giving good and constructive real time feedback.
A CTO buddy of mine, Mike Wood (who also helped define these behaviors with me) often says, “developers caring is 90% of the battle” and I tend to agree. Caring about your company, your teammates, your code, your craft are all important. If you don’t care, it’ll be pretty hard to communicate and build safety with your teammates. I think caring breeds a growth mindset and willingness to learn and try new things, crucial to a highly functioning dev team.
Behaviors as a guide post for our actions
Above on the left is a list of specific things our new hire did that exhibited our core behaviors. In contrast, on the right is a list of things that an ex-employee struggled with.
One big note here is that, we understand it takes time to establish trust, communicate well with each other and care about all the various things. So, people don’t have to exhibit all the behaviors to be hired, and they certainly wouldn’t be fired just for missing a couple of items here or there. This is an ideal state and something we’re always striving to do better. We want to making hiring and firing decisions based on these behaviors. We want to give positive or constructive feedback based on these behaviors. We want to make sure our team lives and breathes these ideals and that all this would create a inviting work environment for us to accomplish great things together.