It's much easier to simply find a better job without a John, or where you're shielded from John.
(My name breaks this analogy a bit.)
a) It's hard to identify a good manager ahead of time.
b) People change; circumstances change.
c) Your team and manager will change sooner than you expect, especially if they are a good team or manager.
Who stays anywhere more than 2-3 years now anyway?
My current manager where I work is pretty cool. We get along pretty well, and I don't mind working for them. However, I think my manager's manager is...umm, well, let's just say "not very good at their job", fairly close to the "John" in this story.
If my current manager quit or was fired or died, and I had to work for their manager, I probably would quit before I learned to effectively work with "John"; the job market is pretty good for engineers right now, why the hell not?
Agreed. But since so many middle managers are twits isn't it incumbent on the employee to learn a set of skills to deal with Johns?
Managing people is hard. Being a good manager is really hard, which is why there are so few of them.
Rather than rail against how terrible Person X is as a manager I feel like it's more productive to say, "Unless I start my own company there's always going to be some clueless middle manager above me. How do I deal with him/her effectively?"