Which Language To Learn? 897
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."
Think carefully. Do you want to be close to MS? (Score:2, Informative)
Do you really want to be a monkey for Microsoft? Most of Microsoft's own software is NOT written in
"Tying one's career to ideology isn't always a smart thing to do."
Tying one's career to careful thinking is always smart. Do you really want people easily de-compiling your code? Microsoft is the British Petroleum of software. Eventually there will be impossible problems.
A full, complete version of Microsoft's operating system, Windows 7, costs $300, about half the cost of some laptops. Eventually Microsoft's abusiveness will cause an Enron-style breakdown, in my opinion.
Re:There's your problem (Score:1, Informative)
I'm also a former Java nerd.
C# is a really, really nice language.
In addition, if you're doing any desktop client development, WPF is a very, very easy way to do it.
I think of it as Microsoft's answer to Flex. My productivity is probably 2x what it was in Java/Swing.
The tooling isn't bad, the capabilities are great, the language is good. The only flaw is portability.
And when you control 90% of the market, portability is really kind of a moot point.
Re:Really? (Score:3, Informative)
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.
I think the whole point here is the definition of "shit labor."
Re:There's your problem (Score:1, Informative)
There isn't a shit storm over Java. Multiple sources, including Oracle and Apple, have stated that the premium JDK stories were complete nonsense. However, Slashdot probably won't report that, because it prefers to rely on anonymous bloggers and misinterpreted "Tweets."
Re:Looking in the wrong places (Score:5, Informative)
When I graduated from college a little over 2 years ago, I couldn't find anyone hiring C programmers with less than 5 years of experience. Shops that work in PHP don't give a damn about anything (obviously), so that's where my career started and now web development is what I know how to do.
Of everyone I knew in college and everyone I've met since then, only one of them actually has a job that uses C or C++ these days.
Don't pick just one (Score:2, Informative)
You're asking the wrong question.
Here is part of the right answer.
http://pragprog.com/titles/btlang/seven-languages-in-seven-weeks
Re:Desperate for a Job (Score:1, Informative)
As much as someone might want to bash .NET, I find C# to be an excellent general purpose language. Plus you can use Mono. Everyday I'm finding more applications using the Mono Framework on a whole bunch of platforms: Android, iOS, Linux, etc.
think about the client side of the web (Score:3, Informative)
And this is the year of the Linux Desktop too (Score:1, Informative)
People have been saying that for years, since .Net came out. And yet, .Net has never really taken off. Slowly growing, yes, but not at any point "taking off" as keeps being said year after year. It's sort of like saying this is the year of Linux on the desktop, it keeps being said but has never really happened.
Seconded... (Score:4, Informative)
If all you care about is being the most employable, PHP/Java/.NET and JavaScript are your best options.
As for something which has a future, I like Ruby. The mainstream implementations are all open source and (so far as we know) patent-free. I'd seriously consider deploying to JRuby these days, but it's reasonably compatible, so you certainly wouldn't be locked into Java.
Python would be another good choice, but I think Ruby has it better in terms of the number of entirely distinct implementations. If Oracle sues JRuby out of existence, there's still the mainstream C implementation (MRI) with multiple interesting branches, MacRuby is looking interesting, and IronRuby strikes me as at about the stage Jython is.
Numbers of jobs. (Score:4, Informative)
So, don't bother with lisp. .NET is popular, but not enough to get over the M$ factor. And unix at 666 W.T.F.??? Looks like C and SQL, same as last decade!
Re:Just C. (Score:2, Informative)
k&r
Re:Just C. (Score:3, Informative)
k&r
Googling...
http://en.wikipedia.org/wiki/The_C_Programming_Language_(book) [wikipedia.org]
Cool, thanks.
Re:Really? (Score:5, Informative)
Yeah, I know this is a bit offtopic, but so is this entire thread.
CAD is in fact still weaker than USD. It's almost tied, but not quite.
For a shiny graph demonstrating this see:
http://www.google.ca/finance?q=CADUSD [google.ca]
Re:Really? (Score:5, Informative)
Look, I don't use
The best language to learn: (Score:2, Informative)
Re:Numbers of jobs. (Score:3, Informative)
Dice has a lot more programming listings than Monster.
Java - 14824 .Net OR C# - 10496
C++ - 5789
Perl - 4664
PHP - 2499
Python - 2196
Objective C - 1267
Ruby - 1169
Cobol - 638
The fact is that regardless of what Oracle is doing the momentum behind Java is pretty strong and will take a lot to derail. It's also interesting that the C family of languages is utterly dominant.
A good programmer will pick up multiple language expertise. If I was looking for a job I'd learn Java, C# and C++. I understand your aversion to Microsoft, but if it meant the difference between working or not working that sort of consideration has to become secondary.
Please check your vitamin D levels... (Score:4, Informative)
...if you work so much indoors: http://www.vitamindcouncil.org/treatment.shtml [vitamindcouncil.org]
Adequate vitamin D may help prevent the flu, too.
Re:Really? (Score:5, Informative)
One thing I've noticed (here in Texas anyways) is that bilingualism is rapidly becomming a requirement for retail/food management. Also, retail management is an ultra-high turnover job; after spending $20,000 to train a manager according to 150 exacting corporate guidelines, you want to recoup some of your investment. Paying them to keep from quitting their shitty job that you paid to train them for means paying them more than accepting a job at a better job with a better work environment. You at least get two months off each year.
A friend of a friend makes 48K a year with full (including eye AND dental) benefits as an assistant manager with a HS diploma at a gas station, and this is in Dallas, with some of the lowest living costs in the nation.
Java is safe. Dalvik is in trouble though. (Score:3, Informative)
I don't see why you should worry about Java given that Apple and Oracle have both committed to the OpenJDK initiative.
http://www.apple.com/pr/library/2010/11/12openjdk.html [apple.com]
So this means that both cross-platform java desktop apps and web services are safe.
I have to ask though, why the avoidance of .NET? If you are "working" for a living then you should be willing to work with whatever tools/languages are required. Leave zealotry at home and don't bring it into the workplace.
Re:Python or Perl? (Score:1, Informative)
Im not going to discuss the technical differences between the languages. Because these dont affect if learning a language is a good career choice.
The community of the language also can be a deciding factor, again i dont want to touch on that.
However, I would like to touch on whats important about learning a language from a career point of view, and deciding where the right balance for you is in regards to...
a. ease to find a job for that language (and location)
b. how valuable that skill is in dollar terms
c. what sort of company is using that language
In the case of a. having thousands of available jobs in that language is both good and bad. On the one hand this means that there are lots of positions to apply for, it may also mean that there is competition for that skill - ie you get paid more. It may also be an indication that you will be an easily replacable monkey on a keyboard.
The location of those jobs is a person decision. Obviously less jobs means less choice in this regard.
The value of the skill is related to a. in that if there are lots of jobs and few skilled people, they will be valuable. However on the other hand, if there are lots of people and lots of jobs - again youve become a replaceable monkey on a keyboard, and if there are heaps of people you wont be getting paid much. This is basically what is happening with Java programmers.
And jobs web sites list jobs, they dont list how many people are applying.
** So somewhere in the middle is the sweet spot for you. You want to have a skill thats rare enough to command more money, but not so rare that you cant find a job.
Everyone is learning Java in uni, and Python is cool. Both those key words do well on job search sites. But will you just be another monkey?
c. what type of company is hiring that skill?
This can be important as well. Companies have a different culture which directly influences your happiness in life as you will have to be a part of it for much of your day.
Now, Python is pretty hip currently. Its found a lot of interest with some large newer companies being very keen on it internally (ie Google, Facebook). The downside is that because everyone is coding Python, you become just another monkey with a typewriter. Just like Java programmers.
Java is also hugely saturated. Plenty of programmers, plenty of jobs, not much pay.
Infact, companies are intentionally choosing languages like Java and Python because they can get decent programmers very cheapily. Which is great for the bottom line and great for the share holder - but sucks for your mortgage.
Im not exposed enough to ruby to comment on it. I think its popular in start ups, but im not aware of any who have really hit the big time. That doesnt mean that they wont or dont exist. However, keep in mind that the funk train of Rails has long since run out of steam. Every language has an MVC framework or 3, and they all copy each others features. Im going to go with some advice, that picking a career based on a framework's features is probably unwise.
C will always do well. But you wont be programming web applications. Which you may perceive as a good thing :)
Perl; there are lots of older companies with huge investments in Perl based infrastructure. Perl is out of fashion, but lots of Perl jobs are in places like Banks and Telecommunications companies. This may not appeal initially. But consider that a. these companies are going to be more stable long term, b. they are going to pay you more and c. youll have more choices. Perl has a very active community and has excellent documentation. Lots of jobs list 'perl or python' - but actually mean 'if you program perl thats cool, but youll need to learn python'
None... (Score:3, Informative)
Get in bed with Oracle (Score:2, Informative)
Re:There's your problem (Score:2, Informative)
That is a big Rock you've been hiding under. Microsoft moves more and more of their code base to .NET with each release. For example the latest visual studio had it's entire UI replaced with WPF (.NET) and it is the most responsive it has been since visual studio version 6. (Office and Windows get more .NET with each release too (have you seen windows 7?) .NET is Microsoft's future and they ARE eating their dog food.
Watch Anders talk about the next version of c# with async moved into the language. This is going to make writing code that takes advantage of multiple cores etc so much easier and mistake free. .NET is so much more actively developed than Java its just sad (I loved Java).
GP: The fact that you would throw it out based on some ridiculous ideology is crazy and decisions like that are what hurt peoples careers...
Best of luck,
J
Re:You're asking the wrong question (Score:2, Informative)
PHP is the retarded brother of C, $so $that's $doable $it's $just $syntax $issues.
PHP and C are nothing like each other, beyond the most shallow typographic similarities of using curly braces and semicolons.
PHP is a high-level (albeit, brain-dead) object-oriented scripting language. It has dynamic typing. Built-in strings with automatic memory allocation. Built-in hash tables and vectors (both bound up in some kind of bizarre composite container thingie they call an array). Exceptions. Run-time symbol lookup. Introspection. Built-in hooks to integrate with a web server front-end. In short, it's nothing like C at all in any way that matters.
PHP is really Perl on steroids, with a marginally nice OO layer slathered on top.
Re:I avoided MS and work as .NET dev (Score:4, Informative)
Since .NET 2.0 it's been a stable API
Not really. I mean, it is stable in a sense that things don't go away - kinda like AWT is still there in Java. But .NET moves on faster than Java, and every new major release adds brand new APIs, sometimes for the same thing.
To be more specific: .NET 2.0 -> .NET 3.0: added WPF (supersedes WinForms), WCF (supercedes ASP.NET Web Services), and WWF. .NET 3.0 -> .NET 3.5: added LINQ as a feature; and boy it's a big one for someone not familiar with the concept from other languages! Added LINQ to SQL (partially supersedes ADO.NET). .NET 3.5 -> .NET 3.5 SP1: added Entity Framework, which supersedes LINQ to SQL; and WCF Data Services. .NET 3.5 -> .NET 4.0: added DLR (and "dynamic" keyword in C#/VB). Major updates to Entity Framework.
That's without even mentioning ASP.NET MVC (because it's a separate product, not part of .NET) and Silverlight...
You can keep using WinForms into 2011 if you want... but most new .NET projects I've seen use the new stuff, which is not surprising. This has both good and bad parts.
The obvious good part is that the new stuff is usually better - often not right away (WPF was kinda meh when it was first released, though you could clearly see the potential), but eventually it matures. Due to .NET's faster feature cycle, you end up routinely using stuff which Java guys don't even dream of. It's literally 10 lines of C# code for the equivalent 100 lines of Java.
The bad part is that you have to be able to keep up. If you fall behind the technology curve, you end up maintaining some legacy .NET 1.x project somewhere - which will pay the checks, but is usually quite boring as far as work goes. But then this isn't something that your average /. reading nerd would be worrying about, right?
Anyway, it seems that the original question had an explicit "no .NET" request not because the guy has an ax to grind on the technical side, but because he does not want to support Microsoft; i.e. it's purely an ethical issue. And he is certainly fully entitled to that.
Re:ObjC is not purpose specific (Score:3, Informative)
Re:Think carefully. Do you want to be close to MS? (Score:2, Informative)
When I write in perl I can't even decompile the code I wrote myself 5 minutes earlier. It's eerie. It's like a one way hash for logic..
Firstly, I'm not really a programmer, ok, I've done a bit of hacking around with Z80/6502/HC11/68K/PIC/FORTRAN/Algol/Pascal/Apl/Ada/C/Perl/Python and a whole bunch of other languages over the years, and am faffing around with Erlang to keep myself amused at present, but have done the occasional contract work (I *really* hate databases..)
but Perl, ahh, great language to have some fun with.
Best bit of weird Perl I ever wrote was a cgi beastie running on a LAMP server, same code handled both the GET and POST, tracked multiple sessions/whatever without using cookies, searched a database, displayed the results, usual sort of web BS.
Main code was conceived over a couple of pints at the pub, written, tested, then up and running on a production system within four hours, a couple of minor tweaks in the first week of operation (mainly fixing html formatting snafus to fit in with the rest of the site), and that was it for something like three years.
They want a modification done, they don't contact me but give the code to a wonk programmer who allegedly knew his stuff, I hear he spent a week trying to figure out what the hell the Perl code was doing, gave up, spent another couple of weeks reimplementing the same functionality on an IIS server with some MS thing (to this day, I still wonder why he didn't just use PHP). Btw, the code I supplied was documented, laid out fairly clearly and heavily commented, it was contracted.
I'm perversely proud of this, even with comments and documentation, Perl can be a bitch if she wants..
(I've a number of cron'd Perl scripts running on one of my servers as I type this, even though I wrote them, about two years ago now, I'm not quite sure I know *exactly* now what they're really doing - still, so long as they churn out the graphs and stats I require..)
Re:I changed my attitude completely. (Score:3, Informative)
Begging for a job from a big corp is NOT the only option.
It is not even a good option. It may seem like big corps run the economy but they do not! small business is bigger than big business.
More than half of working americans work for small businesses and I would bet that they are the happier half.
Don't settle for a job you hate, working for a faceless corp that doesn't give a sh*t about your welfare. If nobody offers you a job then make one for yourself.