This is the full "2016 European Software Development Salary Survey." A downloadable edition is also available.

Executive Summary IN 2016, O’REILLY MEDIA CONDUCTED A SOFTWARE DEVELOPMENT SALARY SURVEY ONLINE. The survey contained 72 questions about the respondents’ roles, tools, compensation, and demographic background. More than 5,000 software engineers, developers, and other professionals involved in programming participated in the survey, 1,353 of them from European countries. This provided us with the opportunity to explore the software-development world—and the careers that propel it—in great detail. Some key findings include: Top languages currently used professionally in the sample: JavaScript, HTML, CSS, Java, Bash, and Python.

Respondents reported using an average of 3.6 languages.

The highest salaries are in Switzerland, the UK, Ireland, Denmark, and Norway.

Software development is a social endeavor: people who are on tiny teams and who don’t attend meetings tend to earn much less.

The most common languages that respondents used in the past but no longer use were C/C++, Java, and PHP.

The most common languages that respondents stated they intend to learn in the next 1–2 years were Go, Swift, Python, and Scala.

Salary estimates can be obtained from a model based on the survey data whose coefficients are mentioned throughout the report and repeated in full at the end. We hope you will learn something new (and useful!) from this report, and we encourage you to try plugging your own data points into the model. If you are a developer, you may be wondering, “What

should I be earning?” Or at least, “What do other people

with work similar to mine earn?” To satisfy this curiosity, at

the end of this report, we have provided a way to do a salary

estimate. Our model is based on the survey data whose

coefficients are mentioned throughout the report. We

hope you will learn something new (and useful) from this

report, and encourage you to try plugging your own data

points into the model. Learn faster. Dig deeper. See farther.

Introduction THE FIRST O’REILLY SOFTWARE DEVELOPMENT SALARY SURVEY was conducted through an online survey hosted on Google Forms. More than 5,000 respondents submitted responses between January and May 2016, from 51 countries and all 50 US states, from companies both large and small, and from a wide variety of industries. Respondents were mostly software developers, but other professionals who program also participated in the survey. Of the responses to the survey, 1,353 came from 27 countries in Europe, and those form the basis of the data in this report. The report on the worldwide findings, with some US-specific statistics, can be downloaded from O’Reilly’s web site. When asking respondents about salaries, we recorded responses in US dollars, and therefore will use dollars throughout this report. The median salary of the entire EU sample was $56,000, with the middle half of all respondents earning between $35k and $80k. The latter statistic is called the interquartile range (IQR)—the middle 50%—and is used to describe the salaries of particular subsets of the sample in this report and its graphs. Imagine the IQR as a bell curve or normal distribution with the left-most 25% and right-most 25% cut off. The IQR is useful for showing the middle of the salary range without the distortion of outliers in the lowest and highest quartiles. In each section we mention the relevant, significant coefficients, and at the end of the report we repeat those coefficients when we show the full model. Note In the horizontal bar charts throughout this report, we include the interquartile range (IQR) to show the middle 50% of respondents’ answers to questions such as salary. One quarter of the respondents has a salary below the displayed range, and one quarter has a salary above the displayed range. The IQRs are represented by colored, horizontal bars. On each of these colored bars, the white vertical band represents the median value. Much of the variation in salary matches other variables gathered via the survey. We quantify how much each variable seems to contribute to salary. For instance, the country you are in has a major impact on your salary, and the programming language you use has a much smaller (but often important) impact, whereas a person’s age has no impact at all. Therefore, in addition to simply reporting the salaries of certain groups of respondents, such as those who work a certain industry or use a certain language, we also estimate how much the differences in salaries are correlated with the variables reported. We have found that we can do this using a simple, linear equation (a + b + c + …), developing the coefficients from the survey data. The coefficients are contribution components: by summing the coefficients corresponding to programming language, job role, or other variables, we obtain an estimate for their salary. Note that not all variables get included in the model, because the method used to generate the model penalizes complexity to avoid overfitting and thus deems many variables insignificant. In each section we mention the relevant, significant coefficients, and at the end of the report we repeat those coefficients when we show the full model. A primary motivation for constructing a linear model is to clarify the relationship between salary and demographic or role-related variables when two variables are highly correlated. It is worth remembering that correlation does not imply causation. A classic example involves meetings: just because salary clearly rises with the weekly number of hours spent in meetings, don’t expect to get a raise just by maneuvering to add meetings to your schedule! Keep in mind that the survey methodology does not support what may, intuitively, seem like reasonable assumptions of causation from even the strongest correlations—testing for causation is a difficult process at best. We excluded managers and students from the model because many of the features we think might help determine salary, such as language use, likely work differently (if at all) for these groups. We also exclude those working fewer than 30 hours per week.

