38

If you have the time and resources, what would be the most effective way to increase your salary as a full-time programmer, outside of just doing your job?

By "salary" here, I mean salary (adjusted for location cost-of-living) coming from a single programming job.

2
  • 2
    Strongly culturally dependent.
    – user1249
    Commented May 22, 2011 at 12:07
  • Are there demographics of the users on this site?
    – T. Webster
    Commented Apr 13, 2015 at 1:36

10 Answers 10

59

Change Employers

The most efficient way is to learn and do cool stuff and change jobs every year or so. You are far more likely to get more money from a new employer than you are to get a hefty raise from your current employer.

13
  • 15
    True, but there is a balance. You don't want to get the reputation of being an extreme job hopper. eg. A CV with nothing but 1 year stints on it does't look good to employers who are looking for a permanent salaried employee (Contracting and short stints is a separate story though). Commented May 14, 2011 at 3:29
  • 28
    On average I changed jobs once every three years. I maintained over that time a consistent salary increase of 15% per year. My average salary increase on the years where I didn't switch was only about 4-5%. Do the math. Changing employers is the only reliable way to advance your salary appreciably. Commented May 14, 2011 at 5:19
  • 11
    Short stints may give you a reputation as a job-hopper, but it's not going to matter because (good) programmers are in short supply.
    – Kevin
    Commented May 14, 2011 at 23:44
  • 2
    @Kevin. It may matter. I was involved in hiring sw engineers at my previous job, and job-hoppers were not taken into account no matter how good they were. We were developing a pretty complex system, and a year was just enough to become productive. At my current job, most people stay 5+ years, and there are many who are here for 10 years. Commented May 22, 2011 at 15:32
  • 4
    +1 and Amen to that. In most cases, it's probably the only way to get a promotion too, unless you like waiting around for 30 years for someone else to either die or retire!
    – S.Robins
    Commented Feb 24, 2012 at 5:30
40

There are broadly 4 ways:

Build Seniority

If you're happy with your current company and want to stay there, a good way to be able to demand more is to become the senior resident expert at a vital technology and/or internal code base. I've watched people do this at several companies I've worked at. They became so obviously and publicly super-productive and good at what they do (and the thing they do was important) that they naturally gained a "senior" status - even without necessarily getting team leading or managerial responsibility per se.

I can only presume that they had more ammunition to ask for better raises at performance review time, and for some I knew for a fact that they were better paid than average.

Also, see this answer.

Change Employers

This is essentially this answer. You have to be careful with this one though. Lots of very short stints don't look good on a CV, even if there are reasonably good explanations for the moves. For contracts with fixed terms, it's not so bad, but you don't want to have a whole string of permanent salaried positions on your CV that are all under 1-2 years or so. 3-4 years and up is probably okay though, as an average.

Go Contracting/Consulting

This one is, in a way, Change Employers on steroids. If you find a good niche which has a shortage of qualified engineers and quite a bit of short term project work that needs doing, this can be an excellent option. But it's quite a different mindset and lifestyle than having normal permanent salaried jobs (I've never done it personally, but I've known lots of people who did).

Vertical Movement

I know you asked about "programmer salary", but it still feels like this is obligatory to mention. Rising to team leader and/or management roles is always a possible option. Note that this is often tied with the first option (Gain Seniority), but it doesn't always have to be. Sometimes it's a natural byproduct of being at a company long enough, taking ownership of things you were working on, and knowing all the people and processes well.

2
  • 1
    While this question isn't marked as answer, it is certainly deserving of some up-votes, and could also be marked as an answer.
    – T. Webster
    Commented May 14, 2011 at 12:31
  • 1
    +1 This is an extremely well-organized answer. Thank you.
    – Brandon
    Commented Mar 17, 2013 at 17:17
19

