Good article. I agree about communication and people skills being valuable to programmers. I'd add one other thing that has me pulling my hair out as both a developer and as a manager of developers: the lack of fundamental business knowledge. Developers need to figure out where they fit into an organization, how organizations are structured, and what considerations they need to take into account that are based outside technology but have deep technological impacts.
I often compare it to being a lawyer (as any analogy, it breaks down, but it's useful to consider). Like lawyers, tech people have a basic skill/knowledge set that is unfamiliar to execs. Like lawyers, we are highly specialized in our training and in applying intellect to solving complex and comprehensive problems. And like lawyers, mistakes can be extremely costly. Unlike lawyers, however, we do not give programers any kind of insight into business structures, concerns or patterns in school. As a result, many developers don't really know where they fit into an organization, how they can partner with other business units, or when to compromise "ideal" for "useful"--i.e. when expediency is required and how to evaluate trade-offs from a comprehensive perspective. That leaves us wandering a mine field with no idea that tap-dancing isn't very wise...
The thing is, you approached it wrong. Once you were approached by the recruiter, you should have gone to your boss and told him that you think you're worth more than you are being paid. Go into negotiations before you have the offer. This allows you to firmly establish your current company's evaluation of your worth. Once you know that, you are in a much better position all-around.
Since you didn't do that, though, I'd say the bridge is burnt and you need to move on. As others have said, it is the responsibility of your company to pay what they think you are worth. Companies that pay what they can get away with get what they deserve and shouldn't be too surprised when their best talent bleeds away and they deal with high rates of turn-over.
Companies shouldn't expect loyalty from employees because they certainly offer none in return. But the blind fact of the matter is that they do think in terms of loyalty and right now, you're position is compromised. If you stay, like as not, they'll be looking for a replacement--frankly, they've probably already started and you staying on isn't going to stop them. Too often, counter-offers are just a way to mitigate the expense of turn-over so that they are in control and not you.
Note that my comments apply to 90% of companies out there. If your company is truly an exception, by all means take them up on it. If they've done things in the past to take care of employees and truly meant to pay you what you are worth, then give it a shot. Be very skeptical, though, if you don't have already established evidence of exceptional committment to employees.
I often compare it to being a lawyer (as any analogy, it breaks down, but it's useful to consider). Like lawyers, tech people have a basic skill/knowledge set that is unfamiliar to execs. Like lawyers, we are highly specialized in our training and in applying intellect to solving complex and comprehensive problems. And like lawyers, mistakes can be extremely costly. Unlike lawyers, however, we do not give programers any kind of insight into business structures, concerns or patterns in school. As a result, many developers don't really know where they fit into an organization, how they can partner with other business units, or when to compromise "ideal" for "useful"--i.e. when expediency is required and how to evaluate trade-offs from a comprehensive perspective. That leaves us wandering a mine field with no idea that tap-dancing isn't very wise...
Since you didn't do that, though, I'd say the bridge is burnt and you need to move on. As others have said, it is the responsibility of your company to pay what they think you are worth. Companies that pay what they can get away with get what they deserve and shouldn't be too surprised when their best talent bleeds away and they deal with high rates of turn-over.
Companies shouldn't expect loyalty from employees because they certainly offer none in return. But the blind fact of the matter is that they do think in terms of loyalty and right now, you're position is compromised. If you stay, like as not, they'll be looking for a replacement--frankly, they've probably already started and you staying on isn't going to stop them. Too often, counter-offers are just a way to mitigate the expense of turn-over so that they are in control and not you.
Note that my comments apply to 90% of companies out there. If your company is truly an exception, by all means take them up on it. If they've done things in the past to take care of employees and truly meant to pay you what you are worth, then give it a shot. Be very skeptical, though, if you don't have already established evidence of exceptional committment to employees.
Wind Son