Geography ONE OF THE MOST BASIC PIECES OF INFORMATION with a strong effect on salary is geography. Top countries where respondents were based were the UK (26%), Germany (14%), Spain (6%), Poland (5%), and the Netherlands (5%); 10% were based in countries not currently in the EU. Thirty countries had at least 20 respondents in the sample, allowing for a more detailed view of salary by region. We should note that, even so, not every country is assigned a separate coefficient: coefficients are chosen for world regions (usually continents) or for countries where salaries vary greatly from those in other countries in the region. In this section, therefore, we compare European countries to each other and to other regions of the world. We also note that the positive and negative US dollar amounts quoted as coefficients are only the beginning of a salary estimate: more coefficients will be added later on. After the US, Switzerland, and Japan, the highest geographical coefficient was Australia’s, at +$29,636. New Zealand and Canada were lower (+$17,433 each), while Latin America (chiefly Brazil, Mexico, Argentina, and Colombia) had a coefficient of –$9,057, below Asia but above Eastern Europe. South Africa (the only African country represented in the sample) had a relatively high median salary—$46K (compared to $31K for Asia)—but the South African respondents also tended to be among the most experienced in the sample, so their coefficient was only –$3,766. This is likely just a quirk of the sample and is another good example of why the linear-model coefficients are a better lens to compare features than median salary. Switzerland: +$19,161 United Kingdom, Ireland, Norway, Denmark: –$5,513 France, Sweden, Belgium, Finland, Austria: –$22,283 Spain, Italy, Greece, Portugal, Turkey: –$35,911 Poland, Romania, Czech Republic, Ukraine, Hungary, Slovenia, Slovakia, Estonia, Bosnia and Herzegovina: –$42,594 Russia: –$45,224 Salaries in Europe were uneven, with differences among European countries as great as those between world regions. The model assigned numerous coefficients to Europe, grouping countries into six sets. Switzerland was in a class of its own, with a coefficient of +$19,161, and was the only European country with salaries comparable to the US and Japan. Northern/Western Europe tended to have higher salaries, with the UK, Ireland, Norway and Denmark assigned a coefficient of –$5,513, and Germany and the Netherlands a coefficient of –$12,494. The next group of countries was France, Sweden, Belgium, Finland, and Austria, with a coefficient of –$22,283. Scandinavia was split, Sweden and Finland appearing to have, on average, lower developer salaries than Norway and Sweden. Developer salaries fall as we head into the rest of Western Europe: Spain, Italy, Greece, Portugal, and Turkey had a coefficient of –$35,911. Not far behind, with a coefficient of –$42,594, were countries of Eastern Europe: Poland, Romania, Czech Republic, Ukraine, Hungary, Slovenia, Slovakia, Estonia, and Bosnia and Herzegovina. (Note that a number of countries in the region are not included, since they were not represented in the sample.) Finally, Russia had the lowest salary coefficient in Europe, –$45,224. It is worth noting that comparing salaries by country can be difficult since currency exchange rates fluctuate; Russia is a good example of this, and had the survey data been collected just a few years ago, the coefficient would have likely been radically different. Many European respondents received substantial raises over the past three years, although a large minority stagnated.

