At low status, your flaws are given prime focus and your assets, while acknowledged, dismissed as unimportant or countered with “yes, buts” which turn any positive trait into a negative. (...) If you are in a position where people emphasize your flaws and overlook your achievements, you have low social status (...). If the opposite is true, you have high social status.
A big part of the problem is that programmers are constantly trying to one-up each other (...) and prove their superior knowledge, drive, and intelligence. From the outside (that is, from the vantage point of the business operators we work for) these pissing contests make all sides look stupid and deficient. By lowering each others’ status so reliably, and when little to nothing is at stake, programmers lower their status as a group.
When we like our work, we let it be known. We work extremely hard. (...) This means the happy ones don’t get the raises and promotions they deserve (because they’re working so hard) because management sees no need to reward them, and that the unhappy ones stand out to aggressive management as potential “performance issues”. (...) we allow this “passion” to be used against us. Not to be passionate is almost a crime, especially in startups. (...) What most of us don’t realize is that this culture of mandatory “passion” lowers our social status, because it encourages us to work unreasonably hard and irrespective of conditions.
Executives, a more savvy sort, lose passion when denied the advancement or consideration they feel they deserve. (...) They want to be seen as supremely competent, but not sacrificial. (...) Executives are out for themselves and relatively open about the fact. (...) What executives understand, almost intuitively, is reciprocity. (...) They won’t fall into “love of the craft” delusions when “the craft” doesn’t love them back.
I believe there is an imporant lesson in this. I emphasise this part because it's not just "managers have it better than programmers", but it tries to explain why; what are the mistakes to avoid.
The core problem is probably the servant attitude: "I will do my best, and hope that my master will notice! And if he doesn't, then I will work even harder to show what a good servant I am!" This doesn't work, because it gives the master exactly zero motivation to do anything; he is already getting from you whatever he wants. What's the point of giving you more money or better working conditions, if in return you are going to do exactly the same thing you were already doing?
Your negotiation doesn't have to end at the job interview.
The most hilarious version is - and I am guilty of doing it - when asked "what is your biggest fault?" answering like "sometimes I am too perfectionist and cannot leave good enough alone" or something similarly ridiculously servant-like ass-kissing. I think it goes back to many programmers being low status marginalized nerds all through from childhood to college, and the chance of a REAL JOB with real respect is something they may feel very grateful for.
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.