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.

yannis
  • 39,547
  • 40
  • 183
  • 216
T. Webster
  • 1,246
  • 1
  • 12
  • 20

10 Answers10

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.

Steven A. Lowe
  • 33,808
  • 2
  • 84
  • 151
  • 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). – Bobby Tables May 14 '11 at 03:29
  • Yep. This is sad but true in nearly all organizations. – Bernard Dy May 14 '11 at 03:30
  • 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. – JUST MY correct OPINION May 14 '11 at 05:19
  • 1
    It depends, I had a year when my salary increased by 41% without changing jobs. – quant_dev May 14 '11 at 10:55
  • +1. This is the number one *most effective* way to increase salary. –  May 14 '11 at 12:17
  • Agreed. The only way to raise your salary is to work for a company that values you more than your current one. – Wayne Molina May 14 '11 at 13:24
  • 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 May 14 '11 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. – Nemanja Trifunovic May 22 '11 at 15:32
  • @Nemanja Trifunovic: Good luck. – Jim G. May 23 '11 at 02:25
  • 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 Feb 24 '12 at 05:30
  • Yes this has worked for me. And it helps to show **you are "good"**. E.g. programming projects or apps that are popular, stackoverflow answers, YouTube videos. This is how I increased my salary by $50K (2012) by taking a more difficult job. @NemanjaTrifunovic has a point. There are exceptions. – T. Webster Apr 13 '15 at 02:05
  • You can only change employers so many times before they start flagging you for "job hopping!" How is this an acceptable answer AT ALL? –  Oct 11 '15 at 14:57
  • @omouse: because it works? :) – Steven A. Lowe Oct 12 '15 at 23:41
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.

Bobby Tables
  • 20,516
  • 7
  • 54
  • 79
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.

btilly
  • 18,250
  • 1
  • 49
  • 75
  • 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 May 14 '11 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 May 14 '11 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 May 14 '11 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 May 15 '11 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 May 15 '11 at 20:55
  • @Aaronaught - You remind me of the person who recommended *Start With No* to me. Once the daughter of the CEO of his employer told him, "I need you to go distract him for an hour while we set up his surprise birthday party." "What, me? How?" "You can do it, go." So he walks in and says, "I was just given an offer for 40% more than I make, but I don't want to go to the city. What can you do for me?" An hour later he has a 15% raise, he opens up the door, everyone yells "Surprise!" The boss realized it was a setup, but the raise stood. – btilly May 16 '11 at 05:01
  • @btilly: That's an awesome story. Almost everybody is a better negotiator when they feel like they have nothing to lose, i.e. if they're just doing it for fun or curiosity. Trouble with most people, I think, is that they don't start negotiations until they're desperate. Ask for raises when they need the money; buy new cars when their old ones are junk. I actually haven't read that book yet but it is on my list. – Aaronaught May 16 '11 at 13:39
  • @Aaronaught - Negotiating while desperate is a bad idea. A key concept in negotiation is your *BATNA* (best alternative to negotiated agreement). If ever the agreement that is shaping up looks worse than your BATNA, walk away. No matter how much time and energy has gone into the negotiation, walk away. If you can't do that, then you have no negotiation power and it will show in your results. – btilly May 16 '11 at 17:32
  • @btilly, I read the book you recommend, "Start With No". The author tells you to suggest to the person you're negotiating with that they say "no" to you. How would you go about doing this at a job interview? – Vivian River Nov 11 '11 at 01:55
  • @RiceFlourCookies That's not what the book says. It says that you should ask for things that they reasonably would say "no" to. For instance in a job interview one of my conditions is flexible hours. If the company can't do it, it won't be a fit. A lot of companies can't, and I save everyone's time by making that condition clear up front. – btilly Dec 07 '11 at 20:18
  • Negotiating by itself isn't a silver bullet. You have to actually have value to back it up. If first year out of college you are offered a $50,000 salary, you can't just negotiate for $100,000. You could maybe ask for a few thousand more. But you can only negotiate for what you are worth. If you build seniority, as suggested in earlier answers, and are paid less than what you should be, then negotiating is a valuable tool. – Brandon Mar 17 '13 at 17:22
  • @Brandon Obviously. However http://www.reddit.com/r/TwoXChromosomes/comments/hvv2m/i_work_for_a_large_multinational_tech_company_i/ is an interesting thread demonstrating how big the effect is in practice. Also for a good programmer, the gap between value created and salary requested is often insanely large. – btilly Mar 18 '13 at 04:59
  • this should be the accepted answer along with "increase your status as a software developer" and be treated like a professional –  Oct 11 '15 at 14:58
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.

Gilles
  • 2,201
  • 1
  • 19
  • 26
  • 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 May 14 '11 at 02: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 May 17 '11 at 01: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.

hotpaw2
  • 7,938
  • 4
  • 21
  • 47
  • where do you go to get information about the industry market? I only really know of http://www.bls.gov/oco/ and http://www.indeed.com – T. Webster May 14 '11 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.

Michael Brown
  • 21,684
  • 3
  • 46
  • 83
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.

Michael Brown
  • 21,684
  • 3
  • 46
  • 83
  • 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 May 23 '11 at 12:12
  • 2
    One book I read was Million Dollar Consulting http://www.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). – Michael Brown May 23 '11 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 Apr 13 '15 at 02: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. – Michael Brown Apr 13 '15 at 14:55
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.

psr
  • 12,846
  • 5
  • 39
  • 67
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.

jayraynet
  • 1,200
  • 9
  • 13
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)

  • 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 Feb 24 '12 at 18:26
  • Exactly, so you have to learn the missing piece and that's what the question was about. – Tomasz Zieliński Feb 24 '12 at 21:52