2024, a consulting job. The client wants the team bigger. Deadline in six months, budget tight, market expensive. The obvious line: hire a junior, they are cheaper.
I said no. Not because juniors are bad. Because the sheet does not add up.
This is the sheet I put on the table.
- Recruiting: 40 hours × $75 = $3,000
- First month of onboarding: 80% of a senior, 0.8 × $6,250 = $5,000
- Junior salary for three months: 3 × $3,000 = $9,000
- Review and mentoring in months two and three: 40% of a senior, 0.4 × 2 × $6,250 = $5,000
Investment for the quarter: $22,000.
Output versus a mid-level: month 1 about 10%, month 2 about 30%, month 3 about 50%, months 4-5 about 70%, then 80-90%. The month that stops being a loss is the end of month five. The project closes in month six. Net profit never gets born.
We hired a mid-level at $5,000. Productive in two weeks, did not eat the senior, closed the critical work on time. Saved about $10,000 in unreturned investment plus the risk of missing the date.
People look at $3k on the payroll. They do not look at the $7.5k this person actually costs in the first three months.
The full bill for year one
External recruiter $2,000-3,000, internal HR $750-1,250, interview time $500-750. Before day one you are already at $3,250-5,000.
Average junior Python/JS salary in 2025: large cities $2,500-3,750, elsewhere $2,000-3,000. I use $3,000. Year on payroll $36,000, taxes about 43% add $15,480, together $51,480. Laptop, monitor, licences, office, Jira and GitHub: another $8,375. Direct cost of the year: $63,105, about $5,259 a month.
Then the part that is not in the budget.
Month 1: codebase walkthrough 20 hours, review 40, pairing 32, questions 20. About 112 hours, 70% of a senior. Months 2-3: review 8 hours a week, consults 4, about 48 hours a month, 30% of the rate.
Senior $6,250 on payroll, about $9,000 with tax. Hour $56.25. Onboarding: 112 × $56.25 = $6,300 plus 48 × 2 × $56.25 = $5,400. Together $11,700.
Junior code takes two or three review rounds, in six months 20-50% wants a rewrite, production bugs run higher. Roughly: plus 10 review hours a week for half a year, 40-80 hours of refactor, 20-40 on production holes. About 400 hours × $56.25 = $22,500 in six months.
A team of five (two seniors, two mids, one new junior) costs about $30,500 a month without the junior. Minus 10-15% speed for the first quarter: $4,575 a month, $13,725 for the quarter.
Juniors leave more often. After a year 60-70% remain, mids sit at 80-85%. Chance of leaving in year one: 30-40%. If they leave at month six, hiring, teaching and unborn output all burn.
| Line | Amount |
|---|---|
| Direct (pay, infra, hiring) | $63,105 |
| Onboarding and mentoring | $11,700 |
| Review and debt | $22,500 |
| Team slowdown | $13,725 |
| Year total | $111,030 |
| Per month | $9,252 |
A person on $3k costs about $9,252 a month in year one. Three times the number on the sheet. Turnover risk sits on top.
When a month stops being a loss
One hundred percent here is a mid-level. A mid in a product or outsource shop brings about $12,500 a month and costs about $7,250 with tax.
| Month | Output | Contribution | Full cost | Gap |
|---|---|---|---|---|
| 1 | 10% | $1,250 | $13,050 | −$11,800 |
| 2 | 30% | $3,750 | $10,650 | −$6,900 |
| 3 | 50% | $6,250 | $10,275 | −$4,025 |
| 4 | 70% | $8,750 | $8,000 | +$750 |
| 5 | 70% | $8,750 | $7,250 | +$1,500 |
| 6 | 70% | $8,750 | $7,250 | +$1,500 |
| Half year | $37,500 | $56,475 | −$18,975 |
A single month turns positive between four and five. The pile of losses from the first three only clears around months eight and nine. A horizon shorter than nine months: a junior as a bet does not add up.
On those same six months a mid costs $43,500 and brings $75,000. Plus $31,500 against minus $18,975. About $50k in favour of the mid.
Past a year the picture changes. By year end a junior gives about 90% of a mid and costs 40% less. If they stay, you get a mid who already knows your code. That is a different deal.
Where the sheet adds up
A long product, horizon over a year, onboarding exists, mentors have hours, the team is not leaking.
A SaaS shop, ten people, a three-year plan. Over two years a junior costs about $174k and brings about $215k, plus $41k. A mid on the same stretch is plus $126k. In year three the junior catches up. In years four and five, if they grew and stayed, they start to win on price.
A large team. Twelve people, three seniors, one of them gives 20% to three juniors: 6.6% of the rate per person, about $1,750 a month instead of $6,250 in a one-to-one setup. Review is already a process, onboarding is not invented from zero.
A conveyor of simple work. Bugs, tests, pattern refactors, ready APIs, CRUD. If that is 60% of the backlog, after month three a junior closes it without a constant hand. Mids and seniors move to work that brings money.
A two-to-three-year pipeline when mids are scarce or start at $6,250-7,500. Growing your own costs about $175k and gives someone who knows your code. Pay rises in steps, not in a jump.
Where the money burns
Shorter than nine months: minus $15-25k, as in the opening.
A team under five. In a three-person startup the senior gave 60% of the first quarter to the junior. The product stalled, the date slipped, the investor started writing in capitals. They swapped in a mid, speed doubled.
A hard product: high load, distributed, fintech, health, undocumented legacy. One N+1 on a critical endpoint passed review, the database died at peak, two hours down, $12,500 of revenue. The salary saving left in a single incident.
No mentoring. Review as a checkbox, no 90-day plan, no weekly talk, the junior thrown in the water. They do not grow, they leave in a quarter, $37-75k burns.
Production bugs: a mid 1-2 a month, a junior 3-5 in the first half year. An extra bug is 2-4 hours of digging, 1-3 to fix, and $250-$12,500 of revenue if it is critical. Conservatively $2,500-3,750 a month on top. Plus 20-30% of the code rewritten in six months, $3,750-7,500.
A senior leaving because they mentored forever and the junior did not grow costs $12,500-37,500 to replace. That is no longer a "cheap rate".
How to pull payback closer
Structured onboarding gets them to 70% in three months instead of six and saves about $12,500. The process is in the piece about 42%. Short version: day one with access and a map of the code, week one simple bugs, week two a small feature, then a gradient. Half an hour a week with a mentor. Review that explains, not grades. Pairing for the first two weeks.
Alternatives if the sheet fails. One-off chores: outsource at $50-80 an hour, no onboarding. A summer intern at $750-1,500 a month as a filter, output 0-20% of a mid. You already have a junior: $1,250-2,500 a year in courses and plus 10 mentor hours a week can turn them into a mid in 12-18 months instead of two or three years.
Before an offer I walk four shelves. Horizon over a year, $12.5-25k budget for the entrance, payback shorter than the horizon. Team bigger than five, the mentor has 20% of their time. More than half the backlog is their level, the tickets are written, not about security and not about peak load. There is an adaptation plan, grades, a reason to stay after six months.
Ten to twelve yeses: you can call. Seven to nine with open eyes. Five to six is already a lottery. Under five, take a mid. Seven yeses and a hard production system: still a mid.
One formula: contribution over N months minus full cost over the same N. Contribution is a share of a mid. Cost is pay, tax, hiring, teaching, review, team slowdown. Above zero by the end of the horizon: hire. Below: hire a mid. Count before the offer, not after the first production surprise.


