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 la...
For further actions, you may consider blocking this person and/or reporting abuse
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.
Seriously, no PHP mentioned anywhere in this writing?
Wow, you're right
I kind of want to point out that deciding what you learn and work with should never be about making the most amount of money. I understand taking it into consideration sure, but I think that enjoying what you work with, and using the technology that makes the most sense for the job at hand is extremely important.
I also want to say like others, this also changes based on the fields you are working in as well as the area you live in.
The author already made that caveat in the article. So you might want to use another phrase besides "point out", such as "reiterate". 😅 Also, be wary of using the word "never" -- at different stages of your career/life, money does become the deciding factor in what to learn next (sacrifice your passion because you have to feed your kids, for example).
My (and not only my) experience dictates a simple logic: the highest pay technologies are rare. I am not sure how the research in article was conducted (and was?), but a clear example from my own life.
Working with two scripting languages - Python and Perl at equal levels, which do you think brings the highest revenue? Perl, because it is rare to find a Perl developer. It does not correspond to possible revenue, which is usually taken into an account in such posts. Simply speaking, if technology A is used in let say big banks and technology B in not so rich businesses, technology A should possibly bring more revenue. No, this is logical fallacy, that often travels from post to post. This is basic of any economics course - you should not have a PhD in economics for it - if you have less competitors, you will get more money. This is how market works (or better say a concept of monopoly).
The same logic we can apply to geo factor that is also usual mistake that comes from post to post. It is assumed (and wrongly), that iOS developers get more because they live in richer countries and Android development is out sourced to freelancers in poorer countries (or even are considered free if you take backend Java developer to write Android app - that is road to nowhere). Well, assuming how awful are many Android versions of iOS apps this is true, but it does not mean that iOS developer will get higher revenue. That means that iOS developers are limited in a number from the beginning - in fact you need to have Mac. So if we have basically same market (assuming that typical product should have two apps) - the divider in Android case is higher. And again the highest revenue will be in Windows development.
I wonder how many new iOS projects are started with ObjC and not with Swift (which is not even mentioned).
Thanks for taking your time and putting this together. I just came to notice that the first graph on the page comparing Python, Java, C++ and Javascript has wrong proportions. The last three columns should be of almost equal height or the scale has to be changed accordingly.
Wow Ruby isn't on here at all! Is Ruby a dying language?
No
Thank you for the thoughtful and detailed post! Like you said, salary isn't everything and stats are hard...but this is great info for devs to consider when investing in their career
In China,senior engineers get higher pay if you are using Golang. C# is not much popular and get lower salary than Java.
This is very well put together post. Thank you so much for sharing!
It was really great analysis but I think GraphQL is totally missing here.
I think the one where you are really good at!
I have seen people still working on Java 6, and making hell lot of money, just because they are good at what they do