If you yourself are a bad engineer or terrible at hiring, you might mistake the chaff for the wheat, but then you're doomed anyway.
I think you're not talking from experience.
The same thing happened with JS when that was peaky, and it'll happen in other languages too.
What is old is new again.
I've been hiring roughly the same amount for 10 years. I'm actually really extremely good at modern python. My skills with python syntax are so good that I can do in 1 line exclusively with generators what a junior programmer probably needs 10 lines and twice as much mutating state to pull off. My code is also likely more modular and neater then a junior but you have to realize none of this matters that much. My skill level with python is beyond the curve of what is necessary and so is any other developer that goes beyond 2 years with python.
In the end every programmer I ever hired exclusively for python will hit this tier within 1 or 2 years, very few exceptions. Roughly half of the junior programmers I hire are actually already within this tier upon getting hired. Literally before hitting there first job. After two years the only thing left to pick up are some more unique patterns and tricks but that's it.
I am 100% talking from experience.
It isn't unique to Python.
"Of what is necessary" is subjective. Regardless of the language or framework I'm hiring within they must have the same level of engineering skill. I've hired people for Python projects who were outstanding Go or Java programmers who never touched Python commercially.
My point is the language isn't relevant to your arguments.
That's why you're wrong.
There's also plenty of Python developers two years in (that I've interviewed and rejected) who couldn't write me a decorator or explain MRO.
There's plenty of 2-year Go programmers who can't deal with goroutines well.
First off both MRO and decorators can be learned in 1 week max by anyone. And one week is REALLY forgiving. Literally. You have to be mentally deficient not to be able to learn it. They simply didn't encounter the python feature in their experience. You would just reject them for not knowing about those features?
Second off decorators are syntactical tricks. You can get around python without ever using them. If you encounter them in libraries you just need to know what they do at a high level, you don't need to know how to implement them. If you ever do need to implement one just look it up. I don't judge people for not knowing syntactic tricks.
Third, MRO is something that should be not heavily used at all. You should avoid inheritance as much as possible. Additionally you should avoid double inheritance all together. The MRO/inheritance concept is a left over thing from an outdated programming style. At most you should know inheritance, and at most have one level of it if you must and try to use interfaces instead. Nowadays I expect only to see inheritance in existing libraries/tech debt and not newly written code from senior programmers. If someone encounters MRO issues, again, I just expect them to look it up.
I'll actually judge someone who expects others to know MRO given how outdated it is. I won't think they're stupid, or I won't not hire them or anything like that. I just know they aren't up to date with the current methodology but they can easily learn it if needed.
Overall, you're just setting a high bar artificially. It's like hiring janitors who only have phds in chemistry to know what's in the cleaning chemicals.
> Yes but the same timeline can be done for C, C#, Java or anything else.
No Java and C# languages are complex enough that it can be done in a 2 year timeline but these languages are hard enough that they are in a different class then python. C with memory management is harder then both java and C#. Memory management simply isn't intuitive.
Isn't all programming just syntactical tricks?
We have a fundamentally different view of these things. Mine is serving me well. Yours isn't challenging mine.
Let's agree to disagree.