Company Types THE SURVEY INCLUDED QUESTIONS ABOUT INDUSTRY, COMPANY SIZE, AND COMPANY AGE. Software was the most well-represented industry (36%, rising to 41% when including cloud services, security, and search/social networking), followed by consulting (14%), and banking/ finance (6%). Banking/finance respondents had the highest median salary, $75k, and a model coefficient of +$16,260. The only industry with a negative coefficient was education (–$6,438). IT consulting (but not non-IT consulting) had a positive coefficient (+$8,419), and combined with the +$8,832 coefficient for self-employment (i.e., company size equals one) paints a favorable picture of solo consulting (2% of the sample were self-employed consultants). But it should be noted that these coefficients may simply be offsetting further coefficients such as the one for team size, which favors larger teams. Salary distinctions among companies by age (e.g., startups versus mature companies) were subtle enough to be ignored by the model. Very large companies (over 10,000 employees) made up 12% of the sample and had a median salary of $70 and a coefficient of +$5,156. Old companies (over 20 years old) made up 32% of the sample, and although respondents from these companies had a higher median salary ($63k) than respondents from younger companies, company age over 20 years did not have a coefficient in the model; in other words, the salary discrepancy of this group is likely due to other variables. While company size and age correlate (larger companies tend to be older), the exceptions to this pattern highlight why the previously listed coefficients were chosen: respondents from small, old companies had a median salary of $47k (14% of the sample).

Team Structure SEVERAL QUESTIONS ON THE SURVEY FOCUSED ON TEAM STRUCTURE, the most basic of which was how many people work on the respondent’s team. Salary appears to steadily increase with team size, and with this variable the coefficient is not binary but multiplicative, equal to +$184 times the number of team members. A slightly different team metric is the size of a team for a typical coding project. The median project team size was 4, with 31% of the sample reporting their typical project team size to be over 5 people. No variables based on answers to this question were significant in the model. Another question about team structure was whether the respondent worked with people in various roles. Most respondents reported that they work with (other) programmers (89%), product managers (72%), and designers (58%), while 37% said they work with salespeople. The only variable from this question with a positive coefficient was for other programmers, of +$5,332. The small share of respondents (2%) who did not work with people in any of the above roles had a median salary of $37k.

Individual Background WE NOW MOVE ON TO DETAILS ABOUT INDIVIDUAL RESPONDENTS. Gender The sample was overwhelmingly male (94%), a breakdown even more skewed than the worldwide results of the survey (where 91% were male). Women in the sample earned less than men, with median salaries of $52k and $56k, respectively, but there was no coefficient for gender included in the model. Education A majority of respondents (56%) had an academic specialization in computer science and 13% had a background in mathematics, statistics, or physics, but no particular specialization was significant in the model. Having a Master’s degree (of any discipline, but we assume most were CS or something technical) is also not significant in the model, but a PhD adds +$7,906. Age and Experience The age range was skewed toward youth: over 60% of the sample was under 40. Salary increased with age, the most well-paid demographic being the 56–60 cohort who earned a median of $71k (followed closely by those aged 41–45). However, we also asked about years of experience, and this appeared to be the actual predictor of salary: given a certain level of experience, age is no longer a factor and thus did not have any associated coefficients. According to the model, developers can expect an additional +$1,257 of pay per year of experience. This is independent of title, role, and tasks, which the model shows affecting salary in different ways (discussed next).

