Slashdot Mirror


Which Language To Learn?

LordStormes writes "I've been a Java/C++/PHP developer for about 6 years now. However, I'm seeing the jobs for these languages dry up, and Java in particular is worrisome with all the Oracle nonsense going on. I think it's time to pick up a new language or risk my skills fading into uselessness. I'm looking to do mostly Web-based back-end stuff. I've contemplated Perl, Python, Ruby, Erlang, Go, and several other languages, but I'll put it to you — what language makes the most sense now to get the jobs? I've deliberately omitted .NET — I have no desire to do the Microsoft languages."

21 of 897 comments (clear)

  1. Really? by r0ach · · Score: 5, Insightful

    I mean, I don't see php or C++ going anywhere anytime soon....

    --
    -- www.RoachMcKrackin.com
    1. Re:Really? by dreamchaser · · Score: 5, Insightful

      Yep, I still see lots of posting for people skilled in those languages. Also, if the submitter were serious about wanting to stay relevant and employable he wouldn't just automatically discount the .NET languages. There are more and more jobs available for skilled .NET coders. Tying one's career to ideology isn't always a smart thing to do.

    2. Re:Really? by bhcompy · · Score: 5, Insightful

      Except that ditch digging isn't preferable because you make shit money and do shit labor. .Net is no different than any language he current programs in those terms. It's not like he's avoiding assembly because it's too difficult to learn or doesn't have the greatest job prospects. He's just cutting off his nose to spite his face.

    3. Re:Really? by bmo · · Score: 5, Interesting

      Ditch digging is shit labor and shit money?

      Have you _seen_ what a unionized heavy equipment operator gets?

      Or how about up in the frozen North where they dig for oil? $2K/Week TAKE HOME (canadian, worth more than USian now) just for digging a great big ditch.

      Yeah, I'll take digging a ditch right about now.

      --
      BMO

    4. Re:Really? by BeanThere · · Score: 5, Interesting

      Speaking of staying relevant. While there are certainly languages that are way down there in terms of jobs, I take the general view that if you keep yourself *good* at whatever language you choose, you will have a job. That is certainly true of PHP, of C++, and probably will stay true of Java for a long time. Still, I suppose not everyone can be motivated enough to stay top of their game.

      Submitter also doesn't seem to realise .NET isn't a language, it's a platform (more akin to an API than a language), and you can code for .NET using many different languages, and you can't code "in .NET", since there isn't such a language. I presume he made the common beginner mistake of conflating "C#" with ".NET", and I'll infer he meant C#.

      As anti-MS as I am, it seems odd to me to avoid C# if you like Java though, given it's probably more similar to Java than anything else. Also, from what little I know of it, technically it seems like quite a decent language (and the API much better than the old Win32 .NET replaces), with quite a decent development environment too. It didn't really replace the C++ 'niche' though, it replaced the VB segment ... C# is basically "the new VB"; rapid medium-skilled and medium-complexity development with a broader pool of (on average) less highly-skilled programmers to choose from (not dissing the good C# programmers that do exist, but it's certainly a more forgiving environment to less technically skilled programmers than say C++).

      If you're really good at what you do, then you can afford to be picky about your "ideology" and avoid a particular language. If not (which I more suspect to be the case here) then I would recommend to the question asker to best keep more options open. Otherwise it just seems more like a bad carpenter blaming the job environment.

      Me, I love C++, and I haven't noticed jobs drying up, on the contrary, my C++ skills continue to open interesting doors for me, I can literally go almost anywhere in the world.

      There are lots of C# jobs out there, and lots of C# programmers; while you can be an excellent C# programmer, I'd say it's probably slightly easier to 'distinguish yourself' in the C++ world.

      PHP is still also massive though, and will be for a long time.

    5. Re:Really? by wootest · · Score: 5, Insightful

      Okay, I'll bite: C# is a good language that makes more progress and is more eager to grow modern capabilities than Java is. None of the two will go away overnight, and C# isn't the very best thing ever, but I don't think people would have any problem giving it the credit it does deserve if Anders Hejlsberg worked somewhere else than Microsoft.

      I personally mostly prefer to code in other languages than C#, like Ruby, but I'd much rather work in C# than in Java and that's not for a lack of trying. I use and love ASP.NET MVC, which is open source, patterned on Rails and all about the code, with no "insert control here" wizards in sight.

      I know that there's a lot of people who drag a grid view onto a Web Forms canvas, hook up the data bindings, bill you the licenses of everything in the server stack and three weeks' work and then can't actually fix anything because they don't know how to code. Aside from conceding that Microsoft has largely traditionally gone out of their way to supply these people with software, I call Sturgeon's Law. Just please don't let that fool you into thinking that everyone who has touched or developed for a Microsoft product has the coding skills (and chair propelling propensity) of Steve Ballmer. If that's all they were capable of, I would be right behind you.

    6. Re:Really? by hal2814 · · Score: 5, Insightful

      I've dug ditches for a living and built houses for a living and done grunt work for a kitchen installation company. Whoever is considering sitting around in an air conditioned office and cranking out .NET code "shit labor" has a severe reality deficit disorder.

    7. Re:Really? by dreamchaser · · Score: 5, Insightful

      No, he is simply deciding that these particular principles are more important to him than a slightly better job prospect.

      Oh I have no problem with that, I was just musing that it can bite you in the ass. In this economy if you're worried about your prospects it's probably best to keep one's options open. I can respect someone who stands on principle, but principle doesn't pay the mortgage. It's not like every time you code in C# God kills a kitten.

      Or...does he! *eeeek!*

    8. Re:Really? by Anonymous Coward · · Score: 5, Insightful

      I've worked in various office enviroments for years as relatively unskilled labor, leaving for work in the dark, getting home in the dark, spending the entire day inside of a cold flourescent-bulb light enviroment that is always teedering on the edge of "full blown flu pandemic". Whoever is considering working outside preforming good honest work "shit labor" has a severe reality deficit disorder.

      Newsflash: the grass is always greener on the other side.

    9. Re:Really? by SuperKendall · · Score: 5, Insightful

      I don't like .Net much. But I'm going to back you up and say you have a great point, and that obviously none of the other people have REALLY had to do full time manual labor for work. I have before college, and it was a huge motivator to finish a CS degree... All the people here are imagining frolicking outside on a 70 degree day carrying a single 2x4, and forgetting that pretty much everywhere has summer and winter too, and that a construction worker these days is going to be hard-pressed to find a job at all.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    10. Re:Really? by ScrewMaster · · Score: 5, Insightful

      No, he is simply deciding that these particular principles are more important to him than a slightly better job prospect.

      Oh I have no problem with that, I was just musing that it can bite you in the ass. In this economy if you're worried about your prospects it's probably best to keep one's options open. I can respect someone who stands on principle, but principle doesn't pay the mortgage. It's not like every time you code in C# God kills a kitten.

      Or...does he! *eeeek!*

      I agree. And there's nothing wrong with doing work that's not optimal in your opinion, but at least keeps the lights on, while simultaneously keeping an eye out for work that is more to your liking. It's not as if coding in .Net is amoral or illegal or something, not like selling your body to pay the rent (although some purists seem to believe that.) This is just his personal preference, a preference that he may very well find that he cannot afford. I'd rather not be doing Windows work myself, but you know what? I'd rather be employed than not, and besides, there are other aspects to a job besides the language you write in. In my case, I'm fortunate enough to have a great bunch of coworkers and a company that has good health benefits and retirement policies. Those count for a lot as well: a good coding gig is a complete package, not just your personal choice of programming language.

      Having been in this business since before it was a business, I tend to look more at results. Is the end product of what I'm doing worth the effort? Am I proud of what I've accomplished? Does my work benefit others in addition to me and mine? Maybe that's because I started out coding for the likes of the Rockwell PPS4 and the MCS6502, and have been through a lot of different projects, in different industries, on different operating systems in a multitude of programming environments. I also spent the better part of fifteen years working as a contact programmer, and in that world you take what comes along. You never know when the next contract will be approved, or if, so if you're wise you don't get too stuffy about it. Still, it did help that after establishing a reputation as a reliable developer, I had some of my bigger corporate customers designate me as their preferred custom software vendor for industrial projects: they would pass all incoming RFPs to me for evaluation first, and I got to pick and choose. That was kind of a high point in my career actually, but I had to work very hard to get there. The point is, if I had told them "I only work in these languages", I wouldn't have gotten that far.

      All languages have interesting aspects to their behavior, nifty features, unique drawbacks, and some are better tools for certain applications than others. I mean, I don't think of a screwdriver as being intrinsically superior to a pair of tweezers. For what each does, it does it well, and it doesn't hurt the user to know how to use both. The submitter sounds like something of a language bigot: I don't pay much attention to such people. "Oh, I wouldn't be caught dead working in that language. I couldn't possibly." If you love coding, you'll find something interesting in virtually any language, any project. A friend of mine once worked with a number of what he called "C bigots." These were guys that would spend three weeks hacking C just to put up a command button, and felt that that was only reasonable because, after all, the only real programming language was C. They wouldn't even consider anything else, and would laugh at the mere suggestion. Then C# came out ... suddenly they were huge fans of RAD and visual form design. My friend's comment? "Welcome to VB, you pompous assholes."

      A language is just a tool, something to be learned, and you can accomplish significant things in pretty much any language. So maybe it's harder with language 'x" vs language 'Y': think of it as a challenge.

      --
      The higher the technology, the sharper that two-edged sword.
    11. Re:Really? by Anonymous Coward · · Score: 5, Insightful

      Digging ditches can be honest, rewarding work. Coding in any programming language can give one a sense of purpose. Answering phones and filing documents can be a good job. They can also be personal hell shit jobs... it all depends on the people you work with. If you enjoy the company of your coworkers and would at least go up and say "Hi" if you saw them out of work rather than try to hide, that's a good sign. If you can trust that you'll get proper credit if you help someone with their work, chances are you'll enjoy working there. If you are given enough tools, time and freedom to finish the job, but also paced out with a workload that keeps you interested, it doesn't really matter what the task at hand is. If your boss is incompetent, chances are none of the previous will be satisfied. Inadequate management leads to a higher emphasis on short term gains than long term growth, so a corporate culture of backstabbing and cutting corners develops whether you are performing brain surgery, digging ditches, programming in widgetfu, stocking shelves or designing nuclear reactor safety procedures.

      That being said, learning another language just to put it on a resume is easy. Reportedly once you know a couple programming languages adding another is just a matter of a week or two to learn the fine points of the syntax and how to navigate the libraries. What you want as a prospective programmer is a portfolio of projects you have worked on. Don't just learn a language to have another bullet point on the resume... show that you can apply it to solve a real life problem. More importantly, try to take on a moderately difficult project with multiple specialized parts... team leadership experience will get you further than any three or four languages. The project doesn't even have to come to full fruition if you can show that your skills were improved and you learned lessons in the process. This doesn't necessarily mean that you have to shoot for a management position, but you may become qualified for a job where you are given the freedom to show just what you can do, rather than a boss breathing down your back interrupting you from the coding zone every 25 minutes, changing specs last minute and then yelling at you when you can't release on schedule.

      That being said, it is up to you as an individual to determine what, if anything, requiring programming in .NET actually means about the kind of company you will be working for. And you might think you would be willing to take a $10,000-$20,000 pay cut to work at a place where your input is valued and you are given the tools that allow you to succeed, but really you end up making more money at those kind of places than you would if they were cutting corners left and right... because salaries and raises are one of the easiest things to cut off if they don't respect and value you anyways.

    12. Re:Really? by shadowofwind · · Score: 5, Insightful

      I can respect someone who stands on principle, but principle doesn't pay the mortgage.

      You're not "standing on principle" unless you're willing to risk important things, such as the mortgage, to do that. Otherwise you're choosing expedience over principle, and any stated regard for principle is mostly posturing.

      Not that there's anything wrong with that. And of course even a principled person has to make choices between important things, and may reasonably choose the mortgage, particularly if they have children.

      But sometimes its better for kids to grow up in an apartment with honest parents than in a house with people who will trade their society's future economic health for temporary comfort.

  2. COBOL by Anonymous Coward · · Score: 5, Insightful

    Still in demand and it will not die.

  3. Chinese by asnelt · · Score: 5, Insightful

    I would go for Chinese.

  4. How about by Aggrajag · · Score: 5, Funny

    Try Finnish, Oracle hasn't bought Finland yet.

  5. Just C. by Anonymous Coward · · Score: 5, Insightful

    No language is more universal. No language is more direct. It will never die. It transcends trends. It is the only decent language to me, having tried way too damn many in my life and always left wanting until I return to C.

    It is the perfect language. People might gripe that it's somehow "obsolete" or missing "modern" features, but to me, that's part of its appeal -- you get to do with it exactly what you need to do, and that is the essence of programming to me. Leaving too much to the language makes me feel powerless and less in control.

    I love C. If it was legal, I'd marry it.

    1. Re:Just C. by wootest · · Score: 5, Funny

      I'll have what he's having. I could use a good high.

  6. Re:The one to rule them all by Patrick+May · · Score: 5, Funny

    Lisp already exists.

  7. Re:Think carefully. Do you want to be close to MS? by turbidostato · · Score: 5, Funny

    "Do you really want people easily de-compiling your code?"

    Not!!! That's why I program in Perl, so people can't decompile even my *source* code.

  8. Re:ObjC is not purpose specific by bradgoodman · · Score: 5, Funny

    Yea, but saying "Objective-C isn't purpose specific - you can do iPods, iPads, iPhones *and* Macs" - is sort of like saying "We play *all* kinds of music - Country *and* Western!"