Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: Is it possible to be very good in multiple languages?
5 points by kissgyorgy on Dec 12, 2013 | hide | past | favorite | 8 comments
Is it possible for someone to deeply understand all of the following languages? Python, Ruby, C, C++, Objective-C, JavaScript, PHP, Go

In the last 6-7 months, I intensively learned Python, and I feel I pretty much know all the important basic principles, I can write idiomatic code in it, I can optimize, profile and know the important tools and libraries. I dig deep into Django, I know my way around it at a level where I'm comfortable with it. (Of course I'm not an expert at all and don't even know the Standard Library deep enough yet.) However Python is a pretty easy language.

What time would it take to learn the other languages at least this level, and is it possible at all to master 7-8 languages let's say in 5 years? If not, 10, 15 years? (By "mastering a language" I mean that you are pretty productive and can get a well paid job with any of the languages you know.)

I already know that I want to do programming for the rest of my life, so should I pick one language/technology and stick to that and learn it very-very deeply, pick up one and two beside that, or should I go all-in and learn every language as much as possible?

I'm aware of that you should learn general applicable programming principles, theories, algorithms, math all the time which you can use in any languages, but I feel knowing the language itself is also very big part of the process.



All three of these are valid strategies. The larger question is, what specifically do you wish to achieve?

Assuming you're aiming for "pretty productive and can get a well paid job with any of the languages you know", note that skill in programming is, but one dimension in the employability equation. A handful of others include: domain-specific knowledge (both technical, and those specific to the employer's industry), communication skills, ability to juggle tasks, and ability to sell. Strength, or lack in any one, or combination of these skills can be an overriding factor in your pursuit.

You'll often find on these boards, and in software circles people very noisy about language of choice. This has historical, sunken-cost-fallacy, and mid-carrier-crisis backgrounds; none of which are particularly productive to your goal. You'll also find many posts claiming shiny features achieved in one particular language. This has marketing background, and is also not conductive to employment.

In conclusion, given your stated goals, your question is a red herring -it serves to distract you from what you're trying to achieve. It is possible to be very good in multiple languages. You might even aspire, and reach this goal within 3-5 years. Whether the industry will need those skills, and whether you'll be employable in any of these, are separate questions entirely.


Interesting. I assumed that there is a linear relationship between the level of technical skills and employability. Would you say that if somebody has a lot of technical skills but lack of the others like communication skills would find a job harder than somebody with less programming knowledge but more of these 'other' skills?


There is not a linear relationship between technical skill level and "hire-ability". I would describe it as first a step function, i.e. there is a minimum level of technical skill to get an interview and be taken seriously. Then the function is a linear rise, but it quickly levels off to a flat line. Once hired, higher technical skill will correlate with higher job performance and success, but again only up to a point where the curve will flatten out again.

Once you are in the linear portion of the technical skill curve, your hire-ability is much more strongly affected by the "softer skills": verbal & written communication, ability to think critically and express that thought, and the social skills to quickly assess your interviewers and establish a rapport with them.

After you get hired, better technical skill certainly helps, but it does level off. Also, it is not indepedent of the soft skills: I've known individuals with ridiculously impressive technical knowledge and skills, but their utter lack of communication/social skills not only hurt them career-wise, but actually made their high technical skill a liability at times.


Going by your numbers, you mastered Python in 7 months. Therefore you should be able to master all 7 other languages in no more than 49 months which is about 4 years.

Of course, I don't believe your numbers. You may have been able to master some commonly used bits of Python in 7 months, but it takes about 7 years to master anything. Programming languages are a bit of a special case because there is a lot of overlap so I think that Ruby would take an additional 2 years, but C would likely take another 5 years. Then 5 more for C++, 2 years for Objective-C, two for Javascript, two for PHP and another one year for GO.

Of course if you do it in a different order, the length of time would be different because spending less than 7 years to master something requires that you reuse a lot of existing knowledge.

In human language terms, for an English speaker to master French, Russian and Mandarin would take no less than 21 years. But for that same person to master French, Spanish and Italian would take about 12 years.

The best advice would be to not worry about any of this. Find a job that requires programming and learn whatever tech you need to use in that job. Then move on to another job that uses at least some different pieces. If you are not actually using a language to build real things then you won't really learn it.


In my experience, this is more about memory rather than intelligence / ability to understand. I used to be quite good at C++ and Perl and then I was asked to move to Java and these days I work with Scala + Java. In between, I also learned quite a bit about my domain (financial industry / trading), and ended up getting good at R in the process. Now, I will probably not pass a C++ interview! :-)

At the same time, if I had access to good notes (that I made), it will all come back pretty fast. For example, I picked up the "C++ FAQs" book by Cline, Lomow and Girou from my bookshelf as I was typing this and as I thumb through it, I am experiencing a lot of, "Ah, right, I remember this now".

> I already know that I want to do programming for the rest of my life, so should I pick one language/technology and stick to that and learn it very-very deeply, pick up one and two beside that, or should I go all-in and learn every language as much as possible?

I would say learn one language VERY well AND make notes. Then the rest can often be learned by comparison quickly. The problem is that many times, your employer,a Lead Architect, etc; may decide the language for you, and you may not have that much say...What's worse is being asked to move back and forth between related languages, which can be quite confusing!

My conclusion is that both you and I should probably start using Anki or other memory-aiding software to make notes as we learn! Here's a great article by Derek Sivers on "Memorizing a programming language using spaced repetition software" : http://sivers.org/srs. I've read that article a month ago or so and have been meaning to finally start using Anki along with my Functional Programming in Scala coursera course, but somehow didn't.

However, note that some people make an entire career out of being a guru at one thing. In this path, one key element (that took me too long to grok) is : don't just learn, WRITE about it. Blog about what you learned. Even better, write a book about it, attend conferences, etc; That is the way to extract the maximum return for the effort you placed in learning one thing deep down to the metal! When you meet people in person, it opens up opportunities that are exponentially better than merely going to a job search engine!

That was quite rambling; I hope there is something of use to you in there!


Great answer! I thought exactly what you describe; a lot of depends on lexical knowledge about the specific language... I was using Anki to learn key combinations of my IDE, editor, and terminal commands, but I did not thought about to learn a language with it! I will definitely do it!


In my opinion, if you're not good enough to adapt to any given language, you have quite a ways to go before calling yourself a software engineer.


I think anybody can, but the question is only in how much time?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: