views:

257

answers:

17

I will be graduating next year and would like advice on languages that are in demand, I already know C,C++, PHP and Java. I would like to learn other languages that might help me get a good job. would .Net and Ruby suffice? should I learn scripting languages such as Python and Perl as well?

Wow! so many responses in just a couple of minutes :), Thanks to every one who responded. I would like make this a Wiki article too. Many students seek the same answer as i was searching for and this would be really helpful.

+1  A: 

Try learning a functional language, since it looks like you already have a pretty good handle on imperative languages. How about Scheme, Prolog, F#, or Lisp?

mgroves
How many jobs do you know that ask for scheme/prolog/lisp experience?
Alan
He did specifically say "that might help me get a good job". Functional languages are great, but they certainly don't fit this requirement.
Draemon
Who said anything about experience? We're talking *learning* here. Learning a functional language will greatly help you, no matter what language/platform you end up using.
mgroves
Totally valid point. Functional programming teaches you about methodology and programming ideas that you can use in OOP, even if you're not using the functional language. Or take a look at Scala. Functional programming in Java. +1 for a GOOD answer.
samoz
Most newer languages (Python, ruby, C#) have features that draw heavily on functional languages. LINQ can almost be seen as a functional sub-language, and it's certainly in demand. I don't think the overall suggestion is that bad. I wouldn't go for any of the recommended languages, though.
Michiel Buddingh'
No, mrgrooves, we're not talking about learning. We're talking about making a candidate more viable for jobs. At least thats what the OP asked for. I've been in the modern software industry and no one is asking for lisp/scheme experience.
Alan
I agree with Alan. There are plenty of technologies you can learn to expand your knowledge of programming, but if you're looking for a job, Scheme/Lisp/etc are not going to be very helpful (in general). At this point, as a new grad, make sure you know the basics of hot languages like C# before spending much time on more "out there" languages that will only help you indirectly.
Donnie DeBoer
Learning a functional language will help with really understanding lambdas, tuples, and other concepts that are 'native' to functional programming. Isn't that just as important as learning "yet another" set of declarative syntax?
mgroves
And let me also make this point: learning a new language doesn't give you "experience" in it, espeically from HR's perspective.
mgroves
I agree that learning functional programming is worthwhile, but not in the context of a new grad trying to get a first programming job.
Donnie DeBoer
learning spanish would probably help more than learning Prolog! ;-)
Steven A. Lowe
+1  A: 

You will get popularity of languages at the TIOBE site.
What matters is can you program in the language you learn.

There is a difference of syntax and semantics
in learning a language and learning to program.
If you do the latter, picking up the language required for your environment will never be a problem.

Unlike suggested by some, never get comfortable with a single language.
Find your comfort in algorithms, data structure definitions and problem visualization.

nik
A: 

Decide what field interests you the most and learn the language best suited for getting things done in that field.

Kai
+1  A: 

It really depends on what kind of job you want. Based on your list of known languages, I'd suggest learning C#.

Donnie DeBoer
+1  A: 

Some .Net languages :) (C#, VB)

The Sheek Geek
A: 

Learn something that will teach you how to program in the multicores environment easily. Something functional in nature comes to mind. It looks like it's the direction things are going.

Jimmy Chandra
A: 

Ideally you'll want to learn the languages that help you do your job effectively. If your job requires a lot of text processing, Perl is invaluable. If you're doing rapid prototype stuff, its hard not to recommend Python. Since you're looking for a job, you outta focus on languages that have the most appeal.

Knowing C++ and Java will make you a desirable new-hire already.

I would definitely add .NET (edit: C#), especially if you are in the greater Seattle area (MSFT country).

I think python and perl are great languages to learn (python is my favorite language of all time, even more so than the language of love), but in my limited experience, they're nice to haves, but fall lower in priority over C/C++/Java/C#.

The jobs I see asking for scripting, python, perl, flex, etc, tend to be lower paying jobs, than ones that specifically look for C++, Java and C#. In my opinion, those are the big three, and other languages are like the icing on the cake.

Alan
+1  A: 

In terms of being able to scope out a lot of jobs, .NET is pretty big and seen everywhere. I haven't seen too much Ruby, although it's definitely out there (both in big and small companies). I've been working with Python as of late myself, and I have seen some Python developer jobs even on the Stack Overflow job boards.

AlbertoPL
A: 

People's definitions of `knowing' a language varies; I think it's probably at least as useful to be at a point where you can say, with some certainty, that you know one language reasonably well. To a point where you can routinely answer questions on SO about it, for example.

Confidence in your ability in one language will be a useful yardstick for learning others. Oh, and employers appreciate it above mere familiarity, too.

Michiel Buddingh'
A: 

English is Universal.

Lance Roberts
A: 

Python - The one language that's guaranteed to help in whatever you do related to programming and computing in general. It's a shame so few places teach it formally.

If this was 7 years ago, the answer would have been Perl instead.

shoosh
+1  A: 

Depends on where you wanna head. employment, freelancing? You need to learn also frameworks, not only the language. I'd say Ruby and Rails with JScript and jQuery are in high demand as being productive.

If you're looking at freelancing, go to a site like Elance.com or rentacoder.com and see what kind of projects ar ein demand. It seems that the most demanded is still PHP.

Remus Rusanu
A: 

my suggestion would be to pick two of the languages you already know - C++ and Java, and get much closer to mastery of them.

San Jacinto
A: 

I'd recommend the D programming language. The cool thing about it is that it's the best attempt I've seen to blend all three major paradigms (procedural, OO, functional) such that you can use any one of them for any subproblem. You might learn functional faster in a "real" functional language if you stick to it, but it may be very frustrating, and won't see how the different paradigms fit together and complement each other like you would in D. In D, you will start out programming in whatever style you're used to and gradually learn to blend more and more functional flavored stuff into your code and use immutable data more until you're fairly comfortable with the paradigm, but without being forced to use it everywhere.

dsimcha
How many jobs ask for D experience?
Alan
+1  A: 

C# is the big one you're missing as far as demand goes.

However if you want a job at a serious software company (e.g. Google, Microsoft, etc.) they will be more concerned with your overall technology background and programming skills independent of a particular language. So it would help to bulk up on networking, databases, security, etc. At Google and Microsoft, to take examples, you are expected to be able to tackle any problem, in any language, with minimal ramp-up time.

RichAmberale
A: 

I'd recommend you learn bash shell, sed, awk, grep, and the other UNIX tools.

Usually you can make VERY powerful programs using these tools in a fraction of time that you would take to write the same program from scratch.

But they don't work on Windows!

Well, then use MinGW or Cygwin. Since these languages are for scripting, you shouldn't need to deploy them too widely, and if you do, just deploy the cygwin.dll with them.

samoz