I'm a recent computer science (CS) master graduate living in Germany. Now I'm starting to think about my long-term career path and looking for jobs in Germany. I'm proficient in Java and data mining (I wrote my thesis on a data mining topic).

After researching what career paths other people with a CS master take, I realized that most of them either become software engineers or data scientists. I realized that if I had to choose between these two fields I would choose to become a software engineer. After all I didn't find any more interesting career paths as an employee.

Anyway, I started researching the salaries for Java software engineers in Germany and I realized that the salary increase hits a level where it doesn't increase any further. I found that after 10+ years of experience most people have either 66 kEUR/year or at most 70 kEUR/year, and it somehow never increases from there. I found that a bit shocking that even with more experience your value is still the same!

This is in contrast to some professions (e.g. doctors) whose salaries increase the more experienced they are in Germany.

My questions:

Why do the salaries of software engineers in Germany not increase much after, say, five years of experience and almost never increase after 10 years of experience?

Are there career paths in computer science where salaries increase with years of experience?

Regarding your specific situation: in all honestly, saying that you're proficient in Java is not even remotely close to being the best way to sell yourself as a software engineer. If you really feel your Java skills are so significant that their importance dominates whatever else you've learned, then you should really look into learning other topics. Learning to use mainstream languages is probably the easiest part of software engineering, and Java doesn't have the best reputation; the hard part is learning how to write effective and efficient programs (algorithms, data structures, ML, etc.).
– MehrdadMay 6 '15 at 11:14

2

In fact, I'd go so far as to say I wouldn't be surprised if certain types of software engineering managers actively avoided candidates who advertised their Java skills.
– MehrdadMay 6 '15 at 11:22

6 Answers
6

Simply put, businesses do not need brain surgeons. They need workers. And if a Java developer with 5 years experience can do the job well, why would you pay somebody more who has more experience when all he can achieve is the same result?

Experience only counts if you can translate it to a better production process. Either faster, or less errors or any other metric. And in Software development, after a certain point you have all the knowledge and experience you need to program normal business software. Look around you, there is no genius programming an online shop. It does not take a genius. It's just code. It certainly gets better once you have done it a few times, but it does not get much better once you have done it like 20 times. There is not much difference between someone who built 20 online shops and someone who built 25.

If you want a higher paying job, you need to look into a market segment where you need very experienced people, where you can learn and use new things even after 10 years.

Or go into management.

Or go into a market segment, nobody really wants to be in (SAP comes to mind).

@JackTwain The majority of normal jobs can easily be done with the technology from 10 years ago by someone with 5-10 years experience. This person has all you really need to build the next online shop, accounting system, customer care application or whatever business application people need. You need to find a job that you cannot do with the tech from the last century and 5 years experience, that is where you get more money when you have 10+ years of experience.
– nvoigtMay 4 '15 at 10:41

15

Well, I cannot speak for all the other developers, but for me, SAP is not exactly fun. And looking at what SAP people make, I guess nobody else wants to do it either. If they had people wanting to do that, they'd not pay that much money. If they had boatloads of people applying for SAP jobs, the salaries would probably be half of what they are.
– nvoigtMay 4 '15 at 13:09

I have found this to be true. For some consulting customers I cannot increase rates even when I'm the best dev on site. They just have no use for very advanced talent. They need boring programming work to be done. In order to charge more you really have to find a way to do more.
– usrMay 4 '15 at 13:18

12

@Lohoris No, but I know that companies are not looking for masters. They are looking for people that get the job done and you can get the job done even on a level way below mastery. I'm not downplaying experience, I'm just saying companies do not need that amount of experience very often, so salary does not increase linear with experience.
– nvoigtMay 4 '15 at 15:00

Because experience is not everything. There are other factors which determine your "value" and salary, which you should not underestimate: Education, social skills, leadership skills, networking factors, (job) market situation, ... I am sure, somebody who is longer in professional life than me can add a lot of more factors.

There are two ways you can take to increase your salary further:

Specialist way: Specialize your knowledge to a more specific field or
branch - for example developing software for purposes in the
aeronautic field (just an example).

Since I am not a professional for long time (I have no more experience than one year after graduation), I cannot give you more detailed information, but at least this is what I understood, the options you have when you want to get more money in software development.

While the other answers are generally correct in any field, we are in a special historical situation in software development.

10-20 years ago, companies were willing to hire just about anyone who knew how to open an IDE. I have met a few of these people, who still hold senior development positions. Today, those same people would not have been able to get an interview as a junior programmer at the same company. This means that the salary statistics don't really show what a younger programmer would have made, given the same experience.

Unfortunately, this does not mean that you should expect to get a higher premium, once you get more experience. You will be competing against people who are much more competent and in a much tougher market.

It's my personal belief there are two primary factors involved on why technical positions tend to max out salary wise at ~10 years where further experience offers little benefit in regards to your salary.

What YOU are worth != what you are worth to your company

Let's say I have a project I expect will produce 60K EUR annually. As long as the project is done at an acceptable quality the end result won't change much even if it's of a better quality. That said I want to hire someone I can rely on to make it at least acceptable, but I get very little benefit from paying more for someone with more experience. That said it doesn't matter if your worth 120K EUR to the "market" you're still only worth 60K EUR to me, therefore I can't justify paying you more.

This is because things change eventually making past skills no longer have value. For example, people used to be able to program by punch cards, well since no one does that anymore it holds zero value.

Just the same if you've got decades in Pascal, Turbo Pascal, or VB6 it's quickly depreciating in favor of C#, C++, Perl, and Delphi. Ten years from now it's likely C# and the others will gradually devalue for whatever languages find a better way to do things then the modern languages.

This also goes further than just the technology though. Work ethic, Project management methodologies, and basic office dynamics change overtime due to economic and cultural changes. Some of those soft skills never lose their value (being able to estimate how long things take, basic negotiation skills, etc.) others lose value completely. (proper faxing etiquette, proper etiquette for sending written memos, etc.)

Summary

Essentially this all means you gain value as you learn and gain experience, but what you learn also gradually loses value. Eventually you hit a point where the value gain from experience effectively stale mates value lost by depreciation. ~10 years. In addition as a business owner I'm only going to pay for the experience I need and nothing more.

"it doesn't matter if your worth 120K EUR to the "market" you're still only worth 60K EUR to me, therefore I can't justify paying you more." - then you should be perfectly fine with losing them and be unable to hire a replacement (assuming you'd be hiring from the market, and not some magical market-free place?)
– Aaron HallMay 4 '15 at 18:55

1

@AaronHall "Market" varies greatly, profession, location, what market I sell to, etc. So sometimes the exact same "job" can have completely different pay grades based on the employer's market. Odds are if I'm on the lower end I would expect higher turn over, and have bigger gaps between hires, and lower quality candidates. But ultimately it breaks down to this. If I need to make more than what I pay you in a reasonable time frame, or I will fail as a business. If I can't hire someone at a rate I can turn a profit, then the project is doomed.
– RualStorgeMay 4 '15 at 19:02

@AaronHall, There are people worth 6m/year in Google. Google is willing to pay that. I'll sell those folks to you at 90% discount = 600k/year. Will you take them?
– PacerierMay 5 '15 at 13:53

I don't have a budget, so I'll have to forego them. But thanks for the offer!
– Aaron HallMay 5 '15 at 16:53

My answer pertains more to the US, where I work, but the same phenomenon exists here, too.

There are several reasons. First of all, Java itself is only a little over 10 years old, so the premise of your question is somewhat questionable. Nobody knows what the salary for a Java developer with 40 years experience will be because such people won't exist for many decades. There also is a cycle among languages, and Java probably has passed its peak. I would consider it entirely possible that 5 to 10 years from now, Java programmers will be valued as much as COBOL or K&R C programmers today - which is not much.

Secondly, legal or not, age discrimination is rampant in the software industry. Companies prefer to hire software developers in their 20s or 30s, and after age 40, it becomes difficult to find any job. Salaries are dictated by supply and demand, and when there is little demand for people in that age bracket, salaries go down, not up.

Third, think about WHY experience is valuable in many professions: a field such as, say, law is fairly static. A lawyer with 30 years of experience simply knows better how to argue cases or how to come up with new legal theories. Individual laws change, but the way laws work generally doesn't.

Software engineers, on the other hand, work in a field where old experiences don't translate all that well. Sure, coding is the same, but that's only a small part of software development.

On top of that, a software developer with 10 years of experience in any one language is often viewed not as experienced, but as unable to learn new skills.

My best advice for your situation is not to choose a rigid career path at all, but retain your flexibility, and regardless of what you are going to do now, be prepared to completely change course within 5 to 10 years.

The second advice I have is not to focus on skills, but on people. Ultimately, your job as a software developer isn't to create Java code, but to solve somebody's problem - somebody who is willing to throw many Euros at the problem. Knowing how to talk to people, how to identify their problems, and how to solve it (using any kind of solution, not just Java) is what actually makes you money and gives you career success.

Your first premise is incorrect, Java is already 20 years old with Alpha and Beta versions released in 1995 (even if you just count Java 1.1, which is the first one people really used, this was in 1996). Also, your statement that COBOL programmers are not valued much is incorrect - Quite the contrary, they are paid extraordinarily well, especially because there are so few people left who know how to code in COBOL.
– dirkkMay 5 '15 at 6:39

2

Additionally, I would question your analogy with a lawyer. I would say that indeed a software developer is quite the same as a lawyer, as fundamentals in CS don't change much (OOP, design patterns, the way how a CPU works), but just the execution is different. Lastly, I don't think your statement about people with 10 years of experience is at all true - I haven't heard anyone saying Linus Torvalds is "unable to learn new skills", just because he happens to do kernel programming (so basically just C) since more than 20 years.
– dirkkMay 5 '15 at 6:42

@dirkkm COBOL guys are paid well only because of leverage. When the last COBOL apps on this Earth get replaced, they immediately lose their value.
– PacerierMay 5 '15 at 13:57

@dirkk Linus Torvalds does more than just kernel programming, which is why you won't hear people make that statement. (He worked on Git for instance.)
– CronaxMay 6 '15 at 11:28

1

@dirkk - on COBOL guys, I'm with Pacerier. I remember in the pre-Y2K rush, COBOL guys did command astronomical salaries. I've heard several complain that by February 2000, their pay had dropped to around $15/hour, and assumed that it had stayed there. Linux Torvalds is actually a good illustration. He actually isn't making all that much money, and is mostly living off a one-time licensing deal. If he now tried to find a job outside the one single area of expertise he has, I don't know how successful he'd be. Even with his celebrity status.
– Kevin KeaneMay 6 '15 at 19:49

I am a professional software engineer from Austria - nearly the same circumstances here.
The salary increase of software engineers nearly stops here with about 7 years of experience. Because of this most people change their role to higher paid Project Managers, Software Architects or Team Leads.
This 3 posibilities will be a very valid options after you reached the maximum pay as Software Engineer.