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?
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.
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.
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.
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.
Read this: http://www.paulgraham.com/avg.html It is not exactly what you wanted, but can give you another point of view.
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! :)
First expert in one one language. Then know more languages. (Pick a language per paradigm)
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.
精彩评论