Title, Role, and Tasks WE TOOK TWO DISTINCT APPROACHES to defining the roles of respondents. The first was a text field for job title, which we parsed to assign respondents to a category. The most common (cleaned) title was Engineer/Developer/ Programmer, with 45% of the sample. Engineers or developers with “Senior” in their title made up a further 15% of sample. Two titles were given positive coefficients: Principal/Lead (8% of the sample, for +$6,254) and Architect (7%, for +$10,990). As mentioned at the start of this report, managers and students were excluded from the model, so there were no coefficients associated with them. The second approach to capturing respondents’ roles was to ask whether they engaged in specific tasks. The three possible answers to each of the 16 task questions was “no involvement”, “minor involvement”, and “major involvement”, which was defined as a task that “is essential to most or all of your projects and responsibilities, and that you perform frequently (most days)”. The two tasks with the greatest involvement were writing code for collaborative projects (72% major, 21% minor) and reading/editing code originally written by others (61% major, 32% minor). Even though neither of these tasks had associated coefficients, their high engagement rates highlight the importance of collaboration in software development: it is often a very social activity. Back-end web development was also very common (56% major, 26% minor), more than front-end web development (32% major, 38% minor) or mobile development (11% major, 26% minor), while only 16% of the sample had no involvement in web or mobile development. The coefficients related to these development distinctions were all penalties: major involvement in mobile development had a coefficient of –$3,593 and lack of involvement in back-end web development had a coefficient of +$3,606. “Planning large software projects” was a task that may seem to be synonymous with architect (a job title category), but some respondents selected more than one task, meaning that the tasks appeared to be interpreted quite broadly. Thus, a full 45% of the sample (most of whom were not architects) reported major involvement in planning large software projects. We did not use tasks to determine who was a manager and therefore should be excluded from our model; we used job title for that.” A modest coefficient was produced for major involvement in teaching or training others: +$3,499. Even with questions about management, title, and years of experience, it is difficult to obtain a reliable metric of “level”, the track of vertical career advancement that, we assume, plays an integral part in determining salary. Variations in team and management structure, and inconsistencies in title distinctions (e.g., “senior”, “staff”, “principal”) contribute to this fuzziness. One variable that we have found serves as a decent proxy for level is the number of hours spent in meetings. The coefficient of +$150 per weekly meeting hour can be added in addition to any other management- or level-related features. If we consider those professionals who spend somewhere around half of their time in meetings (2% spent over 20 hours/week in meetings), this coefficient can easily dwarf most other coefficients as a contribution to salary estimate. As with the worldwide pattern, salaries in Europe tend to go down with time spent coding, which makes sense because time spent in meetings tends to raise salaries.

Programming Languages PROGRAMMING LANGUAGES NATURALLY PLAYED A CENTRAL ROLE IN OUR SURVEY, and turned up important coefficients to explain salary differences. They also showed some correlations with other variables. Correlations A few differences in programming language by country and other variables are worth pointing out. Country C#/ASP.NET/Visual Basic is more common in the UK (27%) than in Germany (12%); 19% of the rest of the sample (not in the UK or Germany) uses C#.

PHP is more common in Germany and the Netherlands (25%) vs. 17% in the rest of the sample. It was very rare in Ireland with just 4% (only 2 of 48 Irish respondents reported using PHP).

Germany had more Bash users (41% vs. 29%) and fewer ASP/ ASP.NET users (19% vs. 38%) than the rest of the sample. Company size Smaller companies do more front-end web development: in companies with 2–25 employees, usage was high for CSS (47%), JavaScript (61%), HTML (61%), and PHP (26%). For the rest of the sample (mainly larger companies), the corresponding figures were 34%, 50%, 46% and 16%, respectively. Respondents from small (2–25) companies used Java less (29% vs. 40%).

The largest companies (>10k employees) used C/C++ more, 26% vs. 15% for smaller companies. Company age Young companies (2 to 5 years) had higher rates of Ruby (18% vs. 11%) and lower rates of ASP/ASP.NET and C# (4% and 9%, respectively, vs. 12% and 23%).

Old companies (> 20 years) used C/C++ more (24% vs. 13%) with lower rates of JavaScript (45% vs. 56%). Industry Compared to the survey results as a whole, certain industries showed variations, including: Publishing / media uses C/C++ less (0% vs. 17%) and C# less (6% vs. 21%).

Cloud Services / Hosting / CDN uses Ruby more (33% vs. 11%).

Carriers / Telecom uses JavaScript less (33% vs. 53%).

Manufacturing (non-IT) uses Java less (10% vs. 38%).

Consulting (IT) uses Java more (51% vs. 36%).

Computers / Hardware uses C/C++ more (50% vs. 16%). Education Respondents with a master’s degree tended to be less likely to use CSS (30% vs. 45%), JavaScript (47% vs. 58%), and HTML (42% vs. 56%). This may demonstrate the widespread assumption that front-end web development doesn’t need as much formal education.

