Which Programming Language Pays the Best? Probably Python
Nerval's Lobster writes: What programming language will earn you the biggest salary over the long run? According to Quartz, which relied partially on data compiled by employment-analytics firm Burning Glass and a Brookings Institution economist, Ruby on Rails, Objective-C, and Python are all programming skills that will earn you more than $100,000 per year. But salary doesn't necessarily correlate with popularity. Earlier this year, for example, tech-industry analyst firm RedMonk produced its latest ranking of the most-used languages, and Java/JavaScript topped the list, followed by PHP, Python, C#, and C++/Ruby. Meanwhile, Python was the one programming language to appear on Dice's recent list of the fastest-growing tech skills, which is assembled from mentions in Dice job postings. Python is a staple language in college-level computer-science courses, and has repeatedly topped the lists of popular programming languages as compiled by TIOBE Software and others. Should someone learn a language just because it could come with a six-figure salary, or are there better reasons to learn a particular language and not others?
Should someone learn a language just because it could come with a six-figure salary, or are there better reasons to learn a particular language and not others?
Yes.
Not a single programming language makes the best figures in a year for you..but the ability to adapt and learn new technologies as well as completing your task does.
Looking at this website I'm not that surprised you think they're the same thing.
You should program in Python because it's a great language.
Of course it did, if you combine the results of two popular languages it makes sense that the combined result might outshine the rest. But what about the results for Java and JavaScript as two separate languages, which they are? The link to the actual rankings was not provided in the summary... I can only hope that it's just written poorly and both tied as #1..?
Also, cost of living is vastly different around the world and the US. It does not appear to have been corrected for in this study, making it pretty much useless IMO.
This is exactly right. I'm a scientist, not a programmer, and we use Python in my group because it is clean, easy, and gets the job done. When we hire people for scientific programming they typically use some mix of Python, C++ (ROOT, anyone?), and Fortran. These engineers are sought-after because they know how to solve tricky large-scale mathematical problems using computers, not because of a specific language.
So it isn't a matter of "programming language x is valuable", but more a matter of "valuable people use programming language x".
That would be the ability to not look like a fool when your knowledge of the language is challenged in an interview.
$100k and sharing a rented hovel in silicon valley with seven other brogrammers ?
Or are we talking $100k in a mansion on the golf course in Arkansas?
the preceding comment is my own and in no way reflects the opinion of the Joint Chiefs of Staff
I'm pretty savvy with all the listed languages except Objective-C (only maintenance on existing apps), and have used them all at one time or another in a job. My linked profile garners around 3-4 recruiter contacts a week, and in my own little silo, I can say that while there may be 6 figure salaries out there for the Python and RoR, they are few and far between. The salaries I'm seeing on the top end for those development jobs rarely crest 70k.
On the other hand, there's bigger salaries for Java or C#. It's not too hard to find a 100k-110k senior Java or C# developer position.
Anecdotal evidence is not scientific data, but their results just don't match my personal experience in 2 decades of doing this.
However, I think I can see how they got the numbers.
According to the article, the data was retrieved by searching job ads, as opposed to taking a survey of people actually working at those jobs, and then permuting and filtering it. Given that:
- Development job availability, especially with new technologies, is heavily skewed towards the west coast, where the cost of living is higher. From Austin to San Jose, the cost of living increase is between 50 and 75 percent - the 100k job is at least a 150k.
We can make a reasonable assumption that there will be more positions open, and that more of them will be higher paying relative to the entire US job market, likely breaking the 100k cap, as 100k is low relative to the cost of living.
- Established development languages already have a majority of their positions filled, as opposed to emergent technologies which have more open positions
This will naturally result in a higher number compared to a language with less open positions, if the bar (100k) is low relative to the cost of living.
- Emerging technologies lack experts simply because they haven't been around long enough to develop as many
So positions will be open longer, and more aggressively marketed by recruiters, meaning that they're more likely to double- or triple- count job postings that are unknowingly for the same job
&
Employers using recruiters often prefer to using a limited number of recruiters who themselves maintain a pool of direct-contact individuals with experience in a given field, meaning that those jobs are less likely to be publicly posted, whereas the new technologies require public announcement and investigations.
So in summary: I don't doubt the statics they used, but I think their methodology may be affected by a heavy bias, and therefore invalid.
Exceptions???
I very much doubt that a high salary for an Ada engineer is an exception, it would be suprising if there are any low-wage Ada jobs at all. The same goes for COBOL, without doubt.
Never confuse "leadership" with "management". I'm quite well compensated, and a key reason is my ability to drag projects across the finish line, and the primary obstacles are often managers and petty territorial pissing. Another reason is that I make a concerted effort to raise both the code quality and developer morale around me - often by forcing a change in toolchain or automation through the bureaucracy to address whatever's frustrating developers most day-to-day. Sure, some companies don't value that sort of thing, but plenty do - enough for a solid career.
Socialism: a lie told by totalitarians and believed by fools.
The salary data is taken from the subset of job ads that list compensation. I don't know the last time I saw a want ad in the software industry that said anything beyond "competitive compensation" or the like. That suggests that they are only looking at a very skewed subset of jobs, my guess would be much greater representation from government, academic, non-profit, and non-tech companies looking for developers.
.NET stack, which is a very low-expertise, low-standards type of job.
Getting into speculation here, but I would guess that the higher premium on things like python would be because non-tech firms hiring python devs probably need scripts for efficient data mining, analysis, and reporting, a skill requiring far more expertise than run-of-the-mill software development.
C#, which I don't think anyone would argue is vastly more marketable than python, Ruby, or Objective-C in the highly lucrative tech sector, is likely so low because the sort of want ads they are looking at are mostly going to be positions that build web-based business management sites on the
Beyond the stupid methodology of only looking at want ad compensation (a better - though still suspect - method would be to look at something like glassdoor for salaries and then correlate those to the skills asked for in want ads for the same position and company), they should really be including the full requirements list for this to be at all meaningful. If one ad asks for "python, plus 7 years of experience working with large scientific datasets, strong understanding of statistics, and experience with one or more data visualization libraries" and the second asks for "c#, knows what a website is", then saying the first one is better paying because of python is silly.
I'll bet it was easier than hunting down the invisible bugs from mixed tabs/spaces or introduced by your editor mangling indentation while moving bits of code around.
Which is easily solvable by setting spaces-for-tabs in your editor (and which I do when working in Python, ... or Java... or C/C++... or pretty much everything because that really solves a whole bunch of issues.)
And violations of spacing/indentation rules are trivially caught by with automated testing/CI, which I do with Jython... or Java... or even C/C++ .... or pretty much everything whenever possible because it is the sane thing to do.
I've only been doing Python for 2 years, including C-to-Python bindings using Python 2.7x, Java-to-Jython/WLST integration (with Jython/WLST being based on Python 2.2), and a tiny bit of Windows automation with IronPython.
Most of my background is Java for enterprise development and C/C++ for embedded/system-level development.
As such, I initially I stumbled across some of the nuisances with Python, the spaces, the lack of a stack trace on exceptions, or the fact that exception hierarchies are slightly, but oh-so-different between Python 2.2 and 2.7. But past those stumbles, I simply use tool configs, procedures and coding standards to deal with them.
And that is the same when I do Java or C++. Each has their own gotchas and effective Java/C++ developers simply do the same - use tool configs, procedures and coding standards to deal with them.
Why would anyone mix tabs with spaces. Use one or the other, regardless of whether you do Python or not. If I see a code base in any language that has that shit mixed up, I know I'm bound to find some other stupid shit in the code.
Why? Because mixing tabs with spaces all over the place, like spelling errors, lack of meaningful comments and/or deeply nested code (arrow anti-patterns), these are all proxies for bad coding practices.
I originally found Python indentation rules to be annoying. After all, how hard is it to auto-indent from an IDE or a command line (or force an auto-indent of code before checking in, or en mass before merging back to the trunk)?
But you know what, people are idiots, and I've learned IN GENERAL not to expect them to write clean code (nor tell clean code from apple pie.)
It is still possible to write horrible Python code, but it is a lot harder to do so in it than in Java or C++ or C#. I would still have preferred to see Python having start and end markers for blocks (a-la begin/end or curly braces) on top of indentation rules.
But it is still a good compromise. Hard to see where code blocks end? Increase indentation. Better yet, refactor that shit out. If I see I have a harder time telling the end of a block, chances are that block is already large (time to refactor out), or that there is a lot of code around it (time to split it into better levels of abstraction).
You know, the kind of stuff we are supposed to do in any language anyways.
Besides, accidental violations that render Python code invalid, those things are trivially solvable by doing shit we are supposed to be doing anyway (namely, avoiding mixing tabs and spaces, automated testing, keeping code small and at least dry-run your shit before committing it to source control.)
I'm not saying programming in Python is Nirvana (for some things, it truly sucks.) But some of the things people complain about, they are just asinine complains for shit that broke because, on a fundamental level, they are not following good industrial practices IMO.