Ah, the “if you don’t hire juniors, you don’t hire seniors” meme.
Let me put it from the employer’s perspective.
Juniors are not usually net contributors. They require a lot of support, usually from expensive senior developers. They need a lot of time, and they can’t get much done by themselves. They aren’t as highly paid as seniors but they are still quite pricey compared to most staff in a company. They want investment but are prone to jump ship as soon as their conditions improve.
Here’s how I’ve seen it happen with more than one junior: they join as a new grad and require a year of support before they’re competent. At this point their employment opportunities improve and they suddenly demand a big salary hike. Now the employer must either go through the process again or pay the same amount they would if they’d hired someone trained in the first place.
It doesn’t work. There’s no incentive. Juniors are a really difficult thing to justify in many teams. Many of them wash out or discover the job isn’t for them, so it’s not like a guaranteed return on investment. Companies routinely underestimate how much support juniors need and it burns them.
What we could really do with is extended education, maybe a four of five year process with industrial placements, and the extra years sponsored by an employer on condition of work. That’s how it works in other engineering sectors.