| This reminds me of the old adage: "A jack of all trades is a master of none". I totally agree that learning new programming languages is great, and can help someone get a lot of new concepts. It certainly is fantastic for learning to separate syntax from algorithms from styles of thought. However I have found that there is a point of diminishing returns. There is only so much you can get from learning e.g. 5 different object models, at some point it is no longer new, just annoying and different. This is doubly true and noticeable if your previous languages were all over the map -- say js, python, haskell, c, prolog and so on. At some point, it becomes more useful to dive deep into other things. Are you a systems guy? Attack a kernel bug. Are you a network guy? Make a traffic classifier. (or want to learn them well...) Trying to learn a new language and a new problem is prohibitively expensive sometimes. My general rule of thumb is: if there is nothing about the new language that excites me, find a different problem that does. If I have to learn that language I will, but I don't need to force it. |
In this environment I was forced to use a new language every few weeks... Not usually glamorous languages (say Haskell) but more commercially common (and not so common) languages.
I found that my productivity was definitely hurt by the constant need to re-learn the details of how to accomplish simple tasks, like opening a file or figuring out where they hide the urlencode function.
That can get you into maintenance programming hell pretty quick. Your manager always thinks you're too slow (although other people doing the same job are even less productive) and you don't get respect, don't get a raise, and ultimately the walls squeeze in until you need to move on.
Personally I think the things you can ~do~ with software are more interesting. I think it makes more sense to pick a language that's "good enough" and focus on getting highly proficient.