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."
".NET languages"
.NET. There is a reason for that.
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.
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.
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."
When you're afraid to download music illegally in your own home, then the terrorists have won!
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."
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.
You're asking the wrong question.
Here is part of the right answer.
http://pragprog.com/titles/btlang/seven-languages-in-seven-weeks
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.
You might want to spend some time on jQuery and other tools for building more interactive web UI's. While there are promising newer languages for the backend, it's not yet clear that they're going to take over from Java, PHP, and .NET. But the Javascript, client-based side of things is definitely growing and new tools are being developed.
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.
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.
Don't thank God, thank a doctor!
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!
Red to red, black to black. Switch it on, but stand well back.
k&r
k&r
Googling...
http://en.wikipedia.org/wiki/The_C_Programming_Language_(book)
Cool, thanks.
I watched C-beams glitter in the dark near the Tannhauser gate.
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
I just pooped your party.
Expensive? http://www.mono-project.com/Main_Page .NET either but it's a very very very capable tool for business apps and is one of the few things MS is really doing correctly. Choosing the right tool for the job is very important, and there are quite a few situations where .NET fits much more than most other packages.
Look, I don't use
Mandarin
...if you work so much indoors: http://www.vitamindcouncil.org/treatment.shtml
Adequate vitamin D may help prevent the flu, too.
A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
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.
moox. for a new generation.
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
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.
Jesus was a compassionate social conservative who called individuals to sin no more.
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'
You are thinking like a 20-something techie. Start thinking like a 40-something with kids. Learn how to be a leader, how to manage projects & customers and how the business operates. Look around your office and find the 45 year old developer grinding away in the corner - then ask yourself: "Do I want to be that guy in 20 years?"
If you want to assure your future, learn SQL, PL/SQL, Oracle Forms, and the Oracle report writers. And if you are so inclined become an Oracle DBA. Best is to learn all of it. You may not like the Microsoft products, but there's demand for it, so pickup .NET. Forget
your anti-microsoft prejudices, they aren't helping your pocketbook one bit. Good luck.
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
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.
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.
From Wikipedia: "Objective-C is a reflective, object-oriented programming language that adds Smalltalk-style messaging to the C programming language. Today, it is used primarily on Apple's Mac OS X and iOS: two environments based on the OpenStep standard, though not compliant with it.[2] Objective-C is the primary language used for Apple's Cocoa API, and it was originally the main language on NeXT's NeXTSTEP OS. Generic Objective-C programs that do not utilize these libraries can also be compiled for any system supported by gcc or Clang."
http://www.rootstrikers.org/
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.