The only reason to make a counter offer is because at least one of the (major) reasons an employee is leaving is money (and that's basically never the reason). People leave because it's not a fit. Money isn't going to make it a fit, so as a manager giving a counter-offer, if you know what you're doing.. you're buying time. Hoping the employee will take the offer and you'll figure out how to make them less important to you over the next N months. That's skeezy. Otherwise you don't know any better. You're a shitty manager and you're out of touch. It doesn't occur to you that you already have a team where your best is leaving, and now you'll spend the next N months making your best even more bummed out and less productive (especially since they're suddenly in the position of realizing how much leverage they have with you).
The whole thing is sad and terrible. If you're a manager and this happens, let it. Then turn around and figure out what your remaining employees need to be happy and fulfilled.
But yet, for many people, it does. In the grand scheme of all programmers (or any profession, for that matter), only a minority are doing it for the sheer passion of it. Most people are in it for the paycheck, and if they can get a larger paycheck without taking a substantially worse job... That's a sweet deal.
I don't believe this at all. Put another way: you're exactly right, but I'd combine two concepts you separate.
Everyone is working for passion/happiness. There's the net awesome that you get out of solving problems and building value at worth, and there's the net awesome that you buy with the money they pay you.
One way to look at it is that it all goes in the same pool and plusses-and-minuses until you have some score of how awesome your days tend to be.
I think that's the only reasonable way to look at it, and I don't buy the 'some of us are just working stiffs' bit that gets dropped into these threads on HN. I think more accurately, it's just generally speaking really hard to find an awesome job and eating and sleeping (under drywall) is expensive... So for lots of folks salary dwarfs work environment in priority.
The sad thing is that the comparison is generally done in a speculative vacuum. It's very easy to imagine what would happen if we made less (or more) money. That's pretty simple math. It's much harder to evaluate the benefits or drawbacks of a different work environment on our lives. Challenging math.
Oh, and that was a total tangent... to the point, in my example the employee is leaving for reasons other than money. So the premise kind of is the conclusion there. I was just being redundant. It's just a logical redundancy that lots of people in this situation seem to miss. Dollars do that.
No, everyone - either for the passion/happiness of the work, or the passion/happiness gained from the pay. Even having food to eat is a small happiness.
The only reason to make a counter offer is because at least one of the (major) reasons an employee is leaving is money (and that's basically never the reason). People leave because it's not a fit. Money isn't going to make it a fit, so as a manager giving a counter-offer, if you know what you're doing.. you're buying time. Hoping the employee will take the offer and you'll figure out how to make them less important to you over the next N months. That's skeezy. Otherwise you don't know any better. You're a shitty manager and you're out of touch. It doesn't occur to you that you already have a team where your best is leaving, and now you'll spend the next N months making your best even more bummed out and less productive (especially since they're suddenly in the position of realizing how much leverage they have with you).
The whole thing is sad and terrible. If you're a manager and this happens, let it. Then turn around and figure out what your remaining employees need to be happy and fulfilled.