I can't get focused today. My mind is a torrent of activity completely unrelated to my task at hand, so I am writing this to get these thoughts out so I can get back to work.
I got a call from a recruiter the other day trying to get me to come interview at this job. Right now I am working in VB.NET and Actionscript. Until this job, I was always working in open-source languages: Perl, PHP, and some Java. This is my first real divergence from that pattern, and of course it is in two languages that are, to say the least, not very popular with the open source crowd. This gets me wondering, "what if when I decide to move on, all the fun jobs look down their noses at me for working in unpopular languages?". To be fair, I still program quite a bit outside work in my favorite languages, and that is all well and good.For some reason though, that recruiter really got under my skin. I keep asking myself questions like, "is spending time right now making a Java game for the Android a good choice long term?" or, "should I spend any more time learning Python with Django, or just get more invested in Javascript and node.js?". These are not questions I want to be asking myself. So, I sit down to think about it and get it out of my system. What kind of programmer do I want to be in 5 years? I know without a moment's hesitation. I want to be the kind of programmer who is not tied to any one language or platform, but is instantly effective and rapidly excellent in every language and platform. Right now, I am learning Common Lisp. Why? To learn better functional programming. Why do I play with Javascript? To be better at client-side web programming. PHP/Python? Server-side web programming. *.NET? Compiled, versioned programming. Android games? For fun! Why do I all this? Because the programmer I want to be is not constrained to his language/platform at all. The programmer I want to be programs at a level over the language.