Skip to content

GitHub

How to Make Your GitHub Profile Look Professional

For most junior applications this is the first thing a technical reviewer opens. Four passes, about two hours, and the first impression changes completely.

GitHub11 min readUpdated
Short answer

What does a professional GitHub profile need?

A profile README saying what you build, your best repositories pinned, a filled-in bio with your portfolio link, readable repository names with descriptions, a proper README on every pinned repository, and no secrets anywhere in your commit history. Everything else is optional.

What a reviewer is actually doing

A technical reviewer opening your GitHub is answering three questions, usually in under two minutes: does this person write code regularly, can they finish something, and can they explain what they built?

Note what is not on that list — repository count, streak length, star totals, and whether you use the trendiest framework. Optimise for the three questions that actually get asked.

github.com/priya-raman

Priya Raman

priya-raman

Final-year CS student. I build APIs and data pipelines in Python and Go.

Pinned

society-events

Event sign-ups for university societies

Python12

log-analyser

Stream and query logs larger than memory

Go8

devkit

Everyday developer utilities as one binary

Go24

deadline-tracker

Coursework deadlines in one place

TypeScript5

The target: a profile where the first six repositories a reviewer sees are ones you chose.

Pass 1 — Your profile page

About 30 minutes, and it changes the first impression more than anything else here.

  • Create a profile README. Make a repository named exactly the same as your username, add a README.md, and it renders at the top of your profile. Keep it to about 150 words.
  • Say what you build in the first line. “Software engineering student at [university]. I build web applications in TypeScript and Python.” Skip the animated banner and the visitor counter.
  • Fill in bio, location and website. The website field should point at your portfolio, or your CV if you do not have a site yet.
  • Use a real photograph. The default identicon reads as an abandoned account.
  • Pin up to six repositories. This is the single highest-leverage action available to you, because it decides what gets judged. Four excellent ones beat six uneven ones.
  • Add a short “currently learning” list. It gives an interviewer an easy opening question.

Pass 2 — Remove the noise

Everything a reviewer can see that you would rather they did not.

  • Archive abandoned repositories. Settings → General → Archive. It keeps the code and marks it read-only, which is honest and tidy at the same time.
  • Delete forks you never contributed to. A wall of untouched forks makes real work harder to find.
  • Rename meaningless repositories. cs2043-assignment-3 becomes library-lending-system. GitHub redirects the old URL, so nothing you have linked elsewhere breaks.
  • Add a description and topics to every public repository. The description shows in search results and on your profile grid; an empty one looks unfinished.
  • Check your history for secrets. This one is not cosmetic.
  • Confirm your commits are attributed to your account. If they show a different name, your git config user.email does not match a verified email on your account.

On secrets: search your repositories for .env, api_key, password, secret and token — and check the history, not only the current state. Deleting a file does not remove it from previous commits, and a key committed six months ago is still readable by anyone who clones the repository.

If you find one, rotate the key first. Assume it is compromised. Then add the file to .gitignore, add an .env.example with placeholder values, and rewrite the history if you want it clean.

Pass 3 — Each pinned repository

Repeat for each one you pinned. Budget about an hour per project.

  • The README opens with what the project does and who it is for — not the install steps
  • There is a live link or a screenshot near the top
  • The tech stack is listed explicitly
  • Setup instructions actually work from a clean clone — test them in a fresh folder, this fails more often than people expect
  • There is a .gitignore appropriate to the language: no node_modules, no __pycache__, no .venv, no IDE folders
  • There is an .env.example if the project needs configuration
  • There is a licence — MIT is a fine default for portfolio work
  • The main branch builds and runs

Do one properly rather than eight badly. A single excellent README on a pinned repository changes more than eight mediocre ones, because a reviewer reads the first one and forms their view there. The README template has the full structure.

Pass 4 — Signals of a working developer

