I am not sure about other professions. Maybe researchers also fit this pattern, but there are probably less researchers than programmers, so the typical person is this position would still be a programmer.
The pattern is approximately this:
The essence of the company is selling the things you do. Those are very complex things that other people in the company mostly don't even have a clue about. You create the magic, the rest of them provide you an infrastructure. (Which of course is important. Without selling to the customer, without doing the paperwork, etc. you wouldn't make money. But still...) There are very few people able to do this magic, and everyone complains about lack of them. A random person taken from the street probably couldn't replace you even in five years of training. Just doing what they taught you at school and following orders in the work would not be enough; you need some talent, curiosity beyond your work. -- And yet, somehow, you are usually treated as an unimportant person, your opinions about the process are irrelevant, sometimes you are even not given adequate tools. When the magic works perfectly, it's merely business as usual. If the magic somehow breaks, you are treated like an incompetent idiot.
And the worst part is that some of your colleagues actively participate in this pattern. They take personal pride at not doing anything that would resemble an union; they play negative-sum games against their colleagues. For example: The manager tells you you should do something in 2 hours, which is an obvious planning fallacy. Based on previous experience, you say it takes 4 hours. One of your colleagues starts contradicting you, saying that you "only" need to do this and this (making it sound really trivial by ignoring all the technical details and all things that could go wrong), and that actually 1 hour should be enough. He simply couldn't resist an opportunity to signal that he is smarter than you; because signalling "I am smarter than you" is what this loathsome little shit does as automatically as breathing (he probably subconsciously expects that his mommy would be so proud of him what a smart little boy he is). But the end result is that you all have a lot of work and not enough time to do it properly, bad working conditions and tools (because the same little shit will argue that state-of-the-art tools and quiet workplace are not really necessary for someone as smart as him), and you somehow succeeded to make each other seem incompetent despite being a very small fraction of population that even has a clue about the magic you are doing. Sigh. So technically smart, so socially stupid.
It's not just about signalling intelligence. Lawyers also signal intelligence. But they don't signal it by saying: "Look ma, I can do it much faster and much cheaper than he can, ain't I smart?" Because anyone socially savvy can see it actually isn't that smart.
I'd say: start respecting yourself and respecting your colleagues who are competent at what they do. (If someone is clearly incompetent, and is a shame to the profession, that's another thing. But if they merely take a bit more time to implement this, or they have a little less experience with that, because they are younger or specialized at something else, just let them breath. Let the managers judge whether they are adequate, it's not your job.) There is a lack of programmers; everyone is complaining about the lack of programmers. So don't act like your only option to survive is to cut your colleagues' throats. Aim for "everyone is good, I am super-good" image, instead of "I am okay, everyone else is an idiot".
Sigh. Trying to make nerds cooperate is probably futile, because most of us are too clever to win. When given a choice between having a cake and having your mommy be proud of you, we usually throw away our cakes and our potential allies' cakes, too. It takes a while to realize that being hungry sucks.
There is a lack of programmers; everyone is complaining about the lack of programmers.
By the way, how long do you think will it last, with current popularity of learning to code, coding bootcamps, MOOC etc.?
Here is an interesting blog post about a guy who did a resume experiment between two positions which he argues are by experience identical, but occupy different "social status" positions in tech: A software engineer and a data manager.
The author concludes that positions that are labeled as code-monkey-like are low status, while positions that are labeled as managerial are high status. Even if they are "essentially" doing the same sort of work.
Not sure about this methodology, but it's food for thought.