Or you can hire juniors, and after a couple of years have a whole team of A-players.
It's like the story about the coach who watched two runners run the same time, one with perfect form and the other a total mess. He let the total mess onto the team, and the runner with perfect form got mad, "but I ran better than he did!!!" The coach replied, "I can't help you go any faster than you are, but the total mess is going to be incredibly fast with just a little form."
The juniors are doing negative work. I need people who are neutral or positive shortly after they come on board. Besides that, once a junior gets experience, they are going to jump ship.
My expectations of a mid level developer is once given mostly clear business requirements, they should be able to turn those requests into code. They should be able to handle any “straightforward” task I throw at them.
From the definition I have seen from leveling guidelines:
Straightforward problems or efforts have minimal visible risks or obstacles. The goal is clear, but the approach is not, requiring the employee to rely on their knowledge and skills to determine the best course of action.
I expect a senior to handle “complex” tasks.
Complex problems or efforts involve visible risks, obstacles, and constraints. This often requires making trade-offs that demand expertise, sound judgment, and the ability to influence others to build consensus on the best approach.
It's like the story about the coach who watched two runners run the same time, one with perfect form and the other a total mess. He let the total mess onto the team, and the runner with perfect form got mad, "but I ran better than he did!!!" The coach replied, "I can't help you go any faster than you are, but the total mess is going to be incredibly fast with just a little form."