views:

377

answers:

8

In the corporate world, Is it better to be knowledgeable(by knowledgeable I mean not a expert or novice but with some coding experience) about multiple languages.

or

is it better to be an expert in one language(say c++ or java) but having just basic knowledge on others.

I ask this question because what I feel is languages can be differentiated based on the features they provide like Garbage collection etc..but this can be implemented in other languages...and why do people prefer one language over the other?

What is the general point of view on this board?

+10  A: 

I'd say learn a couple of languages really well, but keep expanding your knowledge by studying other languages. Not for the languages themselves necessarily, but for the concepts and paradigms they implement and encourage. This'll make you a better programmer overall and better suited for finding the right tool for a larger set of problems.

Alexander Sagen
Wouldnt this complicate matters..as sometimes implementing one methodology used in another language can be detrimental. Doesnt this add to more confusion?
Sii
@MrProg you really think knowledge is a bad thing? I'm not talking about trying to shoehorn the newest CurryFluentClosure hotness into Cobol, I'm merely advocating informed decisions.
Alexander Sagen
Dead on correct. You learn something about *programming* every time you learn a new paradigm, technique, language, etc.
John Dibling
+4  A: 

I think it is more important to be able to learn new technologies, languages, paradigms, etc. etc. on the fly than to be an all out expert in just one of them. You can dedicate all your time, effort, blood, sweat, and tears to learning Java, but what are you going to do in the eventuality that it is no longer in wide spread use. This can happen to any language to be perfectly honest. Your base knowledge in the general principles of programming and programming practices and your WILLINGNESS to learn a new language are what will help you to advance in a corporate environment. If your boss comes to you and says "I need this done in C" and you reply either "I don't know C nor do I like it. How about Java or Python?" or "Sure, but C is not really suited for that task and will take additional effort. How about Java or Python?", that will be remembered next time layoffs or promotions come along.

Adkins
why would somebody fire someone if the task gets done..though using a different language...if it were me all i would care is the task is finished within the stipulated time and constraints.
Sii
What about project interoperability? If someone is unable to transfer to a new technology in a timely manner with the rest of the company that would cause me to seriously consider if I couldn't find someone else who is better suited to the ever changing IT landscape...
Adkins
In the real world, you honestly don't get to choose languages very often. Most people work with fairly large teams that are familiar with 1 (or maybe 2) languages. The business case for picking another language (that everyone is going to have to learn now, to maintain the code) just isn't there. Language holy wars are totally nonsensical, given that it's fundamentally a _business_ decision, not a _technical_ one.
jkerian
Companies have to cope with inertia. If you're doing language X, you hire people that know language X. Even if language Y would be a better choice for a certain project, you still have lots of X code around. Do you start a second department with Y specialists, for this one project, or do you try to do it in X too? --- You usually change languages only when you also change jobs. But *knowing* more than one language is important to *get* a job, because X might not be what is being looked for the next time *you* are looking for a job...
DevSolar
+1  A: 

Learn what you need

why learn ten languages if your only every going to use two? though you should still know what else is available, and what its good points are (and its bad points too), so if in the future you run into a problem you can't solve with what you know, you know where to look for something that can help.

If your looking for a job, it might help to know more languages, as it 'inflates' your CV, but being a jack of all trades probably won't get you hired.

Necrolis
Problem is most (all?) problems can be solved using any given set of tools, people (and companies) tend to stick with what they know unless there is a major advantage in changing language.
Patrick
well, in this case solving is more than just solving, its solving it timiously or with some given set of constriants, which would likely be the case in most companies. But, people and companies like familiarity, sometimes to thier detriment
Necrolis
+1  A: 

Read this: http://www.paulgraham.com/avg.html It is not exactly what you wanted, but can give you another point of view.

Dadam
A: 

First expert in one one language. Then know more languages. (Pick a language per paradigm)

mumtaz
+1  A: 

One famous man said: "Person becomes real software development specialist only when he or she becomes an expert in more than one programming language". So if you want to be a good programmer in Java or C learn Java or C deeply and completely. If you want to become high qualified software developer not dependent on language and ready for changes in programming world - learn both of them and better not only them! :)

Andriy Sholokh
A: 

I believe it depends on your career aspirations. If you're looking long-term at being a consultant or maybe evening being an indepedent analyst, becoming and expert in your technology area is critical. You'll need to focus a lot of time mastering technology in your given area, and you don't have the spare time to become e generalist unless you choose not to sleep. I don't recommend that for the long-run.

Then again I cannot recall how many times I've seen an organization dump a perfectly good code base just to upgrade to the "next-thing" due to the career aspirations of project managers. So maybe it is out of our control?

In the end, I honestly feel that domain-critical knowledge is more important than technology skills. But that is maybe because I'm not only the front lines these days. I'm all for a general lemma that says you should know more than one programming language, but I seriously question those who claim to proficient in ten languages and ten frameworks and ten different operating systems.

Dr. Watson
+2  A: 

be an expert in one language like C++ then if you want to be very good in PHP it would take you ~3-5 weeks instead of 3-5 years (C++), next - if you want to be very good in C# that will take you another 3-5 weeks, and after that you can learn everything else, like .NET/ASP/J#/VB/ very fast. i find it that only ASM is harder to learn, might take more time - 2-3 months, if you have the right books.

everything depends on passion / how much hours a day you read/write/test code...

but if you want to be an expert in any of these languages, experience is what you need, learning is not enough.

IMO - You must be Master of one, in order to have the capacity to learn multiple languages faster. so "Jack of all trades" but also Master of ONE.

Tenev
+1. Additional note: C++ is an absolute *beast* of a language. But I actually *recommend* it as first language, because it teaches you *everything*, from manual memory management up to OOP and generic programming, all in one tight package and from an easy start. It's also even more powerful than it is ugly (and that is saying something). After C++, any other language (well, except the functional ones) will be easy, just a variation of things you are already familiar with. Check http://stackoverflow.com/questions/713704/c-as-a-first-language/713735#713735
DevSolar