Whether you’re a seasoned pro or just getting started, as a developer it’s important that you stay on the lookout for opportunities to learn new languages, fameworks, and tools. This is crucial if you want to stay relevant and competitive in today’s job market, as well as increase financial reward.
In this post, I’ll take a look at some of the most in-demand technologies and what effect learning them can have on your salary. I know that salary isn’t necessarily the most important factor when you begin your journey as a professional developer, but it is definitely a key part of the equation, and serves as a good barometer for how much employers are valuing particular skills. You can use this information as a guide to help you figure out what is trending; you may just find something new to learn that you can use in your career.
Methodology
The salary data in this post is based around developers who have 0-2 years of experience and work in a small to medium enterprise (i.e. 101-500 employees), using data from salary aggregator websites. The geography for all data was controlled for the Seattle, Washington area.
The trends here hold up quite well across the industry, but should be taken as general indications to help guide your decision-making, not precise projections of your own future salary. Salaries will vary depending on the industry, geography, company size, your own level of experience, proficiency at interviewing, negotiation skills, and a number of other factors.
What programming language should I learn first?
This is definitely debatable, but there are a few staple languages that beginning developers should look into: Python, Java, C++, and JavaScript. These are great first languages to learn for a few reasons:
- There’s no shortage of jobs for developers who know these languages, nor is there likely to be any time soon.
- They’re relatively straightforward to learn (some more than others - I will get into this shortly).
- They teach you how to think like a developer and will help you build a solid foundation in programming logic and syntax.
- There are countless resources available to learn them.
One question you should ask yourself before deciding is, “What aspect of programming do I want to get into?”. Are you interested in frontend development, backend, or both (i.e. fullstack)? This will help guide you when selecting your first language.
That said, the chart below displays the average salary for a developer who specializes in one of the above mentioned languages.
Python
Developers who specialize in Python are rewarded with the most generous compensation, with an average salary coming in around $95,706. Python in its various applications is growing rapidly, from game/web development to data science and machine learning, hence the high demand for Python developers.
Python serves just about any use case; it’s flexible, powerful, and yet simple to learn. It’s a high-level language that makes code easily readable, while bypassing a lot of the confusing syntax.
Regardless of what you want to get into, Python will be a very valuable skill to have in your stack, and will be useful in just about any career.
To get started learning Python, check out Educative’s free course Learn Python from Scratch.
Java
Java is routinely among the most sought after languages by employers for its simplicity and wide range of use cases. Developers who specialize in Java aren’t likely to have a problem finding decent pay, with an average salary of $88,483.
While Java has historically been seen as the most desired skill by a lot of companies, Python is surpassing it because of the breadth of use cases it serves. Compared to Python, Java has a little more of a learning curve, but it’s still regarded as one of the more simple languages to learn.
Java developers enjoy a range of specializations - Java software runs on everything from phones to game consoles to data centers. It’s an exciting time to be a Java developer as the language is continually evolving, giving you the opportunity to be on the cutting-edge of new technology.
If you’re serious about becoming a professional developer, it won’t hurt to have some Java experience in your back pocket.
To get started learning Java, check out Educative’s free course Learn Java from Scratch.
C++
If you want a challenge that will set you apart from other developers, learn C++. To start out, C++ developers see an average salary around $88,190, but don’t expect to stay there for long. Why? C++ is experiencing a “second life” due to its applications in areas like self-driving cars and IoT.
Additionally, C++ is a fairly difficult language to master, and as more and more developers lean towards other multi-purpose languages, the need for capable C++ developers will only grow. If you stick with it, the rewards can be high.
As alluded to, C++ has a steep learning curve, but learning it will make you a better developer as you’ll start to understand how computers, compilers, and languages work, and ultimately how your program affects the system. C++ is close to the metal, just a few steps away from assembly code, and will give you a greater understanding of the building blocks of programming.
If you really want to understand programming at its core, then C++ is a great language to start.
To get started learning C++, check out Educative’s free course Learn C++ from Scratch.
JavaScript
If you’re serious about frontend or fullstack development, then JavaScript is a must-know language. When starting out, the average salary you can expect is around $87,903.
What’s great about JS is that it’s an easy language to get started with and companies like Facebook are creating useful libraries and frameworks (e.g. React) to make developing in JS even easier and faster.
Where you can really set yourself apart is by adding a framework or library to your JavaScript skills, which will be discussed later in this post.
It’s a great time to be a JavaScript developer as there are many advancements being made to make the language even more versatile and robust.
To get started learning JavaScript, check out Educative’s free course, Web Development from Scratch, which will also give you an excellent overview of the core HTML and CSS skills you’ll need to become a frontend developer.
What programming language should I learn next?
Once you’ve selected frontend or backend as your domain of choice, and you’ve gained a solid foundation of programming principles in your first language, it may be time to explore what else is out there. The chart below displays the average salary for a developers by programming language.
When you start choosing a second language to learn, it’s good practice to find one that challenges your existing thought process. For example, if you’ve been working with functional programming principles, try a language that uses object-oriented principles and vice versa. Doing this can help broaden your skill-set and give you the ability to easily plug in to different teams. This is particularly important for early-career developers who are still finding out exactly where they’d like to focus.
It’s important to keep in mind that certain programming languages are better suited to solving particular types of problems, so you should take into account each language’s use cases, advantages, and disadvantages.
With that in mind, based on the four languages mentioned in the first section (Python, Java, C++, JavaScript) here are a few others that are worth looking into.
For Java developers, a great language that will challenge you is Scala. Scala was designed to be a better Java, where it molds functional and object-oriented programming into one concise package, giving you the freedom to work in a variety of styles.
For Python developers, you may want to check out C++. C++ is a great language to learn at any point in your career because you’ll start to really understand how programming and computers work, unlike high-level languages (i.e. Python) which hide many essential operations from you.
For C++ developers, you should look into either Rust or Go. One common pitfall of C++ is the way it deals with memory management and concurrency. Languages like Rust and Go use a different memory management model that makes creating safe, concurrent programs much easier.
Why are the average salaries so high for Scala and Go? With major improvements to Scala, companies are taking notice and are quickly adopting the language to build out scalable programs based on required needs. Scala is also typically used in an enterprise setting which is also why the average starting salary is so high.
As for Go, it’s a relatively new language with some awesome functionality, and fewer developers proficient in it. It’s in high demand, especially for enterprises. It’s well suited for modern development and programs that make use of microservice architecture. The need for Go developers is quickly rising and that’s part of the reason why you see them making so much money.
For JavaScript developers, you should learn HTML and CSS, but you should also invest some time in learning some of the libraries and frameworks available to you (React.js, Angular.js, Node.js, or Vue.js).
Whichever language you choose to learn next, be cognizant of your career path. For example, it wouldn’t necessarily be a useful pivot for C++ developers to learn something like HTML (although if you have the time, it never hurts) because they serve very different purposes.
Interested in learning any of these languages? You can explore some of our free and paid courses here.
Frontend Devs: What should I learn after JavaScript? Explore these frameworks and libraries
JS wouldn’t be what it is today without its many frameworks and libraries. The chart below displays the average salary for a developer who specializes in one of the mentioned technologies. In this case, we are comparing developers who know only JS and what happens when they add one of these frameworks or libraries to their skillset.
StackOverflow’s 2019 Developer Survey shows that JQuery, React.js, and Angular.js are the most popular libraries and frameworks. They’re widely used in professional development, and while they do share some similarities, they’re different at the core and are often used to solve different problems. JQuery may be the most popular among the developer community, but it is becoming a lot less relevant in terms of modern frontend development.
What’s interesting to note is the salary “decrease” shown by the data when you add JQuery as a skill. While it’s unlikely to actually decrease your salary, this does speak to the fact that companies are not expressing a great deal of interest in JQuery - at least not the companies that are paying large salaries.
If you’re interested in fullstack development, then you’ll want to invest some time in the very popular JavaScript runtime environment, Node.js. While the mentioned libraries andframeworks above are used for the client side, Node.js is used on the server side. Node.js combined with one of the frameworks mentioned above are exactly what you need to get started building both the frontend and backend of a web application.
In the end, you should choose the framework or library that you’re most comfortable with and one that satisfies the problem you need to solve.
If you know JS, it’s in your best interest to divvy up some time to learn these technologies. It will help you grow in your career, become a better developer, and it will almost certainly boost your salary.
Growing your skillset
There are a whole lot of libraries, frameworks, and tools out there. Not every tool is for every developer, so invest your time wisely.
Here are a few very prominent technologies that you can look into and what impact each one might have on your salary. In this case we are comparing our base developer with a developer who knows one of the following skills.
What’s interesting to note is the “decrease” in salary when you add Ansible and .NET as skills. While there probably won’t be an actual salary decrease for you, it may speak to the fact that these technologies are not sought after by the kinds of companies that are paying large salaries.
Kubernetes and Docker have taken the world by storm, and the need for developers who know these tools likely to continue to grow considerably. If you want to learn a new tool, it definitely wouldn’t be a bad investment of your time to start with these technologies.
If you’re a Python developer and have any interest in machine learning, then you’ll want to check out TensorFlow and Pandas.
Finding a database management system that works for you
There are a lot of databases that you can choose from; some are SQL-based while others are NoSQL-based. It’s not uncommon to find both being used together, so it’s suggested that you spend some time learning both. However, NoSQL databases like Redis and MongoDB are the preferred DBMS of developers.
If you need to focus in one direction, you’ll want to first decide how you want to actually organize your data. Do you want it to be relation (i.e. SQL) or non-relational (i.e. NoSQL)? From there, it’s best to understand the advantages and disadvantages of each DBMS. For example, many developers prefer working with MongoDB because of its JSON-like document storing method.
While MongoDB seems to be the most popular DBMS, we can also see a real demand for developers specializing in Redis.
If you’re uncertain of which database to choose, check out this diagram for a quick overview of SQL and NoSQL databases.
Developing in the cloud
Working with the cloud is now table stakes for the modern developer. Over the course of your career, you’ll need to be comfortable with building and deploying software on one, if not multiple, cloud platforms. If we take our base developer and add a cloud platform, the numbers show that AWS is currently in slightly higher demand.
What about Google Cloud Platform (GCP)? I excluded it from the report here because data was a bit too limited to make meaningful conclusions on, which may indicate where you should spend your time (i.e. AWS and Azure).
Mobile OS: Android and iOS
Do you want to develop apps for Android or iOS? For Android, the most common language to build apps is Java, and for iOS it’s Objective-C. While the breakdown below shows that iOS developers typically earn a little more, Android is quickly becoming the preferred OS for developers to work with.
StackOverflow’s 2019 Developer Survey points out that Android is the most used mobile OS.
Conclusion
It’s worth reiterating here that salary is not the most important thing for developers, and should almost always be a secondary consideration to your own personal interests and aspirations. However, if you’re going to invest time learning something, it’s useful to know what kind of return you can expect on that investment.
And even if you’re not planning to pick up new skills just yet, no matter where you are in your programming journey, it’s always a good idea to poke around and discover what technologies are trending in what direction.
What comes next?
Learning a new technology can feel overwhelming. Educative.io exists to make the process simpler. No matter where you are in your career as a developer, Educative’s courses will help you level up on in-demand technologies and get a leg up in the industry. Courses cover a broad range of topics, including most of the technologies mentioned here, as well as other interesting and in-demand skills like Machine Learning, Data Science, and System Design.
With text-based courses featuring in-browser coding environments, you can learn at your own pace, avoid the hassle of starting/stopping videos, and skip the process of setting up your developer environment. Get started today, and take your coding skills to the next level.
Happy learning!
Top comments (43)
Id caution that looking at the language is not the complete picture. It is important to note the domain of the language too. For instance, many jobs that advertise Python say things like Machine Learning using Python, or Computer Vision using Python. Its not just the language that is important bu the associated skills too.
Another good aspect to this is the supply/demand channel.
Oversimplified illustrative example with zero correlation to the real world population:
If there are
50 Python jobs,
500 Java Jobs and
1000 JavaScript (node) jobs,
but there are
20 Python engineers,
1000 Java engineers and
2000 JavaScript engineers,but only 10% of those are fluent in node as a backend language,
then the salaries will be based on the competition for engineers, not necessarily the language...
This is great base information, but definitely know your market too!
Got any hints for real world for someone starting to explore options?
Nothing data-based, but here are a few stereotypes and hasty generalizations with a few facts mixed-in.
All of this is very much based on my personal experience and just reading around, so YMMV.
You'll find a lot of lists of "most popular languages". They all have major flaws in their methodologies. TIOBE is based on searches, Github is based on lines of code in the Github DB, and Stack Overflow is based on questions/answers on Stack Overflow.
Pick a specialization (Typically Front-end, Back-end) to stick with for a while. Front-end tends to be easy to initially get in, but impossible to master/keep-up with the shifting landscape, and at higher levels you'll be dealing with the exact same algorithmic problems as the back-end, only from a different direction, often while the back-end folks think your job is "easy" (which is not true at all... but the bias persists)
Back-end isn't exactly the opposite, but you'll be hit with a lot more jargon and more complicated frameworks right away, so it's a little slower to get into. That said, the back-end difficulty tends to spike really quickly and once you get over the hill, back-end tech like Java or Python move at a lot slower (IE: Stable) pace than Front-end land, so mastery is faster than on the Front-end, but pickup is slower.
Specialization can drive the choice of language. In-general, you should be looking at JavaScript, Python or Java as a beginner (Pick ONE, not all haha). Ignore the rest for now.
JavaScript should be for a front-end specialization. It can be used (and I've done it and it's GREAT) for back-ends but don't focus on that as a beginner. You'll also need to choose a framework to further specialize in, but dive into JavaScript and THEN pickup the framework. You'll need HTML and CSS as a front-ender, and many times you may be on a team with four back-end engineers as the only front-end person on the team. In 2019 that's a TERRIBLE practice/ratio, but organizational structures never keep up with tech, and 10-15 years ago that made sense, and the structure persists in a LOT of teams.
Python has a similar "feel" to JavaScript on the back-end (and is my favorite pure back-end language), but the jobs available are more limited than Java, and it is being used commonly in machine-learning and Data-Science a LOT. So fewer jobs, the jobs that exist are highly specialized and might required advanced understanding of very specific tech AND a lot of code bases may have been initially written by a data scientist, not a software engineer. I highly recommend it, but go in with eyes wide open on its limitations in the marketplace right now, and don't take the above as a caution against it, just a signpost.
Java is an older technology, but it's been one of the most commonly used languages in the world for over 20 years. There is a LOT of code written in Java, so jobs will be easier to come by. It's starting to trend downward in popularity over the last few years, but by trend downward I mean "still normally number one, sometimes drops to number 2" instead of number one by a ridiculous margin like it was 10 years ago. That said, it's got some trickier syntax, working with common web tech (like JSON) is going to be more difficult than it needs to be, the documentation online is bountiful, but sometimes of dubious quality and it's highly geared towards Object-Oriented Programming. When looking at a career that might span the next 30 years I wouldn't recommend it as a first language for a brand new programmer... but I wouldn't tell anyone they're wrong if they chose it either, as it will be a lot easier to find Java jobs and there will be code that needs to be maintained for decades.
Honorable mention to PHP. But don't learn PHP as a first language in 2019 haha.
Sorry if that's too much all at once. It's highly opinionated and there are no "rules" to it, so I reiterate: Your mileage may vary.
Thank you so much. I appreciate the feedback. I started with a programming for data science course, completed it, and realized that that was NOT the way to go. So, I've been adrift trying to figure out in which direction to head. You're the second person who has suggested front-end web development as the path of least resistance initially. I do not forsee wanting to do front-end for years (as I am imagining a lot of it involves liaisoning with the end customer), but I do need a job sooner rather than later.
On average me and guy next door have 2 kids, even though i dont have any.
It is very flawed metric ;-)
Do you have preferred metrics to share? People have criticized things like the StackOverflow survey and State of JS results for bias but I'll gladly take several flawed metrics into consideration over no metrics. (And I hope that constructive criticisms will help make things better in the future)
If you want simple, median is equally easy to calculate but more useful.
And more advanced version of that, percentiles so that reader can try to assess his/her own ability to be average (median, p50), below average, or maybe super high on the scale like p95.
After all, people interested in their fields, educating themselves constantly (by reading dev.to, blogs, twitter, etc.), are usually far above average when it comes to skill/experience/being up to date.
👏
I am glad that I was not the only one that thought all of these salaries seemed extremely low. I completely agree with what you said and believe that people who are passionate about what they do will be paid far more than people who simply show up for a paycheck, as they are more likely to do a better job and become technical badasses.
Being from poorer part of Europe, for me they are high.
But specific numbers aside, we agree :)
Thank you for writing about this. In my opinion, in addition to the
breath
of your skill-set, an in-depth knowledge of one or more languages is equally important. For example, problem-solving skills, design patterns, system architecture, data structures, algorithms, and years of experience as a developer also play an important role in your job and compensation.For new developer and student, this might seem a lot to learn, however as
Fahim
pointed out at the beginningThere is always something new to learn, however, if you build a strong programming foundation then learning a new language or framework would be a mere change of
syntax
andterminology
.Lastly, do not forget to check out the Stack Overflow Developer Survey 2019 for a list of
loved/wanted
languages and frameworks.Since there is no mention of
Kotlin
, it's worth mentioning that it is getting a lot of traction lately as shown in the survey as well asGoogle
announcing it's their preferred language forAndroid
development and adoption by other majorjvm-based
frameworks such asSpring
.Thumbs up for Kotlin!
I'm curious- C# and. NET devs, what are your thoughts about this data?
remember, the post is localized to Seattle. I can tell you with certainty that C# and .NET are high paying skills in the energy industry.
I live in Houston where oil is the main industry and the Microsoft stack dominates the job market. my first dev job was writing C# and the salary was on par with the ones listed here
There are a lot of v. highly paid C#.Net jobs in the finance industry aswell!
This is that whole “know your market” thing. In Charlotte, heavy banking, energy, and healthcare industries, senior .NET dev base salaries are hovering around $110k - $120k.
My thoughts as well. I am in the process of switching to C#, but salary-wise, this appears to be a bad decision. At least, according to this post.
Microsoft primarily uses C# internally. There's also hundreds of sales people trying to get other companies onto the same stack.
If trying to optimize for highest pay, the best route is to found your own business. If that fails, found another business. Keep doing that until you have a successful business.
Being an entrepreneur has more earning potential than working for someone else, regardless of the language.
A programming career should be about doing something you love. Building quality applications should be your passion. You don't choose it because the salary looks good!
There's many jobs in the world paying high salaries that will kill you.
The highest paid people in programming are those with a real passion and talent for it, regardless of language.
Career-changer devs often get into programming specifically for earning more money. The "follow your passion" -type advice is for 1990's HS guidance counselors only, in my humble opinion.
Also thinking strategically and long-term: with all the bootcamps, international outsourcing, and no-code/low-code tools rising, these salaries are only going to decrease as the pool of workers increases. Choosing the more rarefied stacks now is a bulwark
Well I'd say you're making a mistake if you think "follow your passion" is for the 1990's. Your "passion" is what you want to do, whether that's programming, earning money or sky diving. If you're not doing what you want to do then you're not going to be happy.
If your passion is "earning more money", then dedicating years of your life to programming isn't a wise choice. You'll spend your time sitting down, looking at a screen and learning a very deep subject you don't care about. Slowly developing back issues while turning into a nerdy coffee addict who groans at the distant sound of a question.
A realistic salary of a senior dev is $150K, maybe up to $200k if you're particularly good. This is a huge a failure for someone whose goal is to become wealthy.
As for no-code/low-code tools and decreasing salaries. Who do you think builds and maintains these tools? That's right, people who are actually good passionate developers.
While the median programming salaries are decreasing, the higher paying jobs increase gradually. This is because the demand for lead/senior developers and architects is through the roof.
I said earning more money, not having a goal of being wealthy. Increasing your earnings and getting rich are certainly two different end goals. I don't think you mean to imply that simply desiring to increase one's income means that one has a passion for earning money or wants to become wealthy, do you?
Sometimes you need to find the most efficient way to pay the bills for your family. Not everyone who drives a truck, screens your lab samples, designs the print on your bedsheets, or fixes your car is necessarily passionate about those fields. Same for development -- some folks are getting into it because they need better jobs, and there is absolutely nothing wrong with that.
The "follow your passion" advice wasn't so rampant in previous eras in the US, such as the postwar and Depression eras, because many people didn't have the luxury to explore what they WANTED to do; they sucked it up and did what they HAD to do. Today with inflation and wage stagnation, many people can't afford to follow their passions (it's just more hidden today because everyone is in debt or two paychecks away from disaster). I enjoy coding and have moments of flow, dream about my code, etc, but I'm not passionate about programming as a pursuit. A person can be passionate about programming and create awesome code, but be a terrible communicator, lack empathy, or disregard the client's wishes. Have they still created a good product?
Saying not everyone has to be passionate about their job in order to produce great work != my "passion is earning more money". I just happen to have a passion for paying rent, traveling to visit relatives, having health insurance, etc., which are things most devs can enjoy.
Great article, thanks for this. I have to disagree that Java and C++ are good starting points for beginner programmers; if I had to start all over again, they would BOTH put me off programming for good! :)
I think it's important to say that it's not the highest salaries which should necessarily be sought; it's more about the longevity of a particular language or framework which will provide pay for a long time. Just because the likes of Angular aren't earning as much as they originally did, it doesn't mean they're not important players and great frameworks.
Anyway, blabbed on enough; teaching my Granny how to suck eggs and all that.
😄, I used to have questions like which language is better ? After discussing with my friends and listening to people online, I realized that Its better to stop asking these questions. Instead start asking which tool is better for current Job and Trend.
Choose the right tool for the Job.
C#
orJava
for building enterprise and large applications.JSF
you can think of usingAnuglar or
Reactor
Vueetc. for Front End
.Python
for Machine Learning.Go
for Micro Services based performant applications.In future maybe today's Languages and Framework may be outdated, so to survive you will be forced to learn new language of that time.
Conclusion:
Developer Happiness, stick to the language which make your life easier, like easy to read syntax, maintainable, has Good IDE. I like C# for current work, and its up-to you to decide what you like.
Its always good to be Open to learn any language as required and Choose the right tool for the Job.
Hope this helps.
Interesting read,
I decide last month to begin my journey into java. I have never coded a day in life, i just graduate elect elect education and it has been my long time passion to be a Java programmer. Am excited that i has started, experiencing challenges but i refuse to be drained. Will definitely check out the recommended course on Educative
Hey Fahim you laid out a nice post here and you missed out on two things which are really in the trend and they having a great future ahead in GraphQL and Serverless. Really I want developers should focus on this two technologies as well. I'm totally into JavaScript ecosystem.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.