Software Developer Salaries: Ruby on Rails vs. Java
"willCode4Beer", a software engineer and blogger in the San Francisco Bay Area, recently posted a comparison of "Ruby on Rails" and Java software developer salaries, using PayScale data.
Noting that the average salary for developers in San Francisco is $17,000 higher for Java than Ruby on Rails, he concluded he should stick with Java, at least until the pay for Ruby on Rails catches up.
However, big grains of salt are required when comparing these charts 🙂
In this post, after a brief background on programming languages and their fads, I’ll look at why, even in the face of these charts, it is not so clear which language willCode4Beer should use.
Wondering what your skills are worth? Find out with the PayScale salary calculator.
What are Ruby on Rails and Java?
For those less technical, programming languages are how software developers tell a computer what to do. Frameworks are collections of pre-written instructions a developer can use to speed up the application development process.
Computers are notoriously stupid. By analogy, you cannot simply tell a computer to tie its shoes. A developer has to explain every step, from grabbing each lace at the end, to looping the laces over and under, etc. Worse, unlike children, computers don’t infer based on past experience; a developer has to explicitly tell all the steps every time s/he writes a new application.
Frameworks (also called libraries) are useful, because different applications often instruct computers to do similar things. For example, having a standard set of instructions (also called a routine or class) in a framework called “tie shoes” would be very useful, if you writing an application that tells a computer how get dressed.
Programming Languages and Fads
Both languages and frameworks are subject to both evolutionary improvement and fads. Sometimes these improvements are real, representing major steps forward in developer productivity, at least for some applications. Sometimes they are not.
Ruby on Rails is the latest silver bullet that promises to make software development simple. Created in 2004, Ruby on Rails promises to simplify greatly the creation of data-intensive websites and applications.
Java was the silver bullet of the late 90’s. Ah, I remember the days back in 1997, coding in Java and the Swing framework. They promised to make computer programming simple, and “applications write once, run anywhere.” Sun Microsystems was in ascendency, the dot-coms were just starting really to bubble, and the new economy was going to change everything.
Funny how, 10 years later, the Java programmers are now making the big bucks for writing in the “hard to use” old-school language. 🙂
I do not know whether Ruby on Rails will replace Java everywhere, simply take over as the dominant language in some application areas (as Java did to C++ and other earlier languages), or be a fad that never catches on outside a core community, but I can say something about pay.
Java vs. Ruby on Rails Developer Salaries
Let’s look at slightly different PayScale Research Center charts than willCode4Beer referenced. Instead of salary by city, the charts below are by years of experience.
The titles are a little misleading; the years of experience is in the field of software development, not only with each language. Obviously, no one has 20 years of experience with Java or Ruby on Rails, since neither existed in 1988.
Ruby on Rails as a Skill:
Java as a Skill:
Hum, the difference in salaries is no longer so dramatic.
- Low experience (<5 years) dev. pros may make more with Ruby on Rails than Java
- The statistics for <1 is too small to say for sure
- For 1-4 years, the salary increase is only 3% more for Ruby on Rails
- For higher experience (5 years and up) dev pros, Java tends to pay a bit more
- Only the 5-9 range has enough data for Ruby on Rails to really compare the two: salaries are about 10% higher for Java
- None of the differences are as dramatic as the differences in median pay shown for San Francisco or New York in charts in willCode4Beer’s post.
The reason for the differences will become clear when we consider what really affects developer pay.
Experienced Java vs. Ruby on Rails Developers?
The populations of Ruby on Rails and Java developers, in the PayScale research center sample, and in the nation as a whole, are not the same.
The most dramatic difference is in the number of development pros using each skill. For the US, the PayScale research center sample has 27,300 for Java vs. 131 for Ruby on Rails. This is for three reasons:
- PayScale has only been collecting data on Ruby on Rails for about 5 months: reduces sample by ~2X
- Since Ruby on Rails is not a top 15 most popular skill for developers, it is not a checkbox on our survey. An employee must it in. Hard to say precisely the effect, but likely good for ~5X fewer profiles (devs just don’t mention they use Ruby on Rails).
- A lot fewer development pros actually use Ruby on Rails than Java on the job: see willCode4Beer’s comparisons of job postings, which imply 20X fewer jobs requiring Ruby on Rails.
The other dramatic difference is median years of experience in the field (not just the language).
- For Java, the median is about 8 years, and there are a significant number with 20 or more.
- For Ruby on Rails, the median is about 6 years, and there are very few with 20 or more.
Switch from Java to Ruby on Rails?
While I am not a full-time developer now, and never officially was one, I have coded over the years in Fortran-77, C, C++, Java and now C#. This variety of languages over time is common for most of our senior developers here at PayScale.
While my brain has been getting softer in the last few years, developers generally become significantly more productive between college graduation and ~10 years later – assuming they actually learn how to code better during that time 🙂
With greater productivity and skill comes greater pay. This is shown in both the charts above, and is a general property for professional jobs like software developer.
Given that the most important factor in pay is experience as a developer, not with a particular language, why does anyone ever switch computing language? Why am I no longer coding in Fortran?
There are several reasons:
- The potential of a new language to increase productivity for a particular application type exceeds the cost in productivity of learning the new language
- Companies for which you want to work stop using the language you know for new projects
- The new language is popular at companies in locations where you want to work.
- You want to have the latest computer buzz words on your resume 🙂
For example, here at PayScale, we have moved from an site written back in 2000 in ASP (basically Visual Basic) to one using the .NET framework and C#. The gain in maintainability and extensibility made it worthwhile.
Why C# instead of Java? Because it is easier to steal C# developers from Microsoft in Seattle than Java. 🙂
By the way, if you want to work in Chicago or Philadelphia, COBOL may be the way to go: more jobs and decent pay 🙂
How does your salary compare, and which skills should you consider adding? The PayScale Salary Calculator is a quick and easy way to compare positions. When you want powerful salary data and comparisons customized for your exact position, be sure to build a complete profile by taking PayScale’s full salary survey. Use the “What If” features to compare what would happen if you added a skill.