The critical piece that you are missing is learn to negotiate. Learn to do that effectively, and you will make a bigger difference in your income than any other single thing you can learn. Even if you only negotiate once every three years when you are discussing salary, learning the basics of negotiation will pay you back more, dollar for dollar and hour for hour, than any other possible investment of your time.

So how do you do it?

Many years ago I asked a friend who was an excellent negotiator for his recommendation on how to learn how to negotiate. He suggested a contrary book, Start with No. It walks through a particular negotiation strategy that is highly effective and is a pretty good fit for a lot of people. I happily can recommend it if you don't already have good negotiation skills.

Subsequently I ran across Bargaining for Advantage and it is by far the better book. I would describe it as being geared towards giving people a theoretical framework from which they can better understand negotiations they are in, and can better figure out what works for them. It can definitely take you farther than the previous book, however it doesn't give you as clear-cut "this is what you do". It is a more advanced book. I'm glad that I read it, but I am also glad that I didn't read it first.

How cost effective is learning something about negotiation? Those two books combined cost well under $50. I spent, combined, well under 20 hours reading them. In the last three years they easily made me over $100,000 in extra income.

13
  • Thanks for the suggestion. Hopefully developing some negotiation skills doesn't require a salesman-type personality to see any results. Though it sounds like those books should apply to most people, including programmers.
    – T. Webster
    Commented May 14, 2011 at 12:36
  • 2
    @T. Webster - If you don't have an appropriate personality, you're never going to be a top notch negotiator. Certainly I don't, and I have no illusions about that. But that doesn't stop you from improving. And no matter how bad you are innately, "better than I am now" is going to make you more than you'd otherwise make.
    – btilly
    Commented May 14, 2011 at 13:43
  • 6
    I think this answer is the best. I think the main reason why so many people seem to achieve relatively higher gains from switching employers is that they're unwilling or unable to negotiate significant raises with their current employers, and feel more freedom to do this with prospective new employers. I started with a modest salary after graduation, and after what I think was about 3 years, I was able to negotiate roughly a 40% increase plus a customized bonus plan. You just have to know what you're worth and be willing to negotiate with anyone, including your boss, at any time.
    – Aaronaught
    Commented May 14, 2011 at 20:01
  • @Aaronaught, can you say what you brought into your negotiation that got you that 40% raise? What did you have for leverage that you used? Were you willing to walk if you didn't get the raise?
    – T. Webster
    Commented May 15, 2011 at 20:40
  • 3
    @TWebster: If you aren't willing to walk, then it isn't a negotiation at all, it's a plea. So take that as a given. As for leverage, the only physical documentation I brought in was evidence of current market rates, since I didn't want to waste time arguing about that. Aside from that... just my skills and my experience in a somewhat niche industry; competency and scarcity are pretty much the only leverage you have as an employee, whether you're negotiating with your current employer or a new one.
    – Aaronaught
    Commented May 15, 2011 at 20:55
7

By doing your job, I assume you mean the technical aspect. Programming, meeting requirements, attending meetings, etc.

If so, than one of the most effective way would be to work on the social aspect of your job.

You can meet all of your technical objectives but still get a lower salary than someone with good technical skills but great people skills.

You need to promote yourself to your boss and to your coworkers. Make contacts in the industry. Become a leader among your team. Be the guy people are asking for help when they are stuck.

People that do these things are usually will usually be perceived favorably by management, thus be seen as more valuable.

2
  • How do you make contacts in the industry? Can this be done over the internet with sites like stackoverflow.com, or are you talking about e.g. in-person developer conferences like Microsoft PDC?
    – T. Webster
    Commented May 14, 2011 at 2:52
  • 2
    @T. Webster : I was talking in-person. You can meet other devs at user groups, conferences, IT events. Building a contact network isn't just helpful for getting another job, it can make you more valuable by having people you can turn to for help, questions, info, etc.
    – Gilles
    Commented May 17, 2011 at 1:13
3

Supply and demand.

