March 2026 · 6 min read
How to Write a Technical Job Description That Actually Attracts Good Engineers
Most technical JDs are terrible. They read like a wish list written by a committee. Here's how to write one that attracts the engineers you actually want.
Let's be honest about what most technical job descriptions look like: a wall of bullet points, a laundry list of technologies, "5+ years experience required" for a tool that's been around for 3 years, and some boilerplate about being a "fast-paced, collaborative environment."
Senior engineers — the ones you actually want — see through this immediately. They've read hundreds of these. When yours looks like every other one, they scroll past it.
The problem with most technical JDs
They're written for the company, not the candidate. They list what the company wants — skills, experience, qualifications — without telling the engineer what's in it for them. Good engineers have options. You're not just screening them; they're screening you.
The second problem is vagueness. "Work on exciting products" and "opportunity to grow" tell experienced engineers nothing. They want specifics: what's the stack, what's the team size, what are you actually building, what does a good day look like?
The structure that works
Here's the structure we've found works for technical roles, based on what consistently attracts strong applicants:
1. About the role (2–3 sentences)
What will this person actually do? Not the team mission — the role. "You'll own the frontend, work directly with the CTO, and ship features that go in front of 50,000 users." Specific, concrete, human.
2. What you'll be doing
5–7 real responsibilities. Not "contribute to the team" — actual tasks. "Design and build React components from Figma specs." "Own the API integration layer." "Participate in weekly architecture reviews."
3. What we're looking for
Split this into must-haves and nice-to-haves. A list of 15 requirements where everything is mandatory is a red flag to good engineers — it signals you don't know what you actually need.
4. What we offer
Be honest and specific. Salary range (yes, include it — it filters correctly and saves everyone's time), remote policy, equity if applicable, team size, what the product is.
What to avoid
- The impossible stack: "React, Vue, Angular, .NET, Python, AWS, GCP" in the same role. Pick the ones that actually matter.
- Years of experience for specific tools: "5 years of Kubernetes experience" for something that wasn't production-ready 5 years ago.
- Degree requirements: Unless it's genuinely required (regulated industry, security clearance), drop it. It eliminates strong self-taught engineers for no reason.
- Corporate filler: "Fast-paced environment," "passionate about technology," "team player." Everyone says this. It means nothing.
The salary question
Include a salary range. Every time. Yes, even if you're worried about setting expectations. A hidden salary means every applicant has a different number in their head, and you'll waste hours of interviews only to lose the candidate at offer stage. Transparency here signals maturity.
Not sure what the market rate is? For UK tech roles in 2026, a senior frontend engineer in London typically runs £65,000–£90,000. Senior full-stack is £70,000–£95,000. A comparable Philippines-based remote hire costs roughly 40–50% of those figures with equivalent technical quality.
The fast way to do all of this
Writing a good JD from scratch takes 1–2 hours if you do it properly. RoleKit does it in 30 seconds. You paste a rough brief — the same notes you'd give a recruiter — and get back a complete, structured hiring pack: JD, candidate scorecard, interview questions, salary benchmarks, and a LinkedIn post draft.
It's not a replacement for your judgment, but it gets you 90% of the way there instantly.
Generate a complete hiring pack in 30 seconds
JD, scorecard, interview questions, salary benchmarks and LinkedIn post. First pack is free.
Try RoleKit free →