Monday, November 26, 2007

Building a Team of Polyglots

There are two classes of developers: those who know one language, and those who know more than one language.

But why? Why would you need to know more than one language when C++/Java/C#/PHP/Perl/Ruby can do it all?!

Except it can't. Not well.

There is a lot of value in learning a language and becoming an effective developer in that language. This is what college CS programs are for. There is even more value in learning a second language. Until you learn a second language, you don't know what is programming and what is your language.

All languages are different (yes, yes, some are more different than others), but the underlying development principles are the same regardless of language. The more languages you learn, the more you'll be able to determine what is a feature or constraint of your language and what is a feature or constraint of programming itself.

So yes, C++/Java/C#/PHP/Perl/Ruby may be perfectly fine for what you're doing. If you really want to understand your profession, though, turn away from that language you know and learn a second, and a third. In the end, it will help all the languages you know.

Disclaimer: Thanks for the idea for this entry goes to the New York Times article on child polyglots (free login required). The parallels between a young child learning multiple languages and a young (well, relatively) developer learning multiple languages are quite apt.

No comments:

Post a Comment