views:

421

answers:

13

Between school and personal exploration I have dabbled in a range of languages, but I wonder what is the best language to focus on to make myself more valuable to possible employers?

I've done work in C++, VB6 & .Net, java, and I've just started playing around with Delphi. I feel like I have a good understanding of the basics of programming, and think I should start focusing on a specific language.

So is it better to know a little about a lot of languages, or a lot about a few languages, and if the latter which languages are the best to focus on?

+12  A: 

C++ because

  1. By exposing lower level stuff, it'll make you more knowledgeable about computers and programming than Java or .Net will.
  2. At the same time, it'll get you employed too.

About the "one or many" question, I think it is better to know all (or as much as you possibly can) about one language when you start. But once you are pretty damn good in it, you must expand horizons and learn other languages as well, even if partly.

Frederick
Agreed.. 100%... You will learn soo much more by understanding what's going on under the covers of the VM-managed languages. Helps dramatically in debugging and perf tuning.
Ryan Emerle
It's really easy to go up the stack, it's hard to go down. Any C++ programmer worth his salt can quickly become a C#/Java coder. The other way around is a lot harder.
Steve Rowe
I don't agree. Learn C, not C++. C++ is a horrible language in the first place.
Rayne
A: 

Without putting down other languages , I think currently C# is a great language to try things in. Though a downside is that it is tied to Microsoft platform. However, it is one of the most feature rich languages around. And plus it has great community support , help forums and , of course , great books to support the learning! All the best.

Learning
A: 

Yeah I think either Java or C# are good languages to learn to start with. Java is great but you will prob spend some time up front setting up libraries and the like while with C# you can just get going as everything is packaged within the .NET framework and Visual Studio.

A: 

Well, it's a must to have one or two language as your expertise.

Personally I'd go with C++ / Python / Ruby. To help you make your decision, see also this thread :

http://stackoverflow.com/questions/525754/what-next-c-python-or-ruby

andyk
+4  A: 

SQL? It's a specialisation that many folk neglect... It's served me well :-)

(The thread is tagged "subjective")

gbn
Totally agree. PHP is everywhere, Java is in good demand, C++ (as Frederick says) will teach you a ton you can use in other languages... but I use SQL every day. Programmers who are good with SQL are more valuable than ones who need to learn it, and EVERYONE uses it.
MBCook
A: 

The experience with C++ will build a great foundation. But where do you want to work? If you want to start your own software company (not a consultancy but sell an application or SAS), you have a lot of options. Large corporations are usually Java or .NET.

The further you are from entering the workforce, the less likely you will be able to predict the most desired skill set.

Jeff O
A: 

I think I'll just reuse my answer from here. That was about UNIX, but most of it should still give you some suggestions.

skiphoppy
+3  A: 

None.

Stop fussing around a 'best' language. There is none. What is important is to get the job done the best way. In general pick up one language as follows:

  • web programming: c# or Java (also: javascript, python, ruby)
  • windows programming: c++
  • scripting: perl
  • functional: lisp

But the key is to be prepared to use Visual Basic if that is what it makes it easy to finish the job at hand.

More importantly learn the important data structures/ algorithms/ threading concepts.

Sesh
Ruby is functional?
TM
I'd +1 this if the list of languages were not totally broken.
David Schmitt
He didn't ask for "best" language. He asked for best language to focus on to make himself more valuable to possible employers. That's a bit more specific than "best" language.
Domchi
I disagree. Haskell and Clojure are the 2 best languages. We all know this ;)
Rayne
TM: While Ruby is not a functional language by definition (e.g. it supports variables), lot of people use it as one.David: Right. But that is also my point. No language is 'best' or rather a 'purely xxx' - c#, java...have their mix of procedural, functional and other programming paradigms.
Sesh
+1  A: 

When looking for a language to program, don't focus on what's "cool" or useful as a career programmer. Focus on programming something you can run.

If you start using C++ because you heard it was the things that industry uses, etc you make find that you spend a lot of time trying to figure things out that might otherwise be achieved in an easier language such as C, Javascript or Basic.

