Update: We’ve written a 2020 salary article comparing developer salaries in Johannesburg, Cape Town and Pretoria. Take a look.
After analysing salary discrepancies between Johannesburg and Cape Town and the value of managerial experience, we wanted to investigate the salary discrepancies between programming languages.
When a developer creates a profile on OfferZen, they list previous roles and years of experience in each role. Companies view profiles of developers currently looking for work and reach out to them with an interview request.
For this analysis, we analysed the roles and how they impacted the salaries of developers who found work on OfferZen. We initially looked at over 20 programming languages but settled on .Net, C/C++, Java, Python and Ruby for this blog post.
Average salary comparison
We started by graphing the salary of developers based on their experience with each language.
The first noticeable feature of the graph is that Ruby developers are the top earners across almost all experience levels. Perhaps more interestingly though, are the salary discrepancies between the languages at low experience levels.
Why do developers with some Ruby and Python experience earn more?
The following is a graph of the salaries for placed developers with less than 1 year of experience for that particular language. Keep in mind that the overall experience as a software developer might exceed their experience with a particular language.
Ruby and Python developers can earn between 15% to 45% more than .Net, C/C++ and Java developers with the same level of experience. This might make you conclude that junior Ruby and Python developers simply get paid more - but the truth is a bit more nuanced. There are two factors contributing towards the discrepancy.
1. Supply of Python and Ruby developers
The majority of developer courses in South Africa centre around the traditional languages of Java, C and .Net. The majority of juniors in the market will thus be proficient in these languages. Python and Ruby are not common languages in tertiary education course work so that there are fewer juniors with these skills.
From our data working with 450+ companies, we know that the demand for Ruby and Python developers is disproportionately high when considering the limited pool of developers with those skills. This increases the value of these developers, allowing them to earn a premium.
2. Developers with a year of Ruby or Python experience aren’t as junior
Developers that have a year of Ruby or Python experience generally have experience in other languages as well. As the traditional journey of a developer will include working in Java/C/.Net after graduating and then being introduced to one of the other languages - they will have a higher level of overall experience.
The graph below shows this effect by comparing overall experience for developers with one year experience in each particular language. From the graph we can see that developers with Python and Ruby experience are generally more senior overall.
The discrepancies between the core and new languages don’t end here. If we look at the growth potential for a developer, comparing .Net and Ruby, another interesting trend emerges.
Ruby salary progress is binary - Junior vs Senior categorization?
The average salary a .Net engineer earns, rises uniformly as they get more experience. This contrasts with Ruby engineers - who have relatively flat growth for experience 0-1 and 1-2 years, jumps for 2-4 years and remains flat thereafter.
At this point it should be said that, while our sample sizes for this analysis are significant, we do have less data on Ruby developers than .Net developers. This is simply because the pool of Ruby developers in South Africa is smaller. This disclaimer aside, we think the jump in salary for mid-level Ruby developers is possibly due to the following reason:
Developer scarcity creates market over-simplification
Due to fewer recognisable Ruby developers, companies are effectively characterising Ruby developers into junior and senior. This creates a binary split of the market into either junior or senior, creating a big jump between the two characterisations.
The .Net developer market is far larger than the market for Ruby developers. This allows for deeper developer characterisation and more efficiency in the pricing of respective salaries. This creates a smoother growth curve for developers that specialise in this discipline.
After 6 years of experience, salaries become similar
The salary discrepancies for senior developers are much smaller, with the difference never exceeding 10% between language specialisations.
This probably indicates that there is no significant supply/demand imbalance at 6+ years of experience or that developers with this amount of experience are capable to adapt to any language.
Leave a comment below if you have any questions or suggestions for a future analysis. If you’re in the market for a developer job, check out OfferZen to get interviews from over 450 of South Africa’s top tech companies.
FOOTNOTE: This analysis is not an exact science. Salaries are dependent on the company, individual, perks and nature of work. These factors all influence the salary a company will offer to a prospective hire. However, by mapping the average salaries of .Net, C/C++, Ruby, Python and Java developers for different levels of experience, we hope to map underlying trends.