My employer recently posted an opening for a C# Developer with 3-5 years of experience. The requirements and expectations for the position were fair, up until the criteria for salary determination. It was stated clearly that compensation would depend ONLY on experience with C#, and that years of programming experience with other languages & frameworks would be considered irrelevant and not factored in. I brought up my concern with HR that good candidates would see this as a red flag and steer away. I attempted to explain that software development is about much more than specific languages, and that paying someone for their experience in a single language is a very shortsighted approach to hiring good developers (I'm telling this to the HR dept of a software company).

The response: "We are tired of wasting time interviewing developers who expect 'big salaries' because they have lots of additional programming experience in languages other than what we require." The #1 issue here is that 'big salaries' = Market Rate. After some serious discussion, they essentially admitted that nobody at the company is paid near market rate for their skills, and there's nothing that can be done about it. The C-suite has the mentality that employees should only be paid for skills proven over years under their watch. Entry-level developers are picked up for less than $38K and may reach 50K after 3 years, which I'm assuming is around what they plan on offering candidates for the C# position. Another interesting discovery (not as relevant) - people 'promoted' to higher responsibilities do not get raises. The 'promotion' is considered an adjustment of the individuals' roles to better suit their 'strengths', which is what they're already being paid for.

After hearing these hard truths straight from HR, I would assume that most people who are looking out for themselves would quickly begin searching for a new employer that has a better idea of what they're doing in the industry (this company fails in many other ways, but I don't want to write a book). Here is my dilemma however:

This is the first official software development position I've held, for barely 1 year now. My previous position of 3 years was with a very small company where I performed many duties, among them software development (not in my official job description, but I tried very hard to make it so). I've identified local openings that I'm currently qualified for, most paying at least 50% more than I'm getting now. Question is, is it too soon for a jump? I am getting valuable experience in my current position, with no shortage of exciting projects. The work environment is very comfortable, and I'm told by many that I'm in the spotlight of the C-level guys for the stuff that I've been able to accomplish during my short time (for what that's worth). However, there is a clear opportunity cost to staying, knowing now with certainty that I will have to wait 3-5 years only to be capped at what I could potentially be earning elsewhere this year. I am also aware that 'job hopper' is a dangerous label to have, regardless of the reasons.

UPDATE: I've just accepted an offer at another company, paying significantly more and with even cooler projects. Thanks to all for the insightful responses.

  • 4
    You'll get valuable experience in a new job. There are other jobs with no shortage of exciting projects and very comfortable work environments. You'll no doubt impress other employers with the stuff that you're able to accomplish. Find a better job, then jump. – Carson63000 Mar 16 '11 at 9:55
  • If you can make $38k learning stuff an sitting around, awesome. Shitty companies usually expect more than less, so I would leave their sorry ass. You can make double or triple out there. – DisEngaged Mar 16 '11 at 23:15
  • 2
    As an HR professional, I advise you to work hard during the day and search hard for a new job during the night. "Too soon to jump" only means "no good jobs available" -- if you can find a better position, take it! Life is too short, brother. EDIT TO ADD - the job-hopper label only applies if you can't justify your quick exit during the interview. I suspect you will have no such problem if all that you say is true! – Drew Mar 17 '11 at 5:27

Companies that don't value retention don't offer competitive compensation. They also tend to get what they deserve, as they tend to attract developers with fewer options. Sometimes that just means people with poor negotiating or people skills, but it often results in technological morasses because there's no one with a broader range of experience to use as a sounding board for design and implementation ideas.

I stayed at the same company for 7 years, but, in the last few years, I've also moved around thanks in part to initially focusing on contract jobs and later thanks to economic challenges faced by my employers. I chose to leave my previous employer when it became clear that the company was collapsing, and I learned that it was actually a Ponzi scheme around the time I tendered my resignation. The short time at my previous couple of jobs raised some eyebrows in interviews, but you don't need to be negative in interviews when you're looking for something else.

If you're asked why you're motivated to leave, I would hope it's because the other company offers a more interesting project/technology/challenge, opportunities to learn from more experienced/talented people and a more compelling compensation package; you can say any of those things without making you or your current employer look bad. If you're reasonably competent, you will have choices. You should always be open to exploring options for your next job, even if you're reasonably content in your current position, because it will give you perspective on your options for career development and it will allow you to have more control over your future, since you'll spend more time choosing your employers rather than the other way around.

Anyway, your employer is wrong. Experience in "other languages" is only a small part of what's valuable in an experienced developer. Battle scars, experience building and maintaining complex systems in sustainable ways, and experience juggling the needs of the business and the technical debt are what make experienced developers valuable. My junior coworkers can churn out a lot of code in a short amount of time, but they often go and solve the wrong problem in an unmaintainable way. Ask me which is more valuable, and I'll tell you we need both senior engineers who can think in nuanced ways and optimistic junior developers that want to get new things built as quickly as possible even if we get some of it wrong the first time. But experience is valuable, because it keeps you from spending too much time generating technical debt.

