You have 47 repositories on GitHub. Eleven of them have actual code. Four of them have a README.md that says “TODO: add description.” One of them is a project you are genuinely proud of.
The one you are proud of? If someone visits it right now, will they understand what it does in 30 seconds?
If not, that project is invisible. Not because it is bad - because nobody can see it.
The Problem With “README Later”
Side projects always seem more urgent to build than to explain. Features feel productive. Documentation feels like paperwork. So the code grows and the README stays empty, and eventually you move on to the next project and the old one sits in a half-explained state forever.
This is backwards. A README is the first thing every visitor to your project sees. It is the elevator pitch, the user manual, and the proof of professionalism all in one file.
A project without a README says: the builder does not think about their audience. That is a signal to every recruiter, hiring manager, and potential collaborator who stumbles across it.
What a Good README Actually Contains
You do not need to write 3000 words. You need to write the right things in the right order.
1. The one-line summary What does this do? Not what technology it uses. What problem does it solve?
Bad: “A Python project using Flask and SQLite.”
Good: “A CLI tool that watches your git commits and generates a weekly progress report in Markdown.”
2. Why it exists One or two sentences on what problem you were solving. This is the most interesting part for a human reading it. It shows you identified a real need.
3. Demo or screenshot If there is any visual component, a screenshot or animated GIF is worth 500 words of description. If it is a CLI tool, a terminal recording with asciinema works well. If it is an API, show a sample request and response.
4. Installation and quick start Assume zero context. List every command needed to go from empty machine to running project. Copy-pasteable. Test it on a clean environment at least once.
5. Usage examples Show the most common usage patterns. Code examples, not just feature lists.
6. Configuration If there are environment variables, config files, or options, list them with explanations and example values.
7. Contributing (optional but good) If you want others to contribute, one paragraph on how to get started with the codebase.
The README-First Development Approach
Here is a technique worth trying: write the README before you write the first line of code.
Write the one-liner. Write the why. Write the quick start (even if the tool does not exist yet). Write the usage examples.
This forces you to think about what you are actually building from the user’s perspective. Many mediocre projects start because the builder was excited about a technology and only vaguely thought about what it would do. Writing the README first forces the “what” and “why” to come before the “how.”
It also gives you a specification. You know your project is done when the README is accurate - when all the examples work and the quick start takes someone from zero to running in under 5 minutes.
How a Good README Helps Your Career
Recruiters look at GitHub portfolios. Most developers’ GitHub profiles are a graveyard of half-finished projects that communicate nothing.
The developer who has 5 clean, well-documented projects stands out dramatically from one who has 50 undocumented ones. Documentation quality signals:
- You think about users, not just code
- You communicate clearly in writing
- You care about the project being useful, not just technically correct
- You maintain things over time
Hiring managers frequently look for README quality as a proxy for communication skills. It is real.
A Template to Start With
# Project Name
One sentence that explains what this does and who it is for.
## Why This Exists
[2-3 sentences on the problem and why existing solutions did not work]
## Demo
[Screenshot or GIF here]
## Quick Start
git clone https://github.com/you/project
cd project
npm install
npm start
Then visit http://localhost:3000
## Usage
[Code examples of the most common use cases]
## Configuration
| Variable | Default | Description |
|----------|---------|-------------|
| PORT | 3000 | Server port |
| DB_URL | - | PostgreSQL connection string |
## Tech Stack
[Brief list, no need to explain why each technology]
That template covers 80% of what a README needs. Fill it in before you write the first feature.
Keeping the README Accurate
The README that lies is almost worse than no README. If your quick start says npm install but the project actually requires Node 18+ and a running Postgres instance, the first thing every person experiences is failure.
Build a habit: when you change behavior, update the README in the same PR. Treat it like tests - not optional, not “I will do it later.”
Bottom Line
A README before features is not a writing exercise - it is a forcing function for clarity. You cannot write a clear one-liner summary until you know what you are building. You cannot write a quick start until you know how it should work. Write the README first, then write the code to make it true. Your future self and anyone who ever finds your project will be grateful.
Comments