A point lost in this article is that no one ever leaves just for money. The very fact that you're not paid enough is evidence of a problem in your perceived value. Once you're convinced of that I think for most people your satisfaction and trust that the organization values you erodes. It's not as easy as getting a big counter and thinking everything's peachy, in my experience.
I recently 'fired' my client who paid me under the market rate for a client who pays the market. And I would qualify as a junior, I guess, since it's just 2 years since I started working for living...
I think the problem is that once someone is seriously considering other job, it's very very hard to get them back. They might be physically in your company, but mentally, it won't be the same. Being underpaid just changes the relationship.
In an attempt to add something useful though, why did you terminate your work with your last client? Did you attempt to negotiate a higher rate? Two years is still very junior, and I assume that you worked out your price with them early on. Did you give them a chance to retain you?
>>> ...can't...resist....."grammar".
Oops forgot to wrap it with <sarcasm></sarcasm>
To make my previous comment more accurate, I would add that it's usually not only about the money. Job specifics might change, you might ought grow your job, etc.
Speaking of the client, we both kind of knew that it will happen. I am still doing my degree and, I believe, he expected me to find something else once I graduate. Just it happened before I graduated.
You are right that I worked out my initial price, and the job specifics had changed. I was working on a CRM-like custom solution in the beginning but at the end I spent 80% of my time copy-ing stuff from google docs into html and styling up. I tried to negotiate a higher rate, unsuccessfully, and there were signs that the budget was super tight. Understanding that, I didn't put him in the corner saying 'I need more money!'. Because I know how badly it sucks to be in that position :) so it was quite a mutual understanding.
All in all, it ended on good terms, no bridges were burned.
I think if you come out of a good school with the right degree and jump right into a good company you can expect market-rate pay or better. If you get a CS degree from Stanford and join Google you'll be doing fine.
But maybe you didn't have the money or quite the grades and extracurriculars so you get your degree from San Jose State or City College of San Francisco, you could still be a very good programmer, but you'll have to start by taking lower-paying jobs while you prove it and learn, and at most companies you won't get much of a raise unless you threaten to leave.
A friend of mine ended up a technical lead of about a dozen people. He got there by leaving his company for another company, leaving them to go back to the first company, then leaving them again to go back to the second company as a lead. Each time he got a substantial pay raise. For the four years before he adopted this tactic he was getting the customary 5% or so as a mid-level programmer. In the four years he employed this tactic his salary almost doubled.
> "If you get a CS degree from Stanford and join Google you'll be doing fine."
I disagree. The problem isn't that people are paying below market - Google pays just fine for new grads. You won't find many places paying more than Google does for fresh grads. The problem is that the pay scale for software developers increases rapidly with experience, at a rate no company (Google included) is willing to keep pace with.
A new undergrad may be worth $100K starting. Assuming they're reasonably good performers, in two years he/she will be worth $130K+. I don't know of any company that gives 15% annual raises like clockwork, even to solid performers.
Personally I've doubled my salary in about 5 years in the industry. That works out to 15%, yearly. Is there any company out there that's willing to keep pace? I've been at companies where the typical non-promotion raise is 1-2%, that's laughable in a market where salaries are skyrocketing.
My own anecdotal is from when I started at&t out of college in 2001. The tiny 1 to 3% annual salary raises cannot compare to the quantum-leaps after hopping through 3 start-ups. Also, I never negotiate salary. I just tell them what I was making before and accept whatever offer they give so long as it's higher than my current. When I look at Glassdoor.com, I seem to be doing okay... so no complaints from me. :)
You're probably leaving money on the table, in exchange for avoiding a couple 15-minute exchanges on salary. If you modify your approach to include a request for a small increase or a sign-on bonus after they've made their offer, you will find 1/3-1/2 the time, you'll get it, and when it's in base salary, that will enhance the ratchet effect that you've experienced.
Some places will make their best (or nearly best) offer first. Others will have a broader range and more flexibility for someone they really want on-board. It doesn't cost or take much to ask once at the start, when they're at their most enamored with the endless possibilities you'll enable.
Don't get me wrong; I appreciate the simplicity and ease of your approach. I'm just suggesting your can get more return from very little differential effort.
> My point here is this engineer should not have had a five-figure salary, even if it made sense in historical context (joined as a very junior person, consistent with prior salary). Pay market, or above, as soon as you can. It’s a sign of respect.
Unless the employee is leaving for money. Junior employees HAVE to jump jobs 2-3 times to get to their market rate.