At many large startups and organizations, I often see a set of core values that drive the culture embedded within the company. These values generally cover open discussions, hiring, customer satisfaction, management strategies to constant growth and learning. However, more often than not, that culture does not transcend properly into the engineering team. In order to build a great engineering culture, engineers should build on top of the existing core company values and address their own specific needs as an engineering team.
This may take place first with a meeting between all responsible team members. It is important to listen to everyone’s opinion and realize what is important to him or her. It might be topics and concepts like working remotely, deploying more frequently or adopting bleeding edge technologies to more abstract arguments like tabs versus spaces. Whatever the case I think its important teams write down and agree on a set of values that drive their engineering practices and culture moving forwards.
Defining the Core Values
To give an example, a startup I worked with recently decided the following values were important to their engineering team:
- Openness to adopt any tool, language or technology (i.e: being able to program in any language they liked as long as the code was concise and readable).
- Tabs are the enemy (unless a language such as Go enforces them).
- Constant feedback and sharing of knowledge.
- Working where-ever and wearing whatever makes you feel the most comfortable.
- Being available during the company’s core working hours.
- Being able to explore new ideas during company time.
- Having a responsibility for customer satisfaction.
- Having the freedom to do anything you want as long as you are responsible for it.
Prior to defining the engineering culture a lot of time was spent in alignment meetings debating the choice of specific frameworks, tools, and technologies. More often than not, none of these meetings had any tangible outcome and it was obvious a lot of time was being wasted. After sitting down together as a team we quickly went around in a SCRUM retrospective format and placed sticky notes on the wall with the concepts and values that were important to us.
After the meeting, the core values were then compiled and printed onto several posters which were placed in the Berlin office. The values were also made available on an internal wiki for remote team members.
As an added benefit we were able to show potential new team members our core engineering values during the interview process. This allowed us to properly manage expectations and really show what is important to our team. We understand that not everybody may be the right fit for our team, but at least the expectations were managed properly up front.
It’s been a few weeks since the engineering team adopted a more formalized process. Looking back we’ve noticed a substantial improvement in the team’s productivity and overall satisfaction. Additionally, the engineers have the added benefit of being able to refer to the values each time they need to make an important decision. I’d thoroughly recommend adopting a set of core values for your own engineering team. We found it can have really positive results.