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.

In the ever changing world of programming, how often to you catch up on a new language or technology? I have heard it said that one should learn a new language yearly. Is that always true?

share|improve this question

closed as not constructive by Yannis Rizos Mar 8 '12 at 15:27

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

    
That new language yearly thing comes from The Pragmatic Programmer. If you haven't read it, then read it! –  Skilldrick Sep 23 '10 at 11:59

6 Answers 6

up vote 18 down vote accepted

How often do you expand your skill set?

You should expand your skill set continuously.

I have heard it said that one should learn a new language yearly. Is that always true?

Not necessarily, as most languages take more than a year of experience to really know inside and out. Do try to expand outside of your world of knowledge though for example if you've never tried functional programming, there are a lot of good lessons to learn for all programming by knowing some functional programming languages.

If you haven't tried dynamically typed languages and you'e only used statically typed languages, then try that as well. If you've only used managed languages with garbage collection, then try a more native language.

If you've never done socket communication then regardless of the language try it out. Your time doesn't always need to be spent learning basics of new languages, often you can learn concepts that apply to all languages equally.

When to learn it?

If you are a good programmer then you love to program, even on your own time. So take the time and learn things on your own time after work.

If you can't use it on your job because it's not appropriate you could always try to find a job that is more cutting edge as well.

How to discover what to learn?

It's always a safe bet to learn what's hot. And figuring out what's hot is easy if you are following some popular twitter figures, and reading blogs.

But above all if you have a big interest in something then consider learning that instead. It will make you unique and stand out above the rest.

share|improve this answer
    
Wanna recommend some Twitter figures? –  Moshe Sep 5 '10 at 4:33
    
@Moshe: Sure check who I'm following on twitter. –  Brian R. Bondy Sep 5 '10 at 12:03
    
@Moshe: see programmers.stackexchange.com/questions/135/… @Brian spot on mate, great answer. Additionally, I have found in my experience is takes me usually two years of coding to feel comfortable in a language. After a year I can write some code but after more or less another year you can really caress and massage the language to do what you want and produce quick results. –  Chris Sep 25 '10 at 2:26

Unless you want to get stuck in a niche (for example, those godforsaken Cobol programmers), you need to keep learning.

My advice:

  1. Keep your ear to the ground to figure out what's new and cool (read blogs, talk to other devs, etc)
  2. Try to build stuff in your own time with technologies you think are cool
  3. Encourage your boss to let you use cool new technologies
share|improve this answer
2  
The only thing I disagree with is 3. Unless there's some feature in the new technology that will be advantageous to the project, it might not be worth the learning curve for the development team. The end goal is to ship working software, and I'm not sure using something new to the team is the best way to do that. But it does depend a lot on the experiences of the team and size/scope of the project. –  Thomas Owens Sep 3 '10 at 13:40
3  
@TO: Depends on the project. If you're working on something lower-pressure (an internal project, or something with a light deadline), it may be worth it for the company to build their 'knowledge assets' for lack of a better term. It might take a little longer than it would using older technology, but the company thereafter has one more tool in their bag. –  Fishtoaster Sep 3 '10 at 14:02
    
That's a perfectly valid point, too. You just have to be careful on what projects you use new technologies on. @Brian: "Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest." - Software Engineering Code of Ethics. As long as the public interest is not endangered, your next duty is to the client or employer, not the self. In fact, "self" is 8th of 8 in the list of principles. –  Thomas Owens Sep 3 '10 at 14:06
    
Programmers like playing with new toys. Using new technologies for internal projects will help morale –  Casebash Sep 4 '10 at 0:09
    
@ToasterFish (me picturing a toaster fish) The low pressure projects are the best time to try out that fancy new language or feature. I drool over these projects because not only are they fun and interesting but you get to expand your skill-set with a real world project. –  Chris Sep 25 '10 at 2:29

You should be expanding you skills constantly. Sometimes, all you need to is knowledge to your existing skill sets. You can always learn about some new library, or some new tool, or the new version of the tools you allready know.

About once a year, you should really try to learn something big. Learn a new language (especially one in a paradigm you don't currently know) or learn to develop on a new platform.

I follow a handful of blogs and podcasts just to know what what is going on in the industry. I also stay active in local user groups to see what other people are learning and working on.

And of coarse, there is always Stack Overflow. I've learned a lot asking, reading, and answering questions on the site.

share|improve this answer
    
I agree that you should try to learn something big at least once a year. It doesn't have to be a new language –  Casebash Sep 4 '10 at 0:07

Some interesting views here! I'm a Java programmer by trade and love programming. Although initially when I first started work after graduation it was simply about getting on with work where I didn't think too much about broadening my skills set but since of late I have been learning some new concepts/technologies (time permitting balancing with family life) as this understanding sure is valuable and help make you a better programmer!

Company I'm working with recently starting thinking about introducing your own personal time space perhaps a few hours to a day every month to do some own work that interest you and beneficial to the company.

I'm not sure though if a new language can be learned every year but I guess to a certain extent you may not know the full inside out yet! But I guess even spending some few hours each week reading, trying something out or even reading some topics in stackoverflow you learn something new! Fast world out there!

share|improve this answer
1  
One year is a little bit too much for learning a language. It should not take more than a week for the worst case, if you already know some, and it really worth paying attention to all the new languages arising - most likely they'll never find any practical use, but it worth stealing nice ideas from them. Even if you're using nothing but Java, that ideas might help a lot. –  SK-logic Mar 25 '11 at 10:35
    
@SK-logic yep your right good point, you can spend a few hours looking at a new language and if your already familiar with e.g. Java grasping some concepts from another should not be hard and will broaden your views I think. –  MalsR Mar 25 '11 at 10:40

Yes, you should always be learning something new, and a new language every year is ideal. Having said that, it's probably hard to keep up with if you have a day job and a life outside programming.

I think if I hadn't at least heard about and played with a new language for about three years, I'd start to worry that I was falling behind.

share|improve this answer

Short answer:

Constantly!

Longer:

I try not to avoid new challenges. Even if I'm not skilled at that particular thing, I read up on it, ask more experienced coworkers. There is nothing worse than solving a problem and not knowing why it actually works. It will come back and bite you.

share|improve this answer

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