Those with an academic speciality in mathematics, statistics, or physics tend to use Python more (41% vs. 23%) and PHP less (10% vs. 20%).

Those with an academic speciality in computer science tend to use Java more (44% vs. 30%).

Those with a PhD use Python more (41% vs. 24%).

Respondents who are currently students (full or part time) are much more likely to use LISP (13% vs. 3%). Experience Perl 5, Lua, and Visual Basic .NET have, on average, the most experienced respondents (average of 15–17 years of experience in their field).

Ruby, CSS, and Clojure have, on average, the least experienced respondents (respondents using these languages averaged about 11 years of experience). Team Size Visual Basic .NET, Clojure, and Ruby were relatively more popular in small teams (average of about 6 people on a team).

Scala, Java, and Lua were more popular in larger teams (average of 8–9 people). Past/Future Languages Respondents were asked not only which languages they currently use, but also which ones they have previously used (but no longer do) and which ones they are planning to learn within the next 1–2 years. Most respondents had at least one “past” and “future” language: only 18% of the sample had never used a language professionally that they no longer use, and 17% did not plan on learning any new languages. The most common “past” languages were C/C++ (35% of the sample), PHP (25%), Java (23%), C# (18%), Visual Basic .NET (15%), and HTML (14%). This does not necessarily mean these languages are dead or dying: Java and C#, for example, were reported more frequently as currently used languages than as past languages. Visual Basic, on the other hand, was reported more frequently as a past language than a currently used one: 15% versus 3%. Four coefficients are associated with past languages: Bash (+$6,322), Clojure (+$12,549), Objective-C (–$3,869) and Perl 6 (+$14,743). Interpreting these bonuses is not straightforward. A positive coefficient can be spun negatively since the respondents got a big boost in their expected salary when they stopped using the language, but it could also be taken in a positive light: these languages may have served as important career steps or learning paths. Most respondents (54%) selected one or two languages that they would like to learn (most of the rest selected three or more). The top choices were Go (21% of respondents), Scala (19%), Python (17%), Swift (16%), JavaScript (14%), and Clojure (11%). Preferences in Europe were similar to the rest of the world. There is a clear distinction on the to-learn list defined by the ratio between those that currently use the language and those that want to learn the language. In the case of Go, Swift, Scala, Rust, Clojure, Haskell, Elixir, Erlang, and F#, there are far more people who want or plan to learn them than currently use them. In contrast, Python, JavaScript, Ruby, and Java are used by more respondents currently than they were chosen as learning goals. One final analysis we can make of the past-present-future languages is to associate them in language paths. For example, respondents who previously used C/C++ tend to use Java now, and those who use Java now tend to want to learn Scala. The most common paths are shown in the following graph (**or name of graph, etc.**). While these pathways were not included as additional features to the model, we can look at the median salaries of respondents who took a particular path. The common paths taken by the most well paid respondents was C# > Bash > Go (median salary $60k), while respondents who took the C/C++ > HTML > Python path had a median salary of only $31k.

Work Week Most of the sample (60%) worked between 40 and 45 hours per week, with 3% working over 55 hours. European work patterns tended to match world patterns in terms of hours put in. Work week correlated well with salary and produced a coefficient of +$988 per hour—much higher in Europe than in the global model. (As mentioned earlier, those who reported a work week shorter than 30 hours were not included in the model.) As with past languages, the coefficients for future languages do not lend themselves to obvious explanation: Erlang (–$3,867), Ruby (–$5,363), and C# (–$7,721) all had negative coefficients.

Bargaining and Ease of Finding Work RESPONDENTS WERE ASKED TO RATE HOW WELL THEY CAN BARGAIN on a scale of 1 to 5. Most respondents gave themselves a 3 or 4. Although this is a highly subjective rating, we asked the question because we find it necessary to have some proxy for bargaining skills, since this can have a huge effect on your eventual compensation. Bargaining points correlated highly with salary, and the model predicts a salary boost of +$4,290 for each point on the scale. A related question, similarly opinion-based, was the ease of finding new work. In some cases this may be obvious (for example, if the respondent has job offers on the table, or had recently been looking for work unsuccessfully), but in most cases it is probably just as rough a measure as bargaining skills. The average score, also on a five-point scale, was 3.8. Since this is not a variable that we can change (that is, in the same way that we can move to new states or countries, learn new tools, or shift careers to new roles), this variable was not included in the model.

