The ultimate README for remote onboarding

Getting someone new on a team is always exciting. Developer teams have shifted to Slack and Zoom and it has been quite challenging.

The ultimate README for remote onboarding

We’ve seen collaboration slow down 3x during WFH. Yet, a solid README could increase developers' productivity by 1.7x. This could lead  to informed questions by new teammates on Slack and Zoom and better pull requests.

What’s onboarding? It’s the ultimate knowledge transfer. getting someone new from knowing nothing to pushing code in production.

The goal of this post is to establish a template for the ultimate README.

Sections of the README should be easy and helpful for both readers (new developers) and writers (more experienced developers):

  • Easy to write & update
  • A powerful orientation guide for new devs

How to onboard onto complex code

Onboarding onto large code is not about understanding a lot of code. It’s about understanding the structure, concepts and abstractions of the system.

There are basically 2 approaches to onboarding:

  • Top down: from a high level system down to specific code. 
  • Bottom up: from specific code up to the layers of the system. We navigate from code to layers of abstractions.

Onboarding is about mapping what your new dev doesn't know (unknown unknowns).

When onboarding, you need both. 

  • The top down approach is more about the big picture. This is helpful to avoid pitfalls and side effects of the system (what you don’t know you don’t know - unknowns unknowns). It won't help close tickets but is tedious to self teach.
  • The bottom up approach is more pragmatic. Give someone a ticket and starting point in the code and let your new dev navigate to the answer. The risk is that your new dev may not be aware of unknown unknowns his code  could have unintended consequences (like side effects).

A good README is about giving a top down approach and pointing your new developers to the starting point of the bottom up approach (specific code locations).

Your new developer is successful when he pushes his first code to production. The goal of a good onboarding guide is to help  him to be effective in that process.

So how do we pave the path for your new developers success?

What makes a good README?

So how do we set up your new developers for success? 

A good README explains what’s already in place: the existing code, the processes and the team with the goal that your new developers can evolve it. Here are some of the high characteristics of a good README:

characteristics of a good README: Explains how the team works Points your new dev to the right code or what code to search for Answers what your new dev knows he doesn’t know Raises awareness about what your new dev doesn’t know he doesn’t know

What should a README answer?

App How to get it up and running? How to use it? How to configure the app? Code organization How is the code organized? How can I find code? How does the team write code? What conventions and patterns should I be using? Team processes How to submit a PR? How to deploy in production?

The ultimate README template

So here goes the template. It should be quick to write from scratch if you know your repo.

The ultimate README for nodetube

One of the problems with nodetube’s README is that it is aimed towards users and not contributors.

Known unknowns about nodetube:

  • It’s a web app but I don’t know how the front end, API, DB architecture are organized
  • It can host videos but I don’t know how the hosting is managed

Unknowns unknowns: we hope to clarify by applying our README template

Featured posts