* beginner or crappy
* moderate or senior-delusional
* seniors/experts
Most of the time the actual seniors are not the people trying to prove themselves or validate their existence. They honestly know how they perform. If the current job doesn't work out they know they can get another easily enough. If anything this camp may even try to hide some of their skills to avoid getting pegged into those crappy tasks you cannot seem to hire anybody else for.
The middle group is composed of people who are honest about their station in life. These honest people are happy where they are and aren't dicking around with office politics, but they do play the game just enough to avoid rocking the boat.
Then there are the dishonest people in the middle group. Sometimes this dishonesty is intentional because they are an imposter... to the point of fraud. Usually, the dishonesty is unintentional. These people are often disillusioned into thinking they are some sort of senior level rock star but curiously wonder why their management completely disagrees. These people are easy to spot because they talk a big game and their work is hilariously out of sync with the hot air.
Warning. Dishonest people are dangerous to your career and will run you over because they are too busy looking out for themselves. If you challenge their dishonesty they may put up a fight that pits you are as the evil aggressor. If you don't challenge the stupidity you can easily get stuck cleaning up their code failure. Pick your battles wisely.
Likewise there are honest beginners who understand their station in life and are eagerly learning to improve their skills. These are the people you dream of mentoring. Then there are also really crappy developers who can't figure out why nobody wants to mentor them or why they always get the worst assignments.
In a hierarchical organization I can usually hide from this stupidity well enough. I can only imagine the horrid levels of back-stabbing that occurs in a flat organization.