The Model in Full THIS SECTION PRESENTS EVERYTHING WE FOUND IN OUR STUDY that has a predictive effect on salary—with the warning, as stated earlier, that the variables may not control or cause salary changes. The model has an R-squared of 0.475, which means that the model explains approximately 48% of the variation in the sample salaries. To use the model, proceed through the coefficients and add or subtract the ones associated with a feature that applies to you. Remember that some coefficients are multiplied by a factor: number of hours in your work week, years of experience, numbers of tools in a cluster. Once you sum up the coefficients, you will obtain an estimate for your annual total salary in US dollars. Work week, per hour: +$988

Experience, per year: +$1,257

Bargaining skills, per point (scale of 1 to 5): +$4,290 Switzerland: +$19,161 United Kingdom, Ireland, Norway, Denmark: –$5,513

Germany, the Netherlands: –$12,495

France, Sweden, Belgium, Finland, Austria: –$22,283

Spain, Italy, Greece, Portugal, Turkey: –$35,911

Poland, Romania, Czech Republic, Ukraine, Hungary, Slovenia, Slovakia, Estonia, Bosnia and Herzegovina: –$42,594

Russia: –$45,224 Industry = Banking/Finance: +$16,260

Industry = Consulting (IT): +$8,419

Industry = Education: –$6,438

Company size = 1: +$8,832

Company size = 10,000 or more: +$5,156 Team size, per team member: +$184

Works with (other) programmers: +$5,332 PhD: +$7,906 Title = Architect: +$10,990

Title = Principal/Lead: +$6,254

No involvement in back-end web development: +$3,606

Major involvement in mobile development: –$3,593

Minor involvement in hardware development: –$4,595

Major involvement in teaching/training others: +$3,499

No communication with people outside of the company: +$4,115

Hours spent in meetings, per hour/week: +$151 Cluster 4 (Unix tools): +$2,636

Cluster 5 (Cloud): +$698

Cluster 6 (Python): –$1,234

Cluster 7 (.NET): –$1,114

Cluster 8 (LAMP): –$2,206

Cluster 10 (Editing 1): –$3,485

Cluster 11 (Distributed computing): +$173

Cluster 12 (Editing 2): +$3,149

Cluster 13 (Scala): +$1,112

Cluster 14 (Apple): +$2,262

Cluster 15 (Clojure): +$945 Past language, Bash: +$6,422

Past language, Clojure: +$12,549

Future language, Objective-C: –$3,869

Future language, Perl 6: –$13,743

Conclusion IN ANY INDUSTRY, IT IS WISE TO KEEP IN TOUCH WITH

RELEVANT TECHNOLOGICAL CHANGES that could affect

your career. In a field such as software development where

the tools change so rapidly, this becomes an increasingly

challenging task. This report is intended to give a quantitative

look at the various careers and profiles of software

professionals, and shed some light on what your next

step might be, whether it is to learn a new language or

to shift roles. Surveys certainly have drawbacks, especially when the

sample is self-selected. In our conclusions here, we rely

on the assumption that the people who took the survey

are reasonably representative of the entire software

development world, or at least some important subset

of it. The O’Reilly programming audience—from which the respondents generally come—has a proclivity toward

choosing open source and emerging technology, and this

will affect the results: the percentages of respondents

who used certain tools, for example, are probably not

good estimates of the global development rates. The correlation-causation distinction should certainly be kept

in mind when reading this report, but it is worth noting that,

while correlation does not imply causation, correlation does

not deny it, either. If you were planning on learning a new

tool or language anyway, it’s not a bad idea to choose one

that correlates positively with salary, if it suits your professional

needs. Generally speaking, a broader skillset is respected in

the software world and learning more tools always opens new

doors. Taking into account the information in this report might

increase the chances of opening a door with a bigger paycheck

somewhere on the other side.