If anything, I think flow does not go far enough, compared to compiled languages with type systems. The fact that it allows to mix typed and non typed code is error prone, and there are annoying edge cases, like the spread variables not being correctly checked for (this can cascade quickly, when passing properties in react). I would love to see types as a core part of the language, with native browser tooling.
Belief that one can just "write good code" and you don't need types/tooling/linting etc is a sure sign of a still inexperienced developer.
Actual senior developers are much more humble and use all the help they can find.
sure, this is raison d'etre of package managers like NPM.
If any level of your tech stack offers you guarantees, use them so that you have less code to write. Less code is less opportunity for bugs and faster development.
AND
using good code.
If a "Expert" have the option between use something that solve more problems better than other, is NOT a expert to not use it. Is just masochist.
My impression is that most companies experience a shortage of talent such that they take in greener members with each passing year. Ideally they should have the best conditions to turn out good quality code before they get to an advanced level. The tooling plays a big part.
Moreover, companies are biased more against older people then young. Which gives us few yes when we are hiring magically appearing seniors - after they got experience (elsewhere) and before they are old.
Yes, advanced programmers make these mistakes too, and they find tools like this helpful in catching them. That's why Microsoft created TypeScript. That's why Facebook created Flow. Facebook and Microsoft are two companies I wouldn't call beginner or intermediate.
2. Never I suggested that MS and FB are beginners.