Skip to content

How to Write a Great Resume

Most people write their resume by listing everything they’ve done. That’s backwards.

A great resume starts with the target role. Read the job description, identify what matters, and lead with what’s relevant. Your resume isn’t a biography — it’s an argument for why you’re the right fit.

Recruiters spend 6-10 seconds on a first pass. Make those seconds count.

Recommended order:

  1. Contact info — name, email, phone, LinkedIn, location (city is enough)
  2. Summary — 2-3 sentences. Who you are, what you bring, what you’re looking for. Tailor this per role.
  3. Experience — reverse chronological. Most recent and relevant roles first.
  4. Skills — technologies, tools, methodologies. Match the language from the job description.
  5. Education — degrees, certifications, relevant coursework.

Skip the objective statement. Skip the headshot. Skip “References available upon request.”

Bad bullet points describe responsibilities. Good ones describe impact.

WeakStrong
Responsible for frontend developmentBuilt the checkout flow that increased conversion by 12%
Worked on the API teamDesigned and shipped 3 REST APIs serving 50k daily requests
Managed a team of developersLed a team of 5 engineers through a 6-month platform migration

The formula: Action verb + what you did + measurable result.

Not every bullet needs a number, but every bullet should answer: “So what? Why does this matter?”

The difference between a forgettable resume and a strong one is numbers. Recruiters skim — a number catches the eye instantly.

Description (weak)Metric (strong)
Upgraded Lambda functions to newer versionsUpgraded 50+ Lambda functions to LTS
Worked on shared packages across servicesUnified 10 services via shared npm packages
Improved test coverageAchieved 85% test coverage across 3 services
Built a data processing pipelineBuilt a pipeline processing 500K events/sec

How to find your numbers: team size, users served, requests per second, percentage improvements, number of services/endpoints/migrations, uptime SLA, release frequency, money saved or earned.

If you genuinely can’t attach a number, keep the description as context — but don’t put it in your bullet points. A resume bullet without a number is a missed opportunity.

Tailoring means emphasizing different parts of your real experience for different roles. It doesn’t mean inventing things you haven’t done.

For a frontend role: lead with UI work, component libraries, performance optimization. For a fullstack role: balance frontend and backend, mention APIs, databases, deployment. Same person, same experience — different emphasis.

Learn more about effective tailoring.

Too long. One page for early career, two pages max for senior roles. If it’s three pages, you’re including too much.

Generic summary. “Passionate developer seeking opportunities” tells the recruiter nothing. Be specific: “Backend engineer with 5 years in fintech, focused on high-throughput payment systems.”

Buzzword soup. “Results-driven team player leveraging synergies” — no one reads this. Use plain language and concrete examples.

Bad formatting. Inconsistent spacing, multiple fonts, walls of text. Keep it clean: one font, clear hierarchy, enough whitespace.

Missing keywords. Many companies use ATS (Applicant Tracking Systems) that scan for keywords. If the job asks for “React” and you only wrote “frontend frameworks,” the ATS might skip you. Use the same terms the job description uses.

Before you submit, check:

  • Is the summary tailored to this specific role?
  • Do your bullet points show impact, not just duties?
  • Are keywords from the job description present?
  • Is it one page (or two max for senior)?
  • Is formatting clean and consistent?
  • Have you proofread for typos?