- a README with step by step instructions to compile the project
- START HERE document with a checklist of things to be done, services to join or set up
- Devops that remove the need for knowledge wherever possible. CI/CD, continuous automatic deployments.
- Enforce style with an automatic linter
- Code that is simple, even naïve. Complicated code should be black-boxed or reduced to simple pieces.
- Comments that explain why or refer to useful documentation.
- Local dev environment that mimics but does not affect production.
- Using a library to create database migrations.
- Use a typed language
- Loom explainer videos
- Unit tests
- E2E tests
- style guidelines/templates for PR requests.
- over-documenting. Making sure slack conversations, Notion docs, kanban tickets, and PR's link to each other as much as possible so that you can reverse-engineer your own thought process (or that of another engineer) quickly.
- Keeping a queue ready to go of small tasks appropriate for an engineer brand new to the team.
- staging environment separate from production for experimentation.
- Every time a new engineer onboards have them update the README and onboarding docs as they go. Have them post in Slack each thing they get stuck on and how they got unstuck. This way the onboarding process becomes more robust over time.