Hiring developers is not just about filling a vacancy. It is a strategic advantage for the company that critically affects product quality and development speed. The IT industry has one characteristic: it is a talent market, where candidates dictate terms to employers. Against the backdrop of high demand for specialists and competitive battles for top engineers, each stage of the hiring process becomes critical. In this guide, we will explore the structure of the hiring funnel, assessment tools, common mistakes, and strategies that work in practice.
Structure and Roles in the Hiring Process
Main Stages of Developer Hiring Funnel
An effective developer hiring funnel includes several sequential stages:
1.Sourcing — finding passive candidates via LinkedIn, GitHub, communities
2.Resume screening — preliminary filtering by experience and technology stack
3.Technical interview — skills assessment (live coding, take-home assignments)
4.System Design interview — for middle and senior positions
5.Behavioral interview — soft skills assessment
6.Final round — meeting with manager / top management
7.Offer and negotiations — compensation, options, conditions
An effective developer hiring funnel includes several sequential stages:
1.Sourcing — finding passive candidates via LinkedIn, GitHub, communities
2.Resume screening — preliminary filtering by experience and technology stack
3.Technical interview — skills assessment (live coding, take-home assignments)
4.System Design interview — for middle and senior positions
5.Behavioral interview — soft skills assessment
6.Final round — meeting with manager / top management
7.Offer and negotiations — compensation, options, conditions
Key Roles in Hiring
IT Recruiter
Hiring Manager
Engineer Interviewers
Note: IT recruiters earn salaries 2-3 times higher than regular recruiters, while freelancers earn $3–5 thousand per successful developer hire closure.
IT Recruiter
- Handles sourcing and candidate screening
- Negotiates salary and conditions
- Manages the entire cycle from first contact to offer
- Requires deep knowledge of IT industry and company stack
Hiring Manager
- Technical leader who sets job requirements
- Conducts technical interviews or oversees them
- Makes final hiring decision
- Responsible for new employee outcomes
Engineer Interviewers
- Conduct live coding sessions and pair programming
- Assess solution quality, problem-solving approach, communication
- Provide competency feedback
Note: IT recruiters earn salaries 2-3 times higher than regular recruiters, while freelancers earn $3–5 thousand per successful developer hire closure.
Key Positions and Developer Levels
Types of Developers
Besides developers, IT includes: QA engineers, analysts, designers, PMs, administrators, security specialists.
Developer Levels (from Radford)
The Radford competency model is a universal system that helps categorize people by levels. Used by companies like Wargaming, Buffer, and many others.
- Frontend — interfaces, web applications (JavaScript, React, Vue, Angular)
- Backend — server logic, databases, APIs (Python, Java, Go, C++)
- Fullstack — frontend + backend + some DevOps
- Mobile — Android, iOS applications (Swift, Kotlin)
- Desktop — desktop applications (Electron, .NET, C++)
- Database — database optimization, data architecture
- DevOps — infrastructure, CI/CD, cloud
Besides developers, IT includes: QA engineers, analysts, designers, PMs, administrators, security specialists.
Developer Levels (from Radford)
The Radford competency model is a universal system that helps categorize people by levels. Used by companies like Wargaming, Buffer, and many others.
Important: Salary differences between levels are substantial. A Middle developer may earn 1.5–2 times more than a Junior, a Senior 2–3 times more than a Middle.
Where to Find Company Level Models
Many IT companies publish their competency models publicly ("sharing is caring" — IT culture). Check out:
Many IT companies publish their competency models publicly ("sharing is caring" — IT culture). Check out:
- Levels.fyi — comparison of levels and salaries in major companies
- BetterWiki — collection of competency models from various IT companies
- Github / Confluence pages — sometimes companies publish their levels there
- Payscale, Salary.com — market salary data for each level
Sourcing: Where and How to Find Developers
IT is a talent market, not a labor market. Top specialists do not look for jobs: they are already employed and receive regular offers. Simply posting a vacancy on a job board is insufficient — you need to actively search for passive candidates.
Main Sources of Candidates
1. Job boards (active candidates)
Pros: quick, already interested people Cons: high competition, often juniors and mid-level with <2 years experience
2. LinkedIn recruiting (passive search)
Tip: Don't send robotic "Hello! I'm inviting you to a developer position." Personalize: mention a project, technology, interesting fact from their profile.
3. GitHub / GitLab (code-based search)
4. Communities and Conferences
5. Referrals (gold standard)
6. Outbound hunting
Main Sources of Candidates
1. Job boards (active candidates)
- hh.ru, Habr Career (Russia)
- LinkedIn Jobs, Indeed
- Stack Overflow Careers
- GitHub Jobs
Pros: quick, already interested people Cons: high competition, often juniors and mid-level with <2 years experience
2. LinkedIn recruiting (passive search)
- Boolean search by technology stack: "React" OR "Vue.js" AND "TypeScript" AND "3+ years" AND Ukraine
- Targeted messages: personalized messages based on profile
- Recommended for Middle and Senior positions
Tip: Don't send robotic "Hello! I'm inviting you to a developer position." Personalize: mention a project, technology, interesting fact from their profile.
3. GitHub / GitLab (code-based search)
- Find active contributors in needed languages/projects
- Check code quality and consistency
- Find portfolio examples
4. Communities and Conferences
- Meetup.com for local communities
- Conferences (PyCon, RustConf, etc.)
- Slack/Discord channels for developers
- Forums (Habr, dev.to, Reddit r/programming)
5. Referrals (gold standard)
- Employees recommend friends / colleagues
- Referral bonus programs ($500–$5000 per successful hire)
- Often better candidate quality, higher results
6. Outbound hunting
- Directly reach out to candidates from competitors
- Email/LinkedIn for "cold" contact
- Requires persistence and good writing
How to Write a Job Posting That Attracts Top Talent
Typical mistake: Huge list of mandatory requirements (React 5+ years, TypeScript 3+ years, Node.js experience, Docker, Kubernetes…). Strong candidates don't apply, thinking "this is not for me".
Typical mistake: Huge list of mandatory requirements (React 5+ years, TypeScript 3+ years, Node.js experience, Docker, Kubernetes…). Strong candidates don't apply, thinking "this is not for me".
Correct approach:
``` Looking for Middle/Senior React Developer
What we do:
- Product for [description]
- Tech stack: React, TypeScript, Node.js
- Team of 8 engineers, remote
What matters:
1.Experience developing web applications (3+ years)
2.Knowledge of React or similar framework
3.Communication skills, interest in development
Bonus (not required):
- TypeScript
- GraphQL
- Startup experience
- English B2+
What we offer:
- $4–6k/month (depends on level)
- Flexible schedule, remote
- Equipment of your choice
- Healthcare, fitness, education benefits
How to apply:```
- GitHub profile or code samples
- Tell us why this role interests you
Key points:
- Be honest about requirements: Junior cannot be Middle
- Don't overload: no more than 5 main requirements
- Talk about company: culture, mission, interesting challenges
- Salary transparency: attracts better candidates
- Clear call to action: how and where to apply
Technical Interview: Tools and Methods
Live Coding vs Take-Home
Live Coding (algorithm on whiteboard / IDE, 45–60 min)
Pros:
Cons:
Take-Home Assignment (task for several hours, done at home)
Pros:
Cons:
Recommendation: Combine both. Take-home as first filter, live coding for finalization.
Live Coding (algorithm on whiteboard / IDE, 45–60 min)
Pros:
- See candidate's thought process in real time
- Can ask clarifying questions
- Tests stress resistance
Cons:
- Stressful, may eliminate good candidates
- Sometimes "whiteboard writing" matters more than logic
- Labor-intensive, requires 1 hour interviewer time
Take-Home Assignment (task for several hours, done at home)
Pros:
- Real conditions, candidate not under stress
- Can show code quality, architectural approach
- Candidate can spend as much time as needed
Cons:
- Don't see the process (others may have helped)
- Labor-intensive review
Recommendation: Combine both. Take-home as first filter, live coding for finalization.
Example Live Coding Task
Middle Level (30–45 minutes)
``` Task: Function to search for a target in a rotated sorted array
Given an array of integers sorted in ascending order, which was rotated at some point. Find the index of the target number. If not found, return -1.
Examples: Input: nums = [4,5,6,7,0,1,2], target = 0 → Output: 4 Input: nums = [4,5,6,7,0,1,2], target = 3 → Output: -1
Requirements:```
- O(log n) time complexity
- O(1) space complexity
What is assessed:
1.Problem understanding (asks clarifying questions?)
2.Approach (Binary Search? Brute force?)
3.Implementation (syntax, edge case handling)
4.Communication (explains solution?)
5.Optimization (after basic solution)
Typical interviewer questions:
·"Why did you choose binary search?"
·"How will you handle the case if target = 5?"
·"Are there any edge cases you missed?"
·"If you needed to find a range [target, target], how would you modify your solution?"
Behavioral Interview (for Technical Specialists)
Behavioral interviews assess not technique, but soft skills and ability to fit in the team.
Standard STAR Format Questions
STAR = Situation, Task, Action, Result
Question 1: "Tell me about a situation when you faced a conflict in your team. How did you resolve it?"
Poor answer: "I just told my colleague he was wrong, and then the manager agreed with me."
Good answer:
·S: There was a disagreement on the team: colleague wanted Node.js, I proposed Python for a microservice.
·T: We needed to choose a stack in 2 days.
·A: I proposed designing both approaches in 4 hours, comparing by metrics (development speed, performance, scalability). I had a discussion to understand my colleague's concerns.
·R: We chose Python, the project finished a week early, and my colleague said: "I see why you chose Python, good decision."
Question 2: "Tell me about a project you were proud of the code you wrote. Why were you proud of it?"
Question 3: "Was there a time when you made a mistake? How did you fix it and what did you learn?"
Good answer shows:
Question 4: "How do you learn new technologies?"
Red flag: "I just jump in and learn on the fly." Green flag: "I start with documentation, search for examples, read blog posts, then write a small project to understand basics. Then I dive deeper into specifics."
Standard STAR Format Questions
STAR = Situation, Task, Action, Result
Question 1: "Tell me about a situation when you faced a conflict in your team. How did you resolve it?"
Poor answer: "I just told my colleague he was wrong, and then the manager agreed with me."
Good answer:
·S: There was a disagreement on the team: colleague wanted Node.js, I proposed Python for a microservice.
·T: We needed to choose a stack in 2 days.
·A: I proposed designing both approaches in 4 hours, comparing by metrics (development speed, performance, scalability). I had a discussion to understand my colleague's concerns.
·R: We chose Python, the project finished a week early, and my colleague said: "I see why you chose Python, good decision."
Question 2: "Tell me about a project you were proud of the code you wrote. Why were you proud of it?"
Question 3: "Was there a time when you made a mistake? How did you fix it and what did you learn?"
Good answer shows:
- Responsibility (don't blame others)
- Reflection (understand what went wrong)
- Action (how I fixed it)
- Integration of learning (what I changed in future)
Question 4: "How do you learn new technologies?"
Red flag: "I just jump in and learn on the fly." Green flag: "I start with documentation, search for examples, read blog posts, then write a small project to understand basics. Then I dive deeper into specifics."
How to Make an Offer and Negotiate
Main Offer Components
``` OFFER LETTER
Position: Senior React Developer Level: L4 / Senior Salary: $6,000 per month (gross) Options: 0.2% of company pool (4-year vesting with 1-year cliff) Bonus: up to 15% for performance (annually) Vacation: 22 days + 5 sick days Remote: Yes, can work from anywhere Start date: 2026-05-15
Benefits package:
Trial period: 3 months (for both parties)
Appendix:
Compensation Negotiation
Why do developers ask for more?
Negotiation Scenario:
Candidate: "I was looking for around $7,500, but you're offering $6,000."
You (wrong): "That's the maximum we can offer."
You (right):
·"Thank you for being honest. Why do you need exactly that amount? What offers have you had before?"
·"We offer $6,000 base salary + 0.2% options (could be worth $10K–100K over 4 years) + up to 15% bonus. Combined, this could exceed $7,500."
·"Also we have flexible schedule, full remote, good tech stack. Is there anything besides money that's important to you?"
Options (equity) — how to explain
"You get 0.2% of company stock with 4-year vesting and 1-year cliff. This means:
·Until 1 year: nothing happens
·After 1 year: 25% of options unlock (~0.05%)
·After 4 years: all 0.2% is yours
If the company goes public or is acquired for $100M, your 0.2% could be worth $200K. But it's a risk — could also be $0."
Common Offer Mistakes
❌ Mistake 1: Slow process What happens: You take a week to decide on offer, candidate gets another offer in the meantime. Solution: Decide within 24 hours.
❌ Mistake 2: Weak offer What happens: You offer higher salary than competitors, but lower on options and benefits. Solution: Offer complete package, not just salary.
❌ Mistake 3: No feedback after rejection What happens: Candidate declined, you disappear. They may reconsider later. Solution: "Thanks for declining. If something changes, let us know. We're always open."
❌ Mistake 4: Pressure and rush What happens: "Need answer by Friday or we offer to another candidate." Solution: Give 3–5 days to think.
``` OFFER LETTER
Position: Senior React Developer Level: L4 / Senior Salary: $6,000 per month (gross) Options: 0.2% of company pool (4-year vesting with 1-year cliff) Bonus: up to 15% for performance (annually) Vacation: 22 days + 5 sick days Remote: Yes, can work from anywhere Start date: 2026-05-15
Benefits package:
- Health insurance (company pays 100%)
- Sports and wellness ($500 USD/year)
- Professional development ($2,000 USD/year)
- Home Office Setup ($1,000 USD one-time)
Trial period: 3 months (for both parties)
Appendix:
- Job Description
- Compensation details (options specifics)
- ```
Compensation Negotiation
Why do developers ask for more?
- Know their value (many offers in the market)
- Experience shows negotiation is possible (first offer rarely final)
Negotiation Scenario:
Candidate: "I was looking for around $7,500, but you're offering $6,000."
You (wrong): "That's the maximum we can offer."
You (right):
·"Thank you for being honest. Why do you need exactly that amount? What offers have you had before?"
·"We offer $6,000 base salary + 0.2% options (could be worth $10K–100K over 4 years) + up to 15% bonus. Combined, this could exceed $7,500."
·"Also we have flexible schedule, full remote, good tech stack. Is there anything besides money that's important to you?"
Options (equity) — how to explain
"You get 0.2% of company stock with 4-year vesting and 1-year cliff. This means:
·Until 1 year: nothing happens
·After 1 year: 25% of options unlock (~0.05%)
·After 4 years: all 0.2% is yours
If the company goes public or is acquired for $100M, your 0.2% could be worth $200K. But it's a risk — could also be $0."
Common Offer Mistakes
❌ Mistake 1: Slow process What happens: You take a week to decide on offer, candidate gets another offer in the meantime. Solution: Decide within 24 hours.
❌ Mistake 2: Weak offer What happens: You offer higher salary than competitors, but lower on options and benefits. Solution: Offer complete package, not just salary.
❌ Mistake 3: No feedback after rejection What happens: Candidate declined, you disappear. They may reconsider later. Solution: "Thanks for declining. If something changes, let us know. We're always open."
❌ Mistake 4: Pressure and rush What happens: "Need answer by Friday or we offer to another candidate." Solution: Give 3–5 days to think.
Advanced Candidate Assessment at Interview
A-player (Top performer)
Middle-performer
Company profit difference:
❌ Anti-patterns in Interviews
❌ "Hiring by resume" Candidate with beautiful resume may not solve simple problem. Solution: Live coding test is mandatory.
❌ "No feedback" Interview ends, candidate leaves not knowing why they didn't pass. Solution: Even if not hiring, give constructive feedback: "Good problem-solving, but didn't explain your process. Next time think aloud. For System Design, you need more practical experience. I recommend Designing Data Intensive Applications."
❌ "One interview decides everything" Candidate might not focus once. Solution: Minimum 3 interviews (technical + system design + behavioral).
❌ "Asking complex tasks for juniors" "Implement LRU cache, then write a load balancer." Solution: Match complexity to level.
- Asks clarifying questions (doesn't code silently)
- Proposes multiple approaches, then picks optimal
- Talks through thinking process aloud
- Reacts calmly to mistakes: "Oh, I forgot about the edge case"
- Writes clean code (variable names, comments, structure)
- Tests their solution themselves (doesn't wait for you to point errors)
- Asks: "What else can I improve?"
Middle-performer
- Codes without asking questions
- Writes code that works, but without optimization
- Reacts defensively to mistakes
- Dirty code (a, b, c instead of meaningful names)
- After finishing: "Done"
Company profit difference:
- A-player: writes code that works for 2–3 years without rewriting
- Middle-performer: writes code needing refactor after a year
❌ Anti-patterns in Interviews
❌ "Hiring by resume" Candidate with beautiful resume may not solve simple problem. Solution: Live coding test is mandatory.
❌ "No feedback" Interview ends, candidate leaves not knowing why they didn't pass. Solution: Even if not hiring, give constructive feedback: "Good problem-solving, but didn't explain your process. Next time think aloud. For System Design, you need more practical experience. I recommend Designing Data Intensive Applications."
❌ "One interview decides everything" Candidate might not focus once. Solution: Minimum 3 interviews (technical + system design + behavioral).
❌ "Asking complex tasks for juniors" "Implement LRU cache, then write a load balancer." Solution: Match complexity to level.
📋 Hiring Stages Checklist
Pre-hire (Before posting vacancy)
[ ] Position and level defined (Junior/Middle/Senior)
[ ] JD written with honest requirements
[ ] Compensation agreed ($X base + options + bonus)
[ ] Interview panel formed (3 people)
[ ] Test tasks and questions prepared
Sourcing (Search)
[ ] Posted vacancy on job boards (hh.ru, Habr)
[ ] Started LinkedIn recruiter search
[ ] Outbound messaging to top candidates
[ ] Requested referrals from team
Screening (Filtering)
[ ] Read 50+ resumes
[ ] Selected 10–15 candidates for first call
[ ] Conducted 30-minute intro calls (culture, motivation, level)
Technical interview (45–60 min)
[ ] Live coding or take-home assignment
[ ] Code pushed and discussed with interviewer
[ ] Feedback provided (what was good, what wasn't)
System Design (Senior / Middle, 45–60 min)
[ ] System designed
[ ] Trade-offs discussed
[ ] Depth of knowledge demonstrated
Behavioral (30–45 min)
[ ] Previous projects discussed (STAR format)
[ ] Communication and teamwork assessed
[ ] Candidate motivation understood
Offer & Negotiation
[ ] Decision within 24 hours
[ ] Offer sent with complete package
[ ] Negotiations completed or declined
Onboarding
[ ] First week planned
[ ] Buddy (mentor) assigned
[ ] Equipment ready (laptop, access, etc.)
[ ] Position and level defined (Junior/Middle/Senior)
[ ] JD written with honest requirements
[ ] Compensation agreed ($X base + options + bonus)
[ ] Interview panel formed (3 people)
[ ] Test tasks and questions prepared
Sourcing (Search)
[ ] Posted vacancy on job boards (hh.ru, Habr)
[ ] Started LinkedIn recruiter search
[ ] Outbound messaging to top candidates
[ ] Requested referrals from team
Screening (Filtering)
[ ] Read 50+ resumes
[ ] Selected 10–15 candidates for first call
[ ] Conducted 30-minute intro calls (culture, motivation, level)
Technical interview (45–60 min)
[ ] Live coding or take-home assignment
[ ] Code pushed and discussed with interviewer
[ ] Feedback provided (what was good, what wasn't)
System Design (Senior / Middle, 45–60 min)
[ ] System designed
[ ] Trade-offs discussed
[ ] Depth of knowledge demonstrated
Behavioral (30–45 min)
[ ] Previous projects discussed (STAR format)
[ ] Communication and teamwork assessed
[ ] Candidate motivation understood
Offer & Negotiation
[ ] Decision within 24 hours
[ ] Offer sent with complete package
[ ] Negotiations completed or declined
Onboarding
[ ] First week planned
[ ] Buddy (mentor) assigned
[ ] Equipment ready (laptop, access, etc.)
Example Interview Questions
Frontend (Middle level)
1. What is event delegation and why is it needed?
Checks: Understanding of DOM and performance
```javascript // Bad document.querySelectorAll('.item').forEach(item => { item.addEventListener('click', () => { / ... / }); });
// Good document.addEventListener('click', (e) => { if (e.target.classList.contains('item')) { / ... / } }); ```
2. Difference between `let`, `const` and `var`?
Answer interviewer is looking for:
·var — function scope, hoisting, outdated
·let — block scope, can't redeclare
·const — immutable reference (object can change, variable reference can't)
3. How to optimize React component performance?
·useMemo for expensive calculations
·useCallback for callbacks
·React.memo for Props
·Code splitting (lazy loading)
·Profiling in DevTools
1. What is event delegation and why is it needed?
Checks: Understanding of DOM and performance
```javascript // Bad document.querySelectorAll('.item').forEach(item => { item.addEventListener('click', () => { / ... / }); });
// Good document.addEventListener('click', (e) => { if (e.target.classList.contains('item')) { / ... / } }); ```
2. Difference between `let`, `const` and `var`?
Answer interviewer is looking for:
·var — function scope, hoisting, outdated
·let — block scope, can't redeclare
·const — immutable reference (object can change, variable reference can't)
3. How to optimize React component performance?
·useMemo for expensive calculations
·useCallback for callbacks
·React.memo for Props
·Code splitting (lazy loading)
·Profiling in DevTools
Tools for IT Recruiting
Essential Resources for Learning IT
Understanding IT Terms
Compensation Information
Competency Model Examples
Supporting Tools
Understanding IT Terms
- GlossaryTech — browser plugin highlighting tech terms on any page
- Tech Terms — site with 10 levels of knowledge depth (basic to expert)
- Habr (habr.com) — Russian-language articles on technology, developer network
Compensation Information
- Levels.fyi — levels and salaries at Google, Meta, Microsoft, etc.
- Payscale.com, Salary.com — average salaries by position and region
- Radford — level system used by major companies
Competency Model Examples
- Netflix Culture Memo — book "No Rules Rules" about company culture
- Spotify Engineering Culture — video on engineering culture
- BetterWiki — collection of competency models from various IT companies
- Work Rules! (Google HR) — book on recruiting at Google
Supporting Tools
- ChatGPT — ask for definitions, code examples, explanations
- Deepl.com — translator for documents and candidate communications
- Grammarly — plugin for English error checking
Building a Hiring Culture
How to Embed Good Practices
1.Document the process — write internal playbook for interviewers
2.Train interviewers — not everyone naturally knows how to interview
3.Give feedback to interviewers — if interview didn't convert, investigate
4.Track metrics:
5.Involve the team — developers want to participate in hiring
Knowledge-Sharing Culture
1.Document the process — write internal playbook for interviewers
2.Train interviewers — not everyone naturally knows how to interview
3.Give feedback to interviewers — if interview didn't convert, investigate
4.Track metrics:
- How many interviews → how many offers (conversion rate)
- What % of candidates pass technical
- Time from first contact to offer (cycle time)
- Retention of new hires at 6 months
5.Involve the team — developers want to participate in hiring
Knowledge-Sharing Culture
- Use GitHub for interview code examples (with candidate consent)
- Conduct retros after each hire ("What worked, what didn't?")
- Share best questions with team
- Publish articles about your hiring process (like Netflix, Spotify, Google)
Invest in the hiring process, and your company will benefit in terms of development speed, product quality, and team stability.
Hiring Software Developers is a course on how to search for and find developers. You'll learn about the different types of developers, the programming languages they work with, their differences, explore 30 specialized developer search resources, and how to formulate search queries. Learn how to evaluate and interview developers.