Do something (learn something, gain a skill, get a credential) for which companies have a higher demand than for what you do now, and/or for which there is a lower supply of available potential hires. The change in supply and demand will eventually effect the market price. If your current company wants to keep you, they will have to match the market rate salary. They will know that you can go elsewhere and get that salary, and they likely will have to match that market rate salary for your replacement.

1
  • where do you go to get information about the industry market? I only really know of bls.gov/oco and indeed.com
    – T. Webster
    Commented May 14, 2011 at 12:42
3

There is a ceiling that most companies are not willing to go beyond for a straight programmer. You have to take on management/leadership roles if you want to pass that ceiling.

2
  • 7
    Or move to another company with a higher ceiling. Commented May 14, 2011 at 6:23
  • 1
    What about "senior"-level programmer? I am not at that level, but will attaining that role increase my ceiling do you think?
    – T. Webster
    Commented May 14, 2011 at 12:37
2

Go independent. As a consultant you'll make 3-4 times what a full-time employee makes. You can leverage this to boost your salary or do like me and take an obscene amount of vacation. Last year was my first year of independence. I took 10 weeks of vacation and still beat my prior full-time salary.

4
  • I'm considering this, but at this stage in my career I'm not confident enough to do that. Know any good resources to begin learning on how to go as an independent programmer consultant? Is managing the extra administrivia i.e IRS forms a lot more difficult?
    – T. Webster
    Commented May 23, 2011 at 12:12
  • 2
    One book I read was Million Dollar Consulting amazon.com/dp/0071622101 It provides a lot about strategies for consulting (cut to the chase, fix priced contracts should be bread and butter, hourly rates make the client feel they have more control over how you use your time plus if you're good, it's easier to justify a fixed price that gives you an hourly rate that's obscene). Commented May 23, 2011 at 20:21
  • As an independent-consultant, how are you treated by your client? For my 1st job, I was a "consultant" (or an outsourced team) and we "consultants" were assigned to a client that gave us horrid development environments.
    – T. Webster
    Commented Apr 13, 2015 at 2:18
  • Your goal should be to find your own clients rather than going through a third party vendor. What you're doing now is known as Staff Augmentation and isn't necessarily the best situation. In many cases clients look at staff aug contractors as less valuable than employees (even though they spend more on them). It's difficult but finding your own work is more desirable than going through a third party. Commented Apr 13, 2015 at 14:55
1

If you want to raise your salary, raise your value to your employer/customer. Continuously align yourself with your company's goals (answer: how am I bringing aiding in bringing in more revenue?) and your client's goals (answer: how am I making the customer's life easier?). At times you will need to go to bat for yourself to remind those with the checkbook of how you can answer those questions above.

And as @bleakcabal stated, you've got to play the social aspect of your job. That will open more opportunities to increase your value to employeer and customers.

1

There are only three things that matter: the value you deliver, the value you deliver and the value you deliver.

Everything else is not important (provided you've read and understood this book: http://en.wikipedia.org/wiki/How_to_Win_Friends_and_Influence_People)

2
  • If people are able to determine the value you deliver (with programmers this is fairly difficult a lot of the time) and you are able to negotiate to get that value. In practice often one of these things is missing.
    – psr
    Commented Feb 24, 2012 at 18:26
  • Exactly, so you have to learn the missing piece and that's what the question was about. Commented Feb 24, 2012 at 21:52
1

Chiming in with a point not yet covered, though it falls under negotiation. Know what the market is paying for similar positions in the same area for the same size company, or at least learn as much as you can. If your salary is too low be able to prove it to your employer with references.

This will help a lot in at least not being under-payed. It might also help if your employer claims they are paying top dollar but are actually below that.

There are a lot of on-line sites with at least decent information. Job sites and sites for recruiters often have some of this information, and there are sites more specifically focused. I won't list any because it changes some and you should find as many as you can.

Not the answer you're looking for? Browse other questions tagged or ask your own question.