Today I saw this well-written post by
I expected to disagree with Gustav because I have written production-quality software in many languages, including Ruby, Python, Perl, C, C++, C#, Java, and Erlang. I’m currently learning Haskell in my spare time (and I’m loving it). I think that my efforts in all of these languages has kept me nimble. I’ve met a lot of one trick ponies who I think would benefit from the change in perspective that a new language brings.
Instead, I think Gustav makes several valid points. In fact, in a subsequent prefix to his post, he writes that in the past seven years he’s added two languages to his core set, and dropped one; so he’s had fairly decent turnover. He hasn’t been a Java horse for the past 10 years.
Even so, I would like to make a few quick points:
- The real challenge is finding an efficient and productive way to keep learning and to stay in an innovative frame of mind. If you fall into the trap of punching the clock every day without staying aware of new approaches and techniques, then you’ll quickly fall behind.
- Just as with exercise routines or diets, motivating forces are highly personal. I happen to think that I learn new languages rather quickly, so my learning curve is relatively flat. I also get a lot of pleasure and inspiration when I work in a new language, which carries over to concurrent projects in my old languages. Those benefits are personal though — I can’t speak for others.
- Even a developer who prefers to maintain a small proficiency set should also have a willingness to tackle new projects in a new language. I never let a language get in the way of cooperation. I’m certainly quick to object to uncommented code or poorly organized components, but I ultimately do not care what language is picked. I have seen far too many people who immediately jump to the question of “what language will we use?” when the better question is “how should we solve this problem?”