But a more productive approach when confronted with the fact that "negotiation skill seems to have more bearing on how much I can make than technical skill" might be to just take advantage of that fact. If tech folk are as generally bad at negotiating as everybody here seems to agree, the best course would seem to be to simply get better at negotiating.
That's actually quite easy to do. And if you do so, you'll make a lot more money.
That's a good thing.
Boom! Good idea. Tech people are generally super confident about their abilities to learn things fast. Negotiating is just another skill in your career tool-kit (and a very lucrative one, in my experience).
I didn't say it's a technical skill - but it is a human skill, that can be learned.
Negotiation is stressful, a waste of time and not interesting at all for many software developers. It would just be better for the public good for no salary negotiations to take place, because people would worry less about being underpaid. Less stress is almost always good for work productivity. And there will be more justice.
Just have clear salary guidelines for every engineer level. Levels would be public and so would be salaries, bonuse, stock grants and performance reviews.