True story: I once worked for place that at one point hired a front-end engineer who didn't know JavaScript. Nice guy, generally. But from my POV had listening skills that led to friction (and crap output for clients).
I was never able to wrap my head around the fact that within out team was a front end engineer who had no experience with JS. I don't want to work with a-holes but my job / career shouldn't be tied to someone who can't swim.
For real though, how on earth did that org hire a front-end dev who didn't know js?
God knows OpenGL ain't no joke.
Which I mean, if you're good enough for the job, that would be a meet expectations review, which I'd say counts as "good".
So having said that, my experience is that people who aren't at least good enough to get the job done do eventually get fired or stop moving up the latter, even if they are super nice. At least in the software engineering field, don't know about business or management tracks.
One thing that seems to get missed by a lot of people, is that if your profit margins are 90%, that means you can screw up almost every order as long as marketing and sales can bring in enough customers.
In a toxic work environment "sufficiently good" may still be "incompetent".