I got the news today that I've been voted Microsoft C# MVP for the second year in a row. This may come as a surprise to people who only know me through my speaking at Java conferences, or think of me as a Ruby militant. But at heart, I'm a language geek. I love computer languages (it was after all my specialization in college) and I try not to get too religious about technology (to varying degrees of success because I also tend to get excited about technology). At my core, though, I'm a language switch hitter. I think it's important in this day and age of polyglot programming to understand a variety of different languages, as they are the design tools we use to craft software. Just like regular engineers must understand the physical properties of different materials, we should understand the capabilities, strengths, and weaknesses of different languages. And when to apply them.
Being a consultant affords me lots of opportunities to use different languages for different projects. The next project I move too is likely going to be a C# project. My last few have been (in order) Java, Ruby on Rails x 3, .NET x 2, and Java. I firmly believe that you should be versed in lots of languages because knowing multiple languages also exposes you to different idioms. I think that the classic K&R book ( The C Programming Language by Brian W. Kernighan and Dennis M. Ritchie) was as much about the idioms of C programming as the language itself. And, of course, the Pragmatic Programmer admonishes developers to learn a new language every year. Dave Thomas has been very publicly learning Erlang over the last year or so (and taking lots of people with him). So, since it's new year's resolution time, what new language are you going to learn this year?