views:

104

answers:

9

In general, is it better to generalise (i.e. become familiar with lots of different languages) or specify (know 1/2 languages very well)?

I think this is a difficult question to answer as there are many aspects to it (the enjoyment of learning a new language Vs time spent Vs new skills gained Vs everything else), so I'll narrow it down a little: From a purely financial point of view, would you earn more by knowing one language extremely well, than you would if you knew four languages reasonable well?

Note: Personally I would place more importance in job satisfaction than earnings, but assume that you would be equally happy coding in one language for the rest of your life, as you would be coding four languages.

A: 

The sign of a good developer is one who is flexible. One who is familiar with the general paradigms of programming, without the specifics of the language.

For instance, you might work for 10 years on a C++ project, but then one day be asked to write something in Java. A good programmer should be able to do that (after a little studying of the language).

At the same time though, you should know thoroughly the tools and techniques that you currently use. Understand the language, and know the framework.

Mark Ingram
A: 

Focus on transferable skills, rather than languages. Your favourite language might seem great now, but you'll eventually wake up and realize that it's COBOL. (Not literally, mind you.)

Ryan Fox
+2  A: 

Once you know how to code in one language you should be able to code in any language so don't learn languages, it isn't necessary to be familiar with a lot of languages. You should know one or two fairly well, specially the one you're currently working on.

First learn how to code properly. Patterns, performance question, data types, data structures, pointers, what's a memory model, etc. That's the real deal, with that you'll be able to work with any language (more or less) in about two weeks. Things get done always in the same way, more specifically in the same paradigm.

Learn the different paradigms. You'll need at least OOP. I'd recommend having familiarity with at least one functional language in order to better understand the functional paradigm.

But the most important thing, don't just learn how to do things, learn why things are done that way. When you learn how to do something in C# then you won't probably remember it in the future. If you learn how and specially why then it'll be with you for a long, long time.

Jorge Córdoba
A: 

As always, it depends. Some folks still do very well writing COBOL or something even more obsure. If you live in a large city (or are willing to move to one), there will be a market for these specializations. If you're in a smaller place like I am, specializing would be pretty risky.

ScottStonehouse
A: 

Lars is correct, this question has already been answered and a search would have revealed it.

As a polite request, please ensure you search before posting a question :)

Rob Cooper
A: 

@Lars and @Rob Cooper

Apologies for the duplicate question, searches for "generalise", "generalize", and "specify" did not return any relevant results. Also, the related questions field that pops up when asking a question did not show up the question Lars pointed to.

Lehane
+3  A: 

Please do not mark down duplicate questions. They are explicitly allowed in the FAQ:

If you ask a question that has been asked before, that is OK and deliberately allowed. No question is too trivial or too "newbie".

Flubba
A: 

One point to note, if a dupe is identified, then can the original poster either:

  • Close the question (accept the referring answer) or
  • Edit their question and expand on it if they feel the previous question does not fill the void..

This just helps us keep things constructive and tidy..

Rob Cooper