Code SnippetI go to startup events frequently, and one of the things I hear many engineers say is this: "I'm a ___ geek!" "I'm a Rails geek!" "I'm a Java geek!" "I'm just a C# kind of guy." "Me and objective-C, baby, we're like this!" Congratulations. Too bad it won't last. Ten years ago, when I started working on websites, we did it all in Java. We wrote JSP pages and Java server side code. Many of my friends were ASP-types, and others were really into ColdFusion. Today, most of my friends create websites in Ruby on Rails. We use Java sometimes, too. I don't know anyone who uses ColdFusion any more (but they're still out there!). Languages and frameworks are transitory. They come and go in a matter of just a few years. Today's hot language is tomorrow's "nobody uses that any more." There are more and more languages and frameworks showing up every day. The popular source code hosting site GitHub has repositories in 74 different languages! So don't get tied to a framework or a language. If you have a 20 year career in software engineering, you'll go through at least two or four, and probably many more, languages and frameworks. Software engineers working on cutting edge software delivery mechanisms (hint: mobile, Web, robotics) can expect to work in many more than that.

Do yourself and your career a favor: Become a polylingual geek.

Learning your first language and first framework is hard. They're the ones that teach you the most basic things about programming. Learning the second language is really hard. That's the language that teaches you the difference between common techniques and fundamentals and language-specific quirks. The third, fourth and fifth languages and frameworks get a lot easier. Keep practicing, and you'll be able to pick up new tools, new languages, and new frameworks more and more quickly, since you have an understanding of how they fundamentally work. You can say, "oh, this new language handles arrays just like (language you already know)," and you just get it. There are several different kinds of languages. Pick up one or two of each:
  • a functional language
  • an object oriented language
  • a scripting language
  • a compiled language
  • an interpreted language
Once you've embraced the constant learning and constant skills updates that come with learning new languages and frameworks, a whole new world opens up. That really cool job that happens to use a language you don't know? No big deal -- you can learn it! Are you polylingual? How do you keep up with new languages and new frameworks? Tell me by posting a comment below.