How to build a developer portfolio that gets interviews
Here is the thing nobody tells you about portfolios: almost nobody reads them. A hiring manager with forty applications open spends somewhere between sixty and ninety seconds on yours, and they are not reading with curiosity. They are skimming for a reason to stop.
That single fact should drive every decision about how you present your work. Optimise for the skim.
What they are actually checking
In roughly this order:
- Is there a live URL? Not a screenshot. Something they can click.
- Does it load, and does it work? Thirty seconds of poking.
- Is there source code, and is it legible?
- Did this person build it, or follow a tutorial?
- Is there any evidence of engineering judgement? Tests, error handling, a README that explains a decision.
Notice what is absent. Nobody is checking whether your portfolio site has a nice scroll animation. The site is packaging. The projects are the product.
The tutorial problem
Every reviewer can spot a tutorial project instantly, and the tell is not the subject matter. It is the absence of decisions. Tutorial code has no error handling on the paths the tutorial did not cover, no tests, commits that say “part 3”, and a README that is the framework’s default.
You do not fix this by picking an exotic idea. You fix it by taking the project somewhere the tutorial did not go: add a feature nobody told you to add, handle a failure case, write tests, deploy it, and then write down why. A blog engine with a thoughtful README about how you modelled tags beats a “Netflix clone” with no README every single time.
Four projects is the right number
Fewer than three looks thin. More than five and nobody looks past the fourth. Four is enough to show range without diluting attention, provided each one demonstrates something different rather than being the same CRUD app in four costumes.
A backend portfolio that works:
- A command-line tool. Unglamorous, and it proves you can write plain Python — file handling, argument parsing, error cases — without a framework doing the thinking.
- An object-oriented system with a test suite. This is your design sample. Classes with real responsibilities, custom exceptions, and tests that fail for the right reasons.
- A deployed web application. Authentication, roles, CRUD, file uploads, a live URL. This is the one they will click.
- A documented REST API. The senior-signal project. Authentication, permissions, pagination, tests, OpenAPI docs, and a Postman collection or Swagger UI they can try without installing anything.
The README is the highest-leverage file you will write
More candidates are rejected for an unreadable repository than for bad code, because bad code requires reading and an unreadable repo does not. A reviewer lands on your GitHub page and decides in fifteen seconds.
Structure that works:
- One sentence saying what it does, above the fold.
- Live demo link and API docs link, immediately.
- A screenshot or a curl example. Something visual before any prose.
- Stack, as a short list.
- How to run it locally — and actually test these steps on a clean machine.
- One paragraph on a decision you made and what you traded away.
That last section is the one almost nobody writes, and it is the one that changes the conversation. “I used JWT rather than session auth because the mobile client has no cookie store; the trade-off is that I cannot revoke a token before expiry, so access tokens live fifteen minutes” tells a reviewer more about your ability than the entire codebase underneath it.
Commit history is a portfolio too
Reviewers open the commits tab. What they hope not to see is four commits called “update” landing on the same afternoon, which reads as code pasted in from somewhere else.
Small, dated, descriptively-named commits tell a story of work happening over time. You do not need to be rigorous about conventional commits. You need it to look like a human building something incrementally, because that is what it should be.
Deploy everything. No exceptions.
An undeployed project is a claim. A deployed project is evidence, and the gap between the two is most of your credibility.
Deployment is also where you learn the things that separate you from other juniors: environment variables, static file serving, a production database, HTTPS, logging, and the specific misery of DEBUG=False revealing everything you had misconfigured. Free tiers are adequate for all of it.
One practical note: free tiers cold-start. If your demo takes thirty seconds to wake up, put a line in the README saying so, or you lose the reviewer before the page loads.
The portfolio site itself
Keep it boring and fast. One page. For each project: name, one sentence, the stack, a live link and a repo link. Above that, who you are in two lines and how to contact you. That is the whole thing.
Resist building an elaborate site. It is the most common way to spend three weeks producing something nobody evaluates, while your actual projects have empty READMEs. If you are a backend developer, a plain, quick, accessible site is not a weakness — the projects are where the argument lives.
Mistakes worth avoiding
- Listing technologies you touched once. Everything on that list is an invitation to be questioned.
- Committing secrets. Reviewers do look, and an API key in the history is disqualifying.
- A dead demo link. Worse than no link. Check them monthly.
- Private repositories. If they cannot read it, it does not count.
- A wall of tutorial clones. Four considered projects beat twelve forks.
- No contact details. It happens more than you would think.
A checklist before you send it
- Every demo link opens and works right now.
- Every repo is public, with a README following the structure above.
- At least one project has a visible test suite.
- At least one README explains a trade-off in your own words.
- No secrets anywhere in any commit.
- Your GitHub profile has a photo, a bio and a pinned selection.
- A stranger can find your email in under five seconds.
That list takes an afternoon and will do more for your applications than another month of learning a new framework.
The four-project structure above is exactly what students build on the Python & Django backend course, with the README and deployment work treated as part of the project rather than an afterthought. If you are weighing up what to specialise in first, the full stack vs backend post covers that decision.