Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Possible Duplicate:
Should I focus on being deep or broad

Doing which of {coding,learning} will you recommend for a programmer in his/her free time? Of course,this question is valid in case of coders who are able to do reasonable things in at least one mainstream language.The reasons why I'm asking this question are,

  • Coding will improve skills on the language already learned, but there will be situations in which we have to use other languages.
  • If one learns a new language,instead of using what he/she learned, it will cause losing at least some knowledge on the language already learned.
  • No doubt,no one can completely learn a language,so moving to a new language may make him/her nothing
share|improve this question

marked as duplicate by Mark Trapp Jan 27 '12 at 21:04

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

5 Answers 5

up vote 6 down vote accepted

If at all possible then both.

I would also like to dispute your second point. Learning a new language does not decrease your skill in the older one. The human brain is wonderfully stretchable. But like real muscles, you need to exercise it to keep it stretchy and supple. To a programmer that exercise takes the form of learning something new.

One thing you must consider is that programming is programming. The core skill set is the same no matter what language you are using. If you are skilled in Java, then chances are good that you'll be skilled in Python once you learn it.

Learning a new language has several benefits. There's expanding your tool box, and improving your marketability as an professional programmer. But also it teaches you to think differently when you program. The difference between Java and Python (to keep using our example) have differences in syntax and paradigm and more. These differences allows you think outside of the box. This is especially true for people who have programmed only with one or two languages for a long time. This expanded way of thinking can be applied on all of the programming languages you know. Even the one you think you already know.

So in essence, learning a new language not only teaches you a new tool, it also improves the way you use your older tools.

Definitely learn more about your current set of languages, and practice them. But also, don't be afraid of learning something new.

share|improve this answer
1  
+1: You'll find lots of quotes out there about learning Lisp, if only to help you program better in other languages. The basic idea applies to any language that does things differently from what you're familiar with, not just Lisp. –  David Thornley Jan 27 '12 at 18:55

It depends on the experience level of the programmer. In The Pragmatic Programmer the authors recommend learning one new language per year, but note that the subtitle of that books is From Journeyman to Master. I always warn people that if they're not yet a journeyman programmer this advice might do more harm than good. If, as you say, you're able to do most reasonable tasks in your primary language, then it might be time to branch out and pick a new language to learn. However, if you still spend a lot of your work time researching how to do common tasks, then you might want to spend your free time developing your skills and knowledge in that language.

share|improve this answer

Depends on what you want to do:

Do you want to be a hacker or do you want to actually get something done (no knock on hackers here in the least)?

If you have an idea for a project that you actually want to get done at a high level of quality, stick with what you know and get it done (barring any technical limitation of course, i.e. VisualBasic6 may not be the best language choice for a web application).

If you don't particularly care about shipping something and simply enjoy learning (I belong to this group for the most part, as do most hackers AFAIK), but might jump on board with an OS project to apply your new learnings, then start learning new languages. Having said that, I wouldn't necessarily learn an arbitrary language just for the sake of learning it. I'd perhaps evaluate a list of languages and concentrate on a select few based on specific criteria that appealed to me. For example:

"I've been programming in OO languages for most of my career. I'd like to learn a purely functional language to expand my horizons. I'd also like to melt my brain. I'm going to learn Haskell."

or

"I'd like to jump into mobile development focusing on Android." <- this pretty much totally narrows that list by default ;)

share|improve this answer
    
Hmm,giving a try to mobile development is a good idea –  jineesh joseph Jan 27 '12 at 19:29

At the risk of stating the obvious: which will provide greater benefit will depend on your current strengths and weaknesses and (especially) intent/ambition.

How well can you use your current language? If you constantly run into the limits of the language you're using, and have ideas of how you'd like to do things better but your language won't support them, then there's a pretty good chance that learning something that supports (more of) the kinds of things you'd like to do will be a big help.

If you're not to that point yet, it may still make sense to move to something else. In this case, it's more a question of your own priorities -- which/what language do you really want to learn, and what kinds of problems do you want to solve? If the language you're currently using isn't well suited to the kinds of things you want to do, then you might want to move toward something that's oriented more toward the kinds of things you want to do.

If that doesn't apply either (the language you're using is good for the kinds of things you want to do, and you're not running into limitations from it) then chances are pretty good that you'll gain the most from just becoming more proficient in that language instead of working at learning something else.

share|improve this answer

It doesn't matter. Do whatever you enjoy most. If you enjoy learning languages, then try new languages. IF you would rather explore 3D graphics, or audio processing, or web page layout, or game development, or robotics, then do it. You will progress fastest doing something you like.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.