How to Create an Engineering Handbook ๐
A comprehensive guide that draws from our latest Mastermind session
I am, admittedly, a note-taking nerd.
I have written about this many times [1, 2, 3] and I guess I will keep doing that, because 1) good writing, in both work and life, seems to be constantly underrated, and 2) my workflows change over time, and I canโt help but write about them.
Also, my work as a full-time writer is a note-taker's dream. My output is very directly connected to the quality of my note-taking: the better I am at managing my knowledge, the faster and better I am able to turn it into articles.
Even in my past lives, as CTO first and Head of Engineering later, I have always been the docs guy. I introduced Notion at my startup in 2018, and tweaked it endlessly to create the perfect workspace for us.
All this passion didnโt save me from making mistakes. Actually, a lot of them.
Many (most?) of our docs grew stale and irrelevant. Our structures so complex that people couldnโt find even basic information. We declared doc bankruptcy and started over more than once.
This is what I was thinking when I joined our latest mastermind a few weeks ago, about Engineering Handbooks.
In our private community, we run a mastermind session every month: we vote on a topic, we join a 75 mins session facilitated by Joel (a professional CTO coach), and discuss our respective experiences.
After the session, Joel publishes the learnings on our forum, the conversation continues async, and I eventually turn the insights into the article you are reading right now.
So, this piece is the result of the collective knowledge of ~20 CTOs, engineering managers, and software engineers, who debated on engineering handbooks for weeks. And I have the steep task of turning it into a full article!
So, here is what we will explore today:
๐ What is an Engineering Handbook โ and why it is a crucial investment for your team.
๐๏ธ Structuring your Handbook โ to ensure it is comprehensive yet easy to navigate.
๐ Creating and Maintaining Handbooks โ strategies to keep them relevant and up-to-date.
๐ The Handbook-first approach โ and how it transforms team communication and culture.
๐ The Final Cheatsheet โ putting all together in a simple checklist
Letโs dive in!
๐ What is an Engineering Handbook?
An Engineering Handbook is the guide to how your engineering team works.
It serves both as a cultural repository, capturing your teamโs collective wisdom, and as an operational guide, explaining how the team should function day-to-day.
Handbooks come in many forms, the most popular of which are digital docs (wikis, Notion, Confluence, โฆ), and code repositories โ i.e. markdown files that live together with code, like GitLab's public handbook.
In some companies handbooks get also printed as physical books, and given to new employees. This is less common but still pretty much in use, like at Valve.
Handbooks for engineering teams typically cover three key areas:
๐ ๏ธย Technical practices โ coding standards, development processes, and tech stack details.
๐คย Team dynamics โ communication, collaboration guidelines, and decision-making processes.
๐ฑย Growth and onboarding โ how new members join and how existing members develop their skills.
In short, it's a living document that reflects and shapes how your team collaborates to build great software.
The living part is crucial. As Umberto Nicoletti, Head of R&D, put it in the community thread:
"Rules are made to serve us, not for us to serve the rules."
The handbook is a tool to empower your team, not constrain it. To achieve this, teams need to keep it relevant and up to date, which is tricky, but well worth it. A good handbook, in fact, enables:
๐ย Speed โ it makes onboarding and decision-making faster by providing clear, accessible guidance.
๐ย Consistency โ it ensures uniform practices across projects and team members.
๐ย Scalability โ it enables teams to grow and work asynchronously by codifying knowledge and processes.
So, letโs see how to structure your handbook ๐
๐๏ธย Structuring your Handbook
Handbooks should be easy to understand and navigate, because engineers have to actually want to use it.
This is the #1 quality you should aim to achieve โ before it being comprehensive, detailed, or whatever you might think of.
When something is easy to understand, it is easy to update. When it is easy to navigate, things are easy to find. Remove these qualities, and over time handbooks become forgotten dusty tomes sitting in a (digital) corner.
To reflect on how to build your handbook, letโs cover three things: organization principles, sections, and modularity.
1) ๐๏ธ Organization Principles
Documentation is a game where players are, in turn, either readers or writers.
As a reader, I want to easily find and read valuable information about what I need. As a writer, I want to easily write about what I am working on and contribute to the company knowledge.
In both cases, we want to minimizeย effortย and maximizeย value. So, without getting into any particular structure or tool, these are the qualities we should optimize docs for:
๐ย Reusable โ Design your notes to be easily reusedย and connected. The more information is reused, the more value it provides and the easier it repays the cost of writing it. For reusability, the best strategy is to have notes/pages that areย smallย andย cohesive. Create a note around aย single concept, and link it to all the other notes where this concept is mentioned or useful.
๐ย Discoverable โ Make content easy to find. Whatever tool you use, create a simple structure and avoid excessive nesting. Prefer tags (if you can) to deep subfolders, and make navigation as easy as possible. E.g. for their internal docs, Notion has ditched folders in favor of aย global databaseย organized with labels.
๐ฑย Contextual โ Organize notes around how you will use them. Think about what they are useful for, in which situations you will need them, and put them there.
2) ๐ Core Sections
There is no one-size-fits-all structure for a handbook, but these are sections you might consider:
Company vision & missionย โ This sets the tone for everything else. We discussed it in this recent piece.
Domain knowledge โ if your business operates in a space that requires specific domain knowledge (e.g. finance), you may have a section that teaches the basics.
Engineering principles โ they answer the "why" behind your engineering practices. Itโs the set of your shared engineering beliefs, that guide how decisions should be made. More about them here.
Dev processย โ How do you build and ship software? This covers your SDLC, from planning to deployment.
Tech guidelinesย โ Your coding standards, design principles, and best practices. Arenโt these the same thing as the engineering principles? Not exactly: principles are cultural stances, e.g. โfix problems even when they are not yoursโ, guidelines are tactical rules, e.g. linting and naming conventions.
Team collaborationย โ How do engineers work together? This includes meeting structures, stakeholders, pairing, and everything around ceremonies.
Onboarding โ how new engineers get up to speed. There might be specific docs about your first week, how to setup your dev environment, etc.
Career growthย โ how team members can grow their careers. This includes career frameworks, reviews, promotion cycles, and HR stuff.
Again, you shouldnโt probably create all of this: for some companies, domain knowledge is irrelevant. For small teams, career growth is just a few lines. And so on. Consider this as a checklist that you can go through and take inspiration from.
For example, Mirco Franzek, Senior Backend Developer, shared in the community discussion how his team structures their handbook:
"Our handbook is roughly divided into four parts: onboarding, daily work, development information, and business logic. The 'daily work' section is read and updated most often."
This approach is totally fine: it balances the needs of new hires with the day-to-day requirements of the existing team.
All in all, it is more important for the handbook to be clear and useful than to be comprehensive. So, as Ross Younger said, start small:
"When it comes to getting the first version out, my advice would be to start small. Start with what matters most to your team and let it evolve. Be prepared to insert placeholders for sections you think you ought to write later, but also be prepared to change your mind."
Your handbook's structure should serve your team's needs. Don't be afraid to experiment and iterate. The best structure is the one that your team actually uses and finds valuable.
๐ Creating and maintaining handbooks
A well-structured handbook is great, but the real challenge lies in creating and maintaining it. Let's explore how to make this process smooth and sustainable: