I find that in practice, it's a lot easier to do steps 1 and 2, then simply take one of those offers to work someplace else. Your value as a developer increases so fast early in your career that you'll literally double your market rate during the course of your first job after college.
There's simply no way that you can convey to a company that they need to pay you twice as much as they did when they hired you 3 years ago. They simply won't believe it. Sadly, the only way is to demonstrate it for them by actually accepting a job somewhere else for twice the money.
The key is to remember that you're in this game for yourself first. It's nice to work for a good company with a good environment and a fun team, but at the end of the day it's not worth leaving tens of thousands of dollars on the table just to stay there.
It's widely held that the best programmers are orders of magnitude better than the worst ones. [1] This also goes for you x years ago versus you now. Why this isn't reflected in pay everywhere is beyond me. While people exploit these inefficiencies (exhibit A:startups) I'm surprised that the market still allows things like this to exist. Perhaps it's because there isn't such a large disparity for the vast majority of other professions?
No, it's more likely the idea of "you don't get rich by writing checks" at work.
I think most programmers dislike the idea of what they see as kissing their boss's ass so much, that they'd rather start their own startup to get what they want (more interesting work, potentially higher pay, more amenable working conditions, etc). I can't say I blame them.
"There's simply no way that you can convey to a company that they need to pay you twice as much as they did when they hired you 3 years ago."
You can at smart small companies. My salary tripled in the 5 years I spent at my first programming job. I admittedly took a really small salary because I hadn't finished school and had no real world experience.
There's simply no way that you can convey to a company that they need to pay you twice as much as they did when they hired you 3 years ago. They simply won't believe it. Sadly, the only way is to demonstrate it for them by actually accepting a job somewhere else for twice the money.
The key is to remember that you're in this game for yourself first. It's nice to work for a good company with a good environment and a fun team, but at the end of the day it's not worth leaving tens of thousands of dollars on the table just to stay there.