Why should you care about the culture at your company? After all, aren’t we just engineers getting together to build something and change the world?
Your culture is the machine that builds your product. It’s the values that a group of people share. In this post I’ll discuss culture in a bit more detail, why it’s important, and how we build it at Thread.
“Culture is simply a shared way of doing something with passion” ─ Brian Chesky, Co-founder and CEO of Airbnb
Culture is the way a group of people behave and interact through shared norms and values. You’ll see these customs when observing a group of people such as a football team, a circle of friends, or people working together. A culture in such a group will exist regardless of any attempts to define and control it.
It’s important because it influences how people behave and the resulting output. A team that values winning over everything else may tend towards morally questionable behaviour. One that installs pace as its key value will cut corners and may consider quality to be of secondary concern.
As such, if you want to influence the properties of a team’s output you should care deeply about its culture and how a team thinks about its work. This takes no small effort and the forces that drive a team in different directions can be strong. Culture allows autonomy and reduces the need for process.
A team’s culture also influences which people want to join you. It affects how you hire, how you assess, and the kind of people who are attracted to your team. People joining a new group will emulate observed behaviours and so your culture will continue to shape your team even as it grows.
Your culture should be unique to your team; mimicking the values of another will be similar to cargo-culting process─you’ll end up with something that isn’t genuine. At Thread we thought hard about what kind of team we wanted to build and while we took inspiration from other companies, our culture is derived mainly from our personal values and aspirations.
Most people hear the word ‘values’ and roll their eyes, often for good reason. If the team doesn’t genuinely believe the values that you claim to define as your guiding principles then they’re a waste of time. They need to be regularly discussed, and behaviours held to account based on them.
We have seven values at Thread: User experience obsessed, Act like an owner, Uncomfortably fast, Candour, Extreme clarity, Relentless self-iteration and Enjoy the journey together. The detail of most of these is for another post, but we use them extensively: we have a values meeting every Friday where we discuss one and how we’re performing against that value as a company; we run retrospectives on every project and score ourselves against the values each time; we hire based on them; we have a #values Slack channel where we highlight behaviour that relates to our values, and so on.
The engineering team culture is highly dependant on the company culture as a whole, but there are some values specific to the engineering team that have emerged as a result of our dedication to quality code, learning and enjoyment of work.
We don’t see programming as just a job or a tool. It doesn’t mean we necessarily write code in our spare time─you don’t have to live and breathe programming. What it does mean is that we see our profession as our craft and we care about what we build and how we build it. We’re proud of what we produce.
We take time to help each other learn and maximise our own improvement. Thread’s value of relentless self-iteration manifests in the engineering team via thorough and compassionate code reviews, regular lunch and learns, and a culture of sharing knowledge and best practices. We’re candid but caring with our feedback, and thankful to those who take the time to help us get better. We hire carefully and are constantly trying to raise the bar of our team so that everybody can constantly improve.
Engineers are creative people and therefore seek a purpose and an ability to work unhindered and without micromanagement. We don’t believe in merely passing specs to engineers, instead our engineering team is part of the product team and everybody is involved in the whole process, from user research and ideation through to building and measuring the success of what we give to our users. We care and believe in our mission and approach engineering with the user front of mind.
We believe that a great codebase is more pleasant to work with than one lumbered with technical debt and hacked together features. To maintain this, we aim to minimise technical debt by spending time up front thinking about the problem at hand and evaluate proposed solutions in detail before writing a line of code. We use a ‘test and delivery’ methodology which allows us to spike code and test the viability of a solution before building a polished version.
We enjoy the journey together which is about helping others, being empathetic, recognising when others may be struggling, and thinking of your impact not only on the product but on your fellow Thread team members. There’s little point building a great product if you don’t have fun along the way.
A culture does not only consist of values you can define explicitly, there are many other things that contribute. However you should carefully and consciously define the values that are important for your team─your product depends on it.