How Many Languages Are Too Many?

In the past week, I’ve programmed for at least an hour in: - Ruby (with and without Rails) - Javascript - Python - C++ - Embedded C - Java - Non-trivial Makefiles - HTML and CSS (if we want to count them)

If we went back a month, we could add C# to that list, as well as the go language, and the ever so strange awk. If I was pressed to write down on a resume all of the languages that I have programmed in, it would probably take up at least a quarter of a page, especially if they wanted me to list the frameworks that I’ve used in each of them.

Lately I’ve been counting about how many languages I use on a regular basis, because it seems like I am a programmer that seems to jump from language to language, using whatever is most convenient at the time. If I want to make something, I just choose the tool out of the toolbox that seems reasonable to get the job done, and start hacking away. I’ll pick up Python, Ruby or Perl randomly when I want to get a more-complex-than-a-shell-script thing done.

I don’t know why I have this outlook on my language selection, and I was blissfully unaware that it was somewhat bizarre until recently, when I’ve been noticing more that people seem to focus their programming attention on one or two languages, and don’t really delve deep into any others. People will stay in a single job coding .NET applications for years at a time, and not look at any other language. That seems quite bizarre for me.

I’ve been wondering what this means for me as a professional developer. The resume question specifically is interesting to me. As someone who can legitimately name a product that I’ve shipped in so many languages, does it make me look better or worse for me to put all of them onto my skills list? Will they assume that I’m just padding the list with languages that I’ve only tinkered in? Of course, this is all just a curiosity because I’m quite happy in the career that I’ve chosen now, but it’s still something I think about.

I’m also thinking about whether I have been going about it all wrong - would I be better off as a developer if I had a single-language focus? Could I finish more projects if I did so? Maybe I should try to pick one or two of the languages and then convert everything to those, and I will actually be more productive. It’s hard to judge these things because I’ve always been the person who is interested not only in being familiar with a language, but building a decent size project in each one. For example, I’ve been thinking of building a side project in node.js, not because I have a pressing need to learn a JavaScript-based event-driven framework, but just because it looks interesting.

It seems like most of the developers that I know that are into as many languages also have an interest in compilers - but I’m not that interested in them myself. Parsers of course are part and parcel of any programmer’s toolbox, if only because sometimes a domain-specific language is what will be the most powerful and useful, but I have never been interested in taking things down to the machine level myself.

I know that there are other people with at least a curiosity into other languages like I have, because there is a Twin Cities Languages User Group that I’ve attended a couple of times. It’s been a while since I’ve been back at that group, and my life is a little too busy to attend again. It was a short look at a bunch of different languages, which was pretty great.

I’m not sure that I’ll ever stop learning the new languages and frameworks of the times. I consider it a good thing on the whole because I am flexible to do things like start programming an Android app, or pick up Objective C in order to hack away at a iOS app. Whatever next new language is coming around the corner, you can probably bet that I’ll be programming something in it eventually.