Are you a C++ programmer? If so, some surveys say that you're probably making more than most of your peers. Then again, maybe it's Java. Or Objective-C. It depends on which study you're reading.
Of all the programming languages out there, C++ rules as the highest-paying software language for software engineers, followed closely by Python, according to Startup Compass' March 2015 study, How Much Should You Pay Your Engineers.
But wait! The Stackoverflow 2015 Developer Survey says the salary winner is Objective-C, while Sitepoint.com analyzed data on 500,000 IT vacancies in the US, UK, and Australia in 2015 to declare Java as top dog in the US, C# in the UK, and JavaScript in Australia.
Perhaps an academic source would be more reliable? The highly respected IEEE Spectrum Survey (nifty custom chart builder included) considered and weighed multiple disparate data sources in a complex ranking algorithm to come up with...Java.
Salary and skill surveys are released every year. The results may differ, but general trends can provide valuable insights. So how is this information valuable to you? As to average salaries, there's no such thing as an "average" job or an "average" developer, and there many factors other than programming language to consider when examining salaries. But you can use this data to spark some ideas about new skills to learn, how to negotiate a salary, how to break through the salary ceiling, and how to plan your career direction.
A caveat about surveys
You can't really compare surveys that use different data sources, and there's no strong evidence that, say, the popularity of a programming language among open-source repositories correlates with market demand or salaries. For example, there's a ton of COBOL still in use, but very little of it is on Github.com.
Furthermore, no survey can be definitive, because:
- Not all jobs are advertised
- Large enterprises skew the results because they hire lots of people
- Most salaries are listed as ranges
- Job titles vary wildly
- Geography and available local populations matter
- Few jobs require only one skill
So what can you do? Is any of this information useful? Readwrite.com advises against relying on salary data when considering what languages to pursue. "Current demand says nothing about earnings potential...code in the language that best expresses the future you most want to see."
That may be true but only when used by individuals in the context of their own career planning. You have to not only imagine the future you want but also predict the future you think is most likely, then find a way to bridge the two, while balancing many other factors in your life.
That's not so easy. Humans are notoriously bad at predicting the future, but some trends, such as the growth of data science and InfoSec, are more obvious than others. Which trends are relevant to you?
The right way to use survey data
Here's how to best make use of this data: interpret the trends and see where you stand relative to the averages to generate ideas for future career opportunities.
If you browse through the various survey results, you may get the impression that you're overpaid, or underpaid, or even just "average." The numbers matter less than the probable causes. For example, if you live in an average town but earn less than the median salary for your skill set, what's the source of the discrepancy? Is it your level of experience? Your negotiation skills? The company you work for? The local economy? There are many factors that can make your salary vary from survey figures, which is why blindly jumping on the Java train (or whichever one looks hot) isn't a good plan. In the enterprise world, for example, Java and C# still dominate, and the difference between the average salaries is only about five percent.
Use the data to spark ideas. You may run across languages, skills, and certifications you didn't know about or hadn't considered. Which, if any, are of interest to you? Which operate in areas that you're familiar with or could learn? Which could be easily added to what you already know, and which ones might require learning a new paradigm or several supporting skills? Which are in demand—and where?
Geography plays a significant role in compensation, despite the growth in telecommuting. Most of the hot startup jobs are in a few areas known for having hot startups, and relocating is an expensive, life-changing undertaking that may or may not be worthwhile.
For example, here's a table of results for the median software developer salary in some major cities, along with the locality's cost of living index, sorted by net percentage against the national median:
Area | % against national median | Cost of living index | % vs. cost of living |
San Francisco | 30% | 184% | -54% |
New York | 15% | 167% | -52% |
Sunnyvale | 35% | 180% | -45% |
Mountain View | 46% | 188% | -42% |
Boston | 4% | 144% | -40% |
San Diego | 4% | 144% | -40% |
Los Angeles | 3% | 142% | -39% |
Washington | 4% | 136% | -32% |
San Jose | 28% | 157% | -29% |
Seattle | 22% | 142% | -20% |
Chicago | -3% | 113% | -16% |
Atlanta | -7% | 107% | -14% |
Minneapolis | -7% | 107% | -14% |
Denver | -3% | 107% | -10% |
Austin | -2% | 104% | -6% |
NATIONAL MEDIAN | 0% | 100% | 0% |
Source: Data collected manually from Payscale.com and Areavibes.com cost-of-living data.
Consider Mountain View, California as an example. As of September 2015:
- The cost of living is 87.9 percent greater than the national average.
- The median software engineer salary at Google is $104,112.
- The US median software engineer salary is $78,084.
So the average pay in Mountain View should be around $146,798, not $104,112. Ouch! Not a good deal, unless you want to downsize your lifestyle considerably. But it might be a good deal if there are insufficient advancement opportunities locally or exceptional opportunities elsewhere. Also note that some companies in that area pay exorbitant salaries for certain highly specialized, highly accomplished individuals. Perhaps one should learn how to become a unicorn?
No language is an island
Look at the ecosystem associated with a language, rather than just considering the language itself. Frameworks, libraries, and associated tools may be more important than the core language. C# isn't difficult to learn, for example, but the .NET framework is huge. You may already know JavaScript, but do you also know one or more of the common MVC frameworks routinely used in front-end web/mobile development?
Take Python, for another example. Some surveys have Python commanding $100K+ in salary, but others cite much less. The reason: Python is used in two different ecosystems, and the one that pays $100K+ typically requires an advanced degree in data science, and you'll probably have to move to a part of the US where $100K won't go as far as you'd like.
Reconnoiter the target environment
Once you decide that language X or tool Y might be a profitable step, reconnoiter your target, and learn about its ecosystem (and its paradigm, if it's new to you). Read about it online, look at the kinds of questions people ask about it on programmer sites, see what educational materials are available, and think about whether it will be worth the effort. Then go to user group gatherings, meetups, and conferences to learn about the new ecosystem, and network in those social circles. Here's why: most jobs aren't advertised, and in-house referrals are preferred. Those already in the ecosystem will tell you about opportunities you might otherwise never discover.
Google is your friend. Make notes of anything mentioned that you don't understand, research it, and decide if you need to learn that, too. Contribute to open-source projects to practice your new skills and to add to your reputation in the community. Blog, if you're so inclined, about your learning experiences. Read, ask, and answer questions on sites like Stackoverflow.com, Programmers.stackexchange.com, Codeproject.com, and Quora.com. In other words, seriously explore the new world you want to enter before trying to make the leap. This takes time, but if you're serious about making the leap, it's best to be thorough. And, it helps that other people will know that you now have this new skill.
Salary factors
Many factors affect salary, other than just programming language choice. These include:
- Experience
- Soft skills
- Negotiation skills
- Geographic/local demand and supply
- Cost of living
- Full stack
- Additional skills
- Education
- Cultural fit
- Specialization
- Domain experience
- Education
- Ability to travel/relocate
"Overall, those who command the highest salaries are those who have both a deep understanding of technology at all layers of the application, as well as those who can most effectively work in a team environment," says Dave Todero, president and COO at Ascendle.
The best jobs are often more about soft skills than specific languages. As noted, most of the employment growth since 2000 in jobs requiring cognitive skills (which include software development and many other occupations) has been in jobs that also require interpersonal skills. And of the top 10 jobs with the highest salaries, only one, data scientist, is IT-related.
"While technical skills can get a candidate in the door, soft skills can help get them the job. It's assumed that software engineers will possess the relevant technical skills and certifications. But candidates should not overlook the need for soft skills, such as the ability to solve problems, to communicate well, and overall cultural fit, especially if they want to be considered for leadership positions," says Jamie Seward, regional recruiting manager for mid-South region at Adecco.
Salary ceiling
Does your company have a salary ceiling, and are you up against it? If so, the simplest solution, if you did your homework and know you can do better elsewhere, is to change companies.
One should always be learning and improving—you have to do that just to stay current, much less get ahead—but the hard truth is that there are limits to the available raises and promotions at any given company. Your current employer can only promote you if there's a vacancy or a new job created. Raises are often limited by HR policies, especially in midsize and large companies, so you can hit the salary ceiling rapidly. Thus, job-hopping is usually the fastest way to raise your salary in increments above the cost-of-living and incremental seniority progression typical of most established companies.
But other companies are willing to pay whatever the market demands. "I don't see a ceiling for developers who stay somewhat current and relevant. Security, big data, cloud, and mobile will continue to be areas of great demand today, and that isn't going to change anytime soon," says Cody Horton, head of talent acquisition at ThoughtWorks. For Horton, meeting a salary requirement isn't the big hurdle when recruiting. "One of our biggest challenges is hiring developers who are willing to travel," he says.
Striking a balance
Finally, remember that what's hot today in salary trends and programming languages can change at any time. Because current trends may not be sustainable, it's important to know what else is out there, and salary surveys do an excellent job of documenting that. Use them to see where the industry is going and to ensure that you're not just in a well-paying position but in a growing discipline with a bright future.
Keep learning
Take a deep dive into the state of quality with TechBeacon's Guide. Plus: Download the free World Quality Report 2022-23.
Put performance engineering into practice with these top 10 performance engineering techniques that work.
Find to tools you need with TechBeacon's Buyer's Guide for Selecting Software Test Automation Tools.
Discover best practices for reducing software defects with TechBeacon's Guide.
- Take your testing career to the next level. TechBeacon's Careers Topic Center provides expert advice to prepare you for your next move.