I know plenty of people with 3 years experience in C# that still produce crappy, unmaintainable, unidiomatic C# code, and I know a long-time Java developer that took about 6 weeks to start producing high quality C# code that took advantage of the language idioms and was loosely coupled thanks to a combination of experience, inquisitiveness and code review. If you have an employer that doesn't get that there's a difference, yes, it is a good idea to look for an opportunity for growth elsewhere. You should always want to be working with a company that sees further into the future than you do and hires smarter people than you.

  • 4
    Not valuing retention also tends to result in complete and utter messes codewise because current programmers burn out or get better offers and leave, and then the new batch of programmers have a bunch of existing code to work with that might be documented, almost definitely isn't in the coding style they're used to, and no way to contact the original coder to ask them what they were planning when they wrote this or that subroutine, resulting in dramatic slowdowns as they have to learn to comprehend the existing code while adding to it, and even faster burnouts... – Shadur Mar 16 '11 at 14:46
  • +1: "took about 6 weeks" That's about right in my experience. – kevin cline Mar 7 '12 at 16:45
  • And the hardest part was probably learning to press enter before and after typing a {. – Dan is Fiddling by Firelight May 10 '13 at 20:23
  • On one hand, you work for a company that has no idea what a software developer does that actually earns their salary (deep experience in a language can be beneficial, but like you have pointed out, it's not everything).
  • On the other hand, you say "no shortage of exciting projects" — unfortunately, exciting companies can pay less, if they want to. The smart exciting companies pay more, because then they get the best of the best.
  • Because there are so many factors (like exciting projects) that determine the attraction value of each job for each company, as well as the real value of each individual developer, "market rate" is kind of a crock. At its best it's rough.
  • One year isn't too soon to be leaving, if you can give a good reason why to future employers without sounding like a pessimist, a complainer, or a high maintenance employee.
  • At the very least, I'd be looking around to see what else is out there. In the end you are the only one who will be able to make this decision. But, it's going to be hard to make it work at a company that doesn't seem to value its employees.

I wouldn't be going anywhere if I were you. You've made it clear that you're still at the early stages of your career and clearly you're doing well in the job, and most importantly you're learning a lot.

Every company tried to minimise its costs i.e. pay as little as possible for all its resources, so try not to take it personally. If you ever got a look at the payroll in any company, you would get a serious shock at how little people's wages have to do with their abilities or even usefulness to the company. People get paid the least they're willing to accept. HR people not having a clue? - unbelievable ;-) Actually I know senior management in software companies who regularly look for people with very specific attributes (which of course excludes many people who fit the "smart and gets things done" characterisation) - so this idiotic thinking is not just limited to HR people, I'm afraid.

Be careful not to get too carried away with "far away hills are greener" syndrome - it actually sounds like you have a pretty good deal where you are. One of the problems I think with the StackExchange sites is that the standard of contributor is so high, and from reading the answers (and sometimes the questions) you get the impression that all software companies must be filled with these ultra-efficient, supergeeks who spend every evening and weekend coding, have their fingers in a few open source projects, are blogging daily about their latest hack etc etc. This is quite the opposite of reality. Your average software developer is a lot less impressive than you may realise. In fact, your average StackExchange contributor is probably already in the higher echelons in both their own company, and also in general in the industry. On one hand, it's exciting to see such excellence brought into the public domain for all to see, learn from and become inspired by. On the other if, like me, you're merely just a "pretty good programmer but no guru" it can be at times disheartening to be continually reminded of your limitations :-). Another thing to remember is that a lot of people on this site are young and while they may be great programmers, they haven't seen it all, but of course as they don't know that, they are quite happy to give their opinions on how things should be (much how I was when I was younger - LOL). Things are never quite so simple, so be careful where you take your counsel.

Re the money, keep your head down and prove yourself at work. Pick up some negotiating skills from books, dealing with clients, public debating, whatever. When the time comes, you'll get the money you deserve, and more importantly, people will be willing to pay you what you deserve.

Speaking personally, I can say that software development has provided me with the opportunity to live a wonderful life with a reasonable financial income and very flexible working conditions. I don't code in my spare time, am not involved in open source projects apart from work related ones. I don't blog. I probably couldn't write a hex to integer function on a piece of paper (as I saw someone on another question say was a must-have from an interviewee), but I could tell you how I'd go about it in a way that would keep my client very happy. I have found over the years that the development of my soft skills was equally if not more a factor than my technical abilities in any success I may have had.

Good luck. (I hope I don't come across preachy here - I'm writing this in a 10 minute coffee break, so it probably needs some editing).


Get your priorities straight. What is most important to you: salary or job content?

It sounds to me like you have a good job right now, where you can learn quite a lot, AND this is your first real job doing software development. In that case, consider yourself an apprentice and learn all you can but at a lower pay. If you are considered for promotion, you can mention in your negotiations that salary is important to you and that you need to feel that you are valued. In any case, your situation should hopefully be improving within a few years.


I can only say 2 things:

  1. Exciting jobs turn into burdens over time.
  2. You can have both exciting jobs and a good salary at a company that offers both.

Salary is only one part of the package. Enjoying your work is another. Its possible you can find both in another opportunity, or you take another and it turns out the environment is terrible, the work is boring, or something else. The grass isn't always greener on the other side. Sometimes, looking at that greener grass, we all of a sudden don't like our own grass, whereas previously it was fine for us. You have to balance how much you enjoy your job with the chance you'll enjoy another one just as much.

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