Once you have successfully run something you will change little things and hopefully understand what you have made. Also, DO NOT FEEL BAD STEALING OTHER PEOPLES SOURCE CODE! This is how you learn, by taking source, modifying it one parameter at a time and then cobbling multiple pieces of source code together. You will learn much faster this way rather than trying to read developer documentation (which can be very daunting for a newcomer).

I would recommend downloading some some source and start tweaking. The language does not necessarily need to be one that I recommended. However I would recommend starting with Java and it is quite easy to learn.

PS: Try not to listen to the people who say that 'X' language teaches you bad programming skills. It's very easy to adapt yourself to new languages and everyone writes bad code starting out. You cannot avoid it, you are going to write bad code so live with it. The more important thing is not getting overwhelmed on the first try. If you do get overwhelmed you will most likely not try again for a long time. Java has its problems but guess what so does C++/C#/Ruby/Python/Objective-C/Visual Basic/etc. I recommend Java because it is EASY. Even a monkey could code in Java. It's also powerful enough that you can learn a bit. Later you can move to C++/Ruby etc.

Here's Hello world in Java:

class HelloWorldApp
{
    public static void main(String[] args)
    {
        System.out.println("Hello World!"); // Display the string.
    }
}

Get a compiler to run this code like Netbeans or Eclipse. The next step is to do some tutorials like the ones that Sun have on their website

Making yourself valuable to employers depends on the job. SQL developers are valuable as are C# developers. Learning C# or Java is not a bad thing I would recommend knowing these. However knowing Frameworks i suppose is also valuable. Learn the frameworks for your avenue of interest: ie DirectX/OpenGL for game programmers, Cocoa for Mac developer and C#/.net for business programming.

Good luck coding :D

Brock Woolf
"Even a monkey could code in Java." So Tester101 is a monkey? =]
strager
I do like bananas
Tester101
+1  A: 

As of yet, I've stuck with Java. Great documentation, and (nearly) portable to a wide range of Operating systems. With alot of phones coming with a simple JRE, you can try your hand at making anything from web apps to phone apps.

Kyle G
+2  A: 

C++, C# or Java would all be good choices. If you're interested primarily in landing a job, then I would lean more towards C# or Java though. I say this is because although C++ is probably more popular than C# or Java, there are more jobs openings right now for C# and Java programmers.

Chris
+1  A: 

I'd choose one mainstream programming language which has a future and which I like. And I mean mainstream, which means you get to choose between Java, C#, Javascript and maybe (but better not) Python and PHP.

I see a lot of folks recommending C++. C++ is here to stay, but it's too old to start with and C++ programmers naturally progress to C#, at least in corporate environment. I would recommend it for best language find a job 10 or 15 years ago, but not today.

A few years down the road, or in your spare time as a hobby programmer, you can play with something sexy. iPhone/Cocoa seems to be all the rage these days, and Flash game programming can provide a nice income if you're into it. If you're more into web (especially if Java is your platform of choice), you can try Ruby on Rails; if you're into academic languages and programming theory, you can play with LISP; if you're into Linux and system administration, Perl.

You asked a specific question which is easily read as "what's the best language" instead of "what's the best language to become good at and get a job" - today, this means Java, C# or Javascript.

Also, check TIOBE Programming Community Index - it's a good indicator of language popularity.

Domchi
You're wrong about C++. The whole embedded systems world is not close to moving to java/c#. TIOBE is about web, not about the rest of the world
Stephan Eggermont
I concur that embedded systems will probably never move to Java/C#; however, the typical corporate application which is not "legacy" has. I don't have anything against C++, but by knowing C# you won't end maintaining some old legacy app.
Domchi
A: 

Here is another thought:

Consider you are running a startup, or may be a personal-interest development work. It is a web application and you have total control of what dev environment, server to use. The end-users will only need to use a browser so their OS etc also does not matter.

In such cases, what the heck matters if you use java, ruby, c#, python, haskell? what is needed is something that you can easily complete: the main job is to complete the application and not writing code.

Coming from that thought, even if you are employed somewhere, all that matters is to be able to complete the programming assignment you were given. For that one cannot tell what is a best language. It depends on the project assignment.

Even if you want a language that is most likely to get you a job, it seems there are at least 3-4 languages that have equal chances of landing you a job (did not pull this from nowhere, just take 2-3 job portals and count the number of java, c#, ruby jobs).

Sesh