Optional, and each is visible evidence of professional habits. Pick one or two rather than all of them.

  • Commit messages that describe the change. “Add rate limiting to the auth endpoint” rather than “fix”, “update”, “asdf”. A reviewer skimming your history should be able to follow the build.
  • A pull request on at least one project. Even solo. Open one against your own main branch, write a description, merge it. It shows you know the workflow every team uses.
  • Tests, however few. Five meaningful tests beat a coverage badge. Say what they cover in the README.
  • CI running on push. Roughly fifteen lines of YAML, and it adds a green tick to every commit.
  • Issues used on at least one project. It shows you can break work down, which is most of what junior engineering is.

Repository structure

A reviewer opening a repository is looking for the things they expect to be there. Missing them is a small signal that adds up.

library-lending-system/

  • .github/
    • workflows/
      • ci.yml# tests on every push
  • docs/
    • demo.gif# shown at the top of the README
  • src/
    • ...
  • tests/
    • ...
  • .env.example# variable names, placeholder values
  • .gitignore# language-appropriate
  • LICENSE# MIT is fine
  • README.md# the one that matters

Adding CI

Fifteen minutes for a disproportionate return. Create .github/workflows/ci.yml:

.github/workflows/ci.ymlyaml
name: CI

on:
  push:
    branches: [main]
  pull_request:

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: npm

      - run: npm ci
      - run: npm run lint
      - run: npm test

Swap the setup step for your language — actions/setup-python, actions/setup-go, actions/setup-java — and the run steps for your commands. Add the status badge to your README afterwards.

About the green squares

The contribution graph is the most over-thought thing on GitHub. Nobody rejects a candidate for a quiet March, and streak-padding commits are obvious to anyone who opens the diffs.

What a reviewer takes from the graph is roughly “does this person write code with some regularity”. A scattered but genuine pattern answers that fine. Consistent, readable commits on two or three real projects matter far more.

What to fix first

SituationFix this firstWhy
No pinned repositoriesPin your best threeYou are letting GitHub choose what gets judged
Pinned repos have no READMEsWrite one README properlyAn undocumented project cannot be assessed, so it counts for nothing
40 repositories, mostly courseworkArchive everything except sixSignal beats volume. Reviewers do not dig
Nothing deployedDeploy one projectA working link is the strongest single piece of evidence you can add
Everything looks like assignmentsExtend one into a real toolScope, deployment and a real user turn coursework into a portfolio project

The whole cleanup is about two hours and it is worth roughly a week of new feature work. Start with pinning.

Common questions

Does my GitHub contribution graph matter?

Far less than people think. Nobody rejects a candidate for a quiet March, and streak-padding commits are obvious to anyone who looks at the diffs. Consistent, readable commits on two or three real projects matter considerably more than an unbroken streak of green squares.

How many repositories should I have on GitHub?

The count that matters is how many are pinned, not how many exist. Four excellent pinned repositories is a strong profile; thirty mediocre ones is not better. Archive or make private anything you would rather not be judged on — archiving keeps the code and marks it read-only, which is both honest and tidy.

Should I put university assignments on GitHub?

Yes, if you upgrade them first. Deploy it, write a real README, add one feature nobody asked for, add a few tests, and rename it something readable. At that point a reviewer cannot distinguish it from a personal project. Check first whether starter code from your department can be published — usually it can, occasionally it cannot.

What should a GitHub profile README contain?

About 150 words: what you build in the first line, what you are currently learning in two or three lines, and how to reach you. Skip the animated banner, the visitor counter and the trophy widget — they push the actual information below the fold and add nothing a reviewer values.

Do I need open-source contributions to get a junior job?

No. It is a nice-to-have rather than a requirement for junior roles. If you want to, documentation fixes and issues labelled 'good first issue' are the sensible entry point — a merged pull request into a project other people use is evidence of working within someone else's codebase and review process, which is precisely what a junior job is.

Want the complete 14-day system?

Developer Portfolio Builder takes you from “I need a portfolio” to application-ready in 14 days: seven modules, 30 project briefs, every template, and a 100-point scorecard to check your work.

See what’s included