Many, many years ago in my first job developing software I made the worst possible mistake and asked for an absurdly low salary out the gate. I was happy just to be paid to code at all, and I was utterly naive about how money truly drives the entire software industry. It took a few months until I realized how badly I cheated myself so I asked the boss/owner of the company (a small non-startup, less than 10 employees) for something like a 50% raise. I knew I had to slightly highball to get the going fair market amount, since nobody in this world can just be honest about money, so I expected the boss would counter-offer with a lower rate. The boss avoided me for two weeks straight, he shut himself in his office, constantly had his phone glued to his ear, took extra days out-of-office, and completely let go of asking for progress updates for my work, all to avoid talking to me at all.

It was kind of nice actually. I made a mental note of this trick, so that the next time I want some breathing room to get the boss off my back, the easiest way is to drop a hint that I want a big raise. :)

I did eventually get the raise, and oddly for the exact amount I requested, but it was quite a painful first lesson to learn. Why will a modestly wealthy person who owns a successful company have no issue whatsoever with completely ripping of a just out of college kid who is slaving away for the owner's profit margins, and yet exhibit the most irrational behavior when it comes time to play fair and pay up? I don't know.

But it is absolutely true that in the software industry the easiest way to get a raise is to switch jobs. That's just how the game is played. Any human enterprise premised on profits is forced to be hugely wasteful, especially when you consider how much talent is thrown away to another company in order to avoid being honest about money, all so some jerk at the top can keep a larger piece of the pie for himself. This kind of direct experience is why I laughed at that stupid blog article from a few months back that said to never hire "job hoppers."
IMHO job hopping developers, acting like all out software mercenaries, guns blazing on behalf of whoever is signing the checks, are automatically amongst the smartest of the pool, since they see the fundamental economic pattern underneath the entire software industry.

This silly money pattern also leads to the unusual circumstance that requires when you switch jobs, always, every time, no matter what, ask for a higher salary than what you received at your last job. Even if it's only a little bit. Never, ever move backwards, at least unless there are other external constraints preventing it. This is the only way to keep yourself from sliding down into the economic sinkhole. Sadly, it is money and not geeky ideology about OS, programming languages, etc that is the true driving force to align yourself with. Money is magnetic north in all things.(Unless you have enough Fuck-You Money, but that's a different story.)

Anyone who doesn't follow this negotiation pattern, and who isn't in some highly custom circumstances is a complete fool who probably deserves to get fleeced and left as a beggar by those shark-mouthed, pointy-haired MBAs we all love. But we can absolutely beat them at their own game. :)

Best of luck!