Slashdot Mirror


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?

18 of 277 comments (clear)

  1. Yes by Anonymous Coward · · Score: 4, Insightful

    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.

    1. Re:Yes by thedonger · · Score: 5, Insightful

      I was wondering what languages I should learn myself. I have some experience with C++, but that's over 10 years ago, and only as a hobby. I've been thinking about picking it back up, but wasn't sure if there were better options. Since I'm an adult and looking to be able to support my family, money certainly is one of the leading factors as to which language I want to get into.

      A more relevant question than money may be what interests you? Automation, mobile apps, database, web, etc.? You may have the potential to make more money as a Python programmer, but will a few thousand on average more per year make the job itself more worthwhile? Would, say, only $95k per year to program C++ -- if the specific job was more to your liking -- be a deal breaker?

      Another way to look at it: If you are happier doing the job, might that make you perform better and therefor out-perform the industry average?

      --
      Help fight poverty: Punch a poor person.
  2. False advertising by Anonymous Coward · · Score: 5, Insightful

    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.

    1. Re:False advertising by Anonymous Coward · · Score: 0, Insightful

      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.

      Fuck that! I've spent the better part of two decades not having to learn a new programming language because being an embedded programmer means I get to use the same language now that I did twenty years ago (C, in case anyone is interested) and still command a fucking awe-inspiring salary with no risk of retrenchment. I don't need to adapt to the latest hipster fad (python, ruby, etc) because knowing how the actual fucking hardware works is *my* problem domain, and that isn't going away in my lifetime. While *your* faddish language will command less as time goes by, as it gets replaced by the newest shiny, my skills have only gotten rarer as time went by.

      After all, how many people can my employer find to write their newest OS-less application? Now count how many people have the technical skills to replace *you*. Embedded is where it's at - the problem domain (military, mining, etc) often makes it illegal to outsource due to the high regulation, and even if it didn't the people over in [other side of world] who have the skill and experience in the domain aren't going to work for less than I do. The python/ruby/etc programmers in [other side of world] will know the language just as well as you do and ask a whole lot less than you do. Those "technologies" are easy to pick up, after all. Custom kernels aren't.

    2. Re:False advertising by Lawrence_Bird · · Score: 3, Insightful

      Contrary to your popular belief, COBOL and Fortran are not disappearing. But they do pay well. They are left out of these type of surveys because they are not sexy and not buzz worthy. There will be millions (billions) of lines of COBOL still in production long after Ruby is dead and buried.

  3. Java/Javascript eh? by Anonymous Coward · · Score: 1, Insightful

    Looking at this website I'm not that surprised you think they're the same thing.

  4. Why program in Python by Danathar · · Score: 3, Insightful

    You should program in Python because it's a great language.

    1. Re:Why program in Python by Anonymous Coward · · Score: 2, Insightful

      My experience is different. Dramatically different, actually. I've seen very few examples of readable python, and very little consistency between developers.

      Every language can be made readable or unreadable, which depends on the programmer. Python culture though actively pushes writing in a 'pythonic' way, which mostly boils down to as simple and readable as possible and repeating yourself as little as possible. That results in very readable code. Perl culture on the other hand often actively takes pride in getting as much code as possible into a single line which makes code completely unreadable, or actively trying to make it unreadable. If your developers aren't writing readable code they aren't writing in a Pythonic manner, meaning they aren't Good(tm) python developers.

    2. Re:Why program in Python by Just+Some+Guy · · Score: 4, Insightful

      They think it's great because, in a tragic case of hilarity, jumping into code with minimal design is what python is great at.

      We think it's great because, among other things, it has first-class functions and a very high code:boilerplate ratio. This lets us write very concise, readable, and maintainable code.

      If you're a diligent programmer in python/php/javascript/etc then, in each function you write, you're going to double-check that the type passed in is correct, anyway.

      Eww, no. I've never seen good Python code that asserts types because it's not the idiom for you to care. For instance, suppose you write a function like:

      def get_contents_of(obj): return obj.read()

      In this case, obj might be a file, or a web request, or a string (via the StringIO interface). Who knows? Who cares? As long as obj.read returns something, it works. BTW, this is supremely nice for unit testing when you don't really want to hit an SQL server 1,000 times in a tight loop.

      Now, you could write something like assert isinstance(obj, file) to guarantee that you're only dealing with file objects. Of course, that lays waste to the whole concept of duck typing and people will laugh at you for doing it. So dropping that bad idea, you could write assert hasattr(obj, 'read') to ensure that the object has the needed methods. But why? Python gives you that check for free when you try to call the method. Let it do the heavy lifting and concentrate on the parts of the problem you actually care about.

      Exceptions are one of the worst things to have become common - an "error" is almost always only caught outside the scope that it occurred in, hence the stack has already been unwound and thus there is no sane way to fix the error and retry the operation that caused the exception.

      Yeah, that would be terrible. You almost never use them in Python like that, partially because Python tends to have a vastly shallower call stack than, say, Java (largely because you don't need 10 layers of abstraction between bits of code thanks to the duck typing we just talked about).

      I think it boils down to you not knowing idiomatic Python. That's OK. I'm ignorant about lots of things, too. But I think you'd find that you enjoy it more if you stop trying to write C or Java in Python, because that almost never works out well.

      --
      Dewey, what part of this looks like authorities should be involved?
  5. Java and JavaScript are different languages by Anonymous Coward · · Score: 1, Insightful

    RedMonk produced its latest ranking of the most-used languages, and Java/JavaScript topped the list

    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.

  6. Re:Problem domain, not language by crgrace · · Score: 5, Insightful

    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".

  7. Re:What does learning a language really mean? by Anonymous Coward · · Score: 2, Insightful

    That would be the ability to not look like a fool when your knowledge of the language is challenged in an interview.

  8. $100k is not adequate information by Thud457 · · Score: 4, Insightful

    $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

  9. Not in the Austin job market by quietwalker · · Score: 3, Insightful

    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.

  10. Re:Ada Engineer... by aaaaaaargh! · · Score: 5, Insightful

    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.

  11. Re:Problem domain, not language by lgw · · Score: 5, Insightful

    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.
  12. Laughable methodology by jbarone · · Score: 5, Insightful

    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.

    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 .NET stack, which is a very low-expertise, low-standards type of job.

    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.

  13. Nag, Nag, Nag. by luis_a_espinal · · Score: 4, Insightful

    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.