Good engineering culture
By looking at a variety of different types of engineering organizations (including startups and the gaming industry), what are the best practices for having good engineering culture focusing specifically on cultural norms and policies.
If the goal is to find the best engineering culture then it makes sense to dive deeper and discover what outcomes are we looking for with great engineering culture. To that end let's review three distinct goals:
Said in a slightly less formal way: What kind of engineering culture finds and keeps great engineers and how can the organization enable them to be the most productive they can be.
Let's look at three different categories of engineering organizations: large startups, small startups and gaming companies
Palantir prides itself on its culture but focuses its external documentation on productivity. Their three guidelines are
- “There are no prima donnas in engineering.”
- “Successful software always gets changed.”
- “The hardest single part of building a software system is deciding precisely what to build.”
Said slightly differently, they are stressing that engineering is a team sport, is continually evolving and requires upfront planning. The focus is always on iteration but mistakes can happen and that's OK.
Spotify (though not technically a startup anymore as they went public still has that startup vibe) also has a lot of literature on productivity and culture.
- They employ shared physical space for teams.
- Tools and best practices are not mandated but rather they form organically though evangelism.
- They deploy frequently to small services as to limit the blast radius of mistakes.
- They have surveys to check on motivation among engineers.
Wonder (why not include ourselves as a thought leader here!) puts lost of emphasis on culture. Our Head of Engineering shares tidbits of his own thoughts occasionally.
- They host hackathons to encourage creativity among engineers.
- Weekly all-hands meetings are places that engineers can present on new ideas.
- Every engineer should have three priorities in this order: Unblock others, Get your work done, Do things that make everyone faster
Asana has a great summary of their core values.
- Learn with curiosity
- Strive for simplicity
- Articulate your mental model
- Teach with compassion
- Ship fast, sustainably
- Fix problems, even when they’re not yours
Percolate has a great example of what makes engineers happy (not just the coffee!)
- Choose the right tool for the job
- Have a culture of automation
- Strong personal responsibility
- Get involved in the communities you belong to
Gaming actually doesn't have the best reputation for culture but I'll include some examples of that they claim to be doing.
- Blizzard has a dog-friendly culture that encourages fun and the ability to work on projects that you care about.
- Riot games has a great blog with a lot of topics that include issues like tackling tech debt and how to host a succesful internship.
- Culture stems from people
- Engineering is a team sport
- Process should be introduced sparingly as needed
- Focus on small iterations rather than large deployments
- Plan upfront to save time
- Release often and minimize blast radius
- Survey the team to understand how they are feeling
- Hackathons are a great opportunity to energize the team
- Find opportunities to tackle tech debt
- Automate the boring stuff
Proposed next steps:
You need to be the project owner to select a next step.
The initial research only surveyed a few companies in each category. We recommend a deeper dive on each of the categories (large and small startups and gaming companies) to get a sense of how other companies handle culture.
Alternatively, we go do a deeper dive into small startups to gather more culture documents to use as examples.