This is the first and most important thing to understand and know before entering a negotiation.
Without this fact, your negotiating ability is irrelevant (and kind of inherently non-existent), as you're operating blind.
With that being said: many do not know what they are worth, to their dismay.
> I refuse to see the relationship with an employer as adversarial
I frame as such: You're two businesses/professionals trying to reach a meeting of the minds. You both want the same thing.
I'm just curious.
I'll go first. I know developers that make 70 a year and some that make 120. It does depend where you live of course, but for me personally I need 90K minimum or I won't consider any gig, anywhere. If I can't get that, I go into subsistence living, doing odd jobs or finding a gig at McDonalds. But I won't lower my standards for dev services.
While 90 is a minimum, 95-110 is what I want. Depending on the role. If I were more senior, I'd want 120+.
I've not seen anywhere close to that number since (I opted for a $160k position in an industry I like, expanded experience, and the ability to work even as low as 30 hours a week should I choose to), but it has given me supreme confidence to turn down offers that don't have a minimum compensation along with my desired benefits/perks.
The key to me on top of that is that I am satisfied with that salary. It is not one that would make me look elsewhere with any urgency. Yes, I could try to negotiate more, but I feel no need to and believe that if I got more the company would be paying over market value and eventually realize and act upon that.
It sounds to me like you would be comfortable making around $100k and that if the market bears that for your services that is what you should demand. If the market doesn't support that for you, look at raising skills/experience until it does.
The odd thing is how much more you make by switching jobs versus a salary raise at companies. I am typically offered a 3%-5% raise but have typically increased my pay by 10%-20% by looking elsewhere. Companies really should assess the market more often.
I don't know exactly what I'm "worth" so that's why I like to ask around. I base what I'm worth off more the going-rate than I do me being a touch below or touch above the average employee. I'm not confident enough to demand 120 yet, but 120-180 is what I'd ask once I'm dominating interviews and able to pretty much make everyone else look like a fool.
I've found the same things on all your points. If anyone else wants to add in more salary datapoints please do so. Don't be ashamed of lower salaries, I have friends who work for 70K a year as C# devs and know full well they can make more. They choose to stay because they're comfortable. That's worth a lot too.
I make 90K now, but I work from home and am very comfortable. I know I can get 100K if I switch jobs and start going into an office again. It's not but may once I find the right place to land.
I'd encourage you not to sell your earning potential short by negotiating against yourself like this. C++ display driver writers sound more impressive and might be in shorter supply, but so are the companies that need them. Even if it's legitimately harder!
There are a lot of companies who bring in a lot of revenue off of web-stack stuff that need Python devs, and so are in a position where it makes sense for them to pay a lot for that skill set, and that's where the value side comes from.
If you got more specific and said "Django expert" or could sell yourself as such, I would think $140-160k base or more in SF would be totally achievable.
But again, it's very difficult to discuss productivity and skill levels in generalities.
It's also very difficult to discuss the variations in market wages across cities: Southern California in my experience punches even higher than the Bay Area. Adjusting for actual cost of living and taxes, actual take-home pay in Washington and Colorado often greatly exceeds the Bay Area.
Negotiating doesn't have to be adversarial. There are multiple strategies you could take to boost yourself without being adversarial.
In my experience, companies you actually want to work for will turn away the doormats.
I've actually spoken to a number of companies that have openly stated that they would not interview candidates that didn't request an amount greater than a certain dollar threshold (most recent one I can think of was >$160k base, Santa Monica).
This is the "we want skilled, assertive people" ideology taken to its conclusion.
Personally I'm not a hard negotiator (though I'm willing to walk away if my -- generally not super aggressive -- number isn't met), but I tend to move myself into technical leadership positions fairly quickly when joining a new org.
Good! My evenings and weekends are valuable to me and I want to work with people who value my time.
If they self-filter because they're a bad place to work, all the better.
I view it instead that I am offering a service. I am well aware of what my service is worth, what my financial needs are and what amount would make me feel satisfied with what I am being paid. So I tell them that number.
I also tell them that the number is only negotiable in the sense of benefit trade-offs. I have built into my "price tag" such things as medical payments, etc. If they can offset some of those from salary to benefits that does not bother me. In the end my needs are met and I am happy.
I refuse to see the relationship with an employer as adversarial. It is a business relationship, I treat it as such and demand they do as well. Otherwise I don't do business with them.