"the first is that they usually actually like their jobs. As long as they get to work with the cool tech and the neat toys, they’ll sleep under their desks if they have to."
I have never seen anyone like that who for example have a family... Only very young and very naive people do this; maybe there are lots of them, but I don't think they are the majority.
"our average programmer approaches salary negotiations like this:
(1) I need ‘x’ to survive.
(2) It would be nice to save a bit.
(3) I need to pay my taxes."
That seems to be a strawman. I mean some very young and very naive programmers would do that, but all my programmer friends do this:
(1) I am a fairly good C++ developer.
(2) I ask all my fairly good C++ programmer friends how much they are paid in the country where I live. I also ask them which are the companies which pay wel, so that I will apply to those.
(3) I try to ask for the upper part of that range, at the companies I have heard pay well. I try multiple companies.
And basically that's what you can do. Bigger companies are mostly looking for replacable people. They mostly need 'good C++ programmers'/'good enterprise java developers'/'good web developers' etc... and will train you in their special systems. They will not care about your reasoning about how much business value you bring to their company: First that is so hard to measure that you cannot measure that, second they just do dozens of interviews with other people, and will simply hire other people if you want bigger pay than the realistic market range.
When you are a big gun or a specialist with some very unique skills, or when you are talking to a smaller company who have no established policy on developer salaries than there is more to it. But for most people at most companies: You just have to know the typical salary 'your kind' can get, and you have to ask for that, and that is all to it.
Programmers are mostly a commodity, but a quite well paid commodity at most companies. Which means that you can get a quite good salary without having extremely good negotiation skills (just using the heuristic I described), but you cannot get much more whatever negotiation skills you have.