Is trying to learn a new language every year worth it?

While spending time recently looking for something new to learn that looked interesting, and it still being so close to new years, I was reminded of a bit of advice from the book “The Pragmatic Programmer,” learn a new language every year. But is learning a new language every year actually helpful?

I’ve struggled with this idea for quite awhile, even before I had heard of the book. It has become, and still is in my eyes, an idea that holds a lot merit for many people, but not for me. I’ll admit that knowing only one language, or skill, can be very stifling to your career, but being a jack-of-all-trades isn’t necessarily the best position either.

First off, there is no way to learn a language in one year; it’s not possible. There are so many things to learn, and so many variables in that space, that unless you work with it every day for multiple hours a day, there’s just no way to learn and become proficient in that amount of time. The 10,000 hour rule states that to excel and have success, you must practice a specific task for around 10,000 hours. In one year, there’s a good possibility that you won’t even hit 1,000 hours. But after that one year, even though you may become knowledgeable in a language, the amount you won’t know is so vast that all the time spent learning something new may have been better spent learning more about the current languages you already have a firm grasp of.

Another problem is the time of one year. One year is a long time; the end is far, far away. I have vague ideas of what I’ll be doing, and what I wish I will be doing a year from now, but one year is too long of a time period to measure any real goal. Six months is even too long! The reason working on a project using Agile methodologies, and in this context I’m speaking specifically on iterative development, is so much better than waterfall is that there are real goals in a foreseeable future. If my team agrees to do X amount of work over the next three weeks, it’s easy to see where I am now, where I’m going, and the amount of time it should take to get there. I can see my goal progressing every day and it’s encouraging.

Learning a language, though, is subjective, so there is no real finish line to cross. Throw in the one year time frame and your well-intentioned goal is sabotaged before you even start.

All that being said, I am looking to learn something new in the near future, so any suggestions in the comments will be appreciated. If you totally disagree and think I’m off my rocker, your comments are welcomed as well! 🙂

7 comments

  1. While you certainly won’t become an expert in a new language in 1 year, I think it can still be valuable to learn a new language. You will probably learn to program in a different style and will probably learn new approaches to solving problems. In the end, I doubt that you’ll be worse off for having spent a year learning a new language.

    I found myself wondering which new language to learn in 2010, and then wondered why limit yourself to learning a new programming language? Just learn *something* new. Like you said, delve more deeply into a language you already know: if it’s Java, become an expert on all of the concurrency utilities introduced in Java5, or learn all about several profiling tools. Or learn to program for a mobile platform like Android or iPhone.

    Or forget languages entirely and explore an advanced technology. Augmented reality, computer vision, information retrieval, NLP, text mining, and machine learning are all hot technologies, will be very challenging to learn about, and may very well be useful in your future career.

  2. I agree, learning a language is more than being able to write a few lines of code. As long as you are a competent developer, you should be able to “learn” any language, being an expert requires a lot more effort. At the moment, there are only a few languages that make much financial sense to be experts in, and trying to be an expert in everything is a horrible idea. Though one of those languages may be mainstream 5-10 years down the road, there is no need to jump the gun, opportunities are everywhere. As Zach said, broadening your “tech-savvy” is much more valuable, or even picking up a hobby like automobiles. At least learning how to work on your car has an immediate ROI (assuming you have something to work on) rather than a sense of accomplishment for knowing something that you will probably never use ( at least anytime soon).

  3. Thanks for the comments… I was afraid this post would get me shunned like Tom Cruise after he writes that mission statement in Jerry Maguire!

  4. I like Zach’s take on it – learn something new every year. You don’t need to be an expert, but have a functional understanding of something new each year is a good idea. As for me, I’m working on forgetting something every year. I’ve forgotten BAL, COBOL, JCL, and CICS just recently. I’m also considering unlearning OS/2 and REXX.

  5. On a tangent, you can break this down to learn something new everyday. So learn a new Java tip a day or a new eclipse tip a day or a new design pattern a day.

    I find it much more difficult to plan and execute a year at a time and much easier to plan and execute on shorter time frames like a day.

Comments are closed.