Thursday, November 17, 2005

The Need for Multilinguality

I grew up in a multicultural and multilingual environment. This has both pros and cons but from what I have seen in the computer science field, I think it has more pros than cons. The general tone that I have seen with technologists, programmers, and computer scientists in the past few years is to become proficient in multiple languages. What I mean by proficient is not to just know or be exposed to a language but to be fluent in it.

In the "Ruby the Rival" article, there are several comments about learning a new language or technology every year. I have always subscribed to this idea however, it has only been more recently that I have seen it being pushed in the mainstream by the writers and leaders in the information technology field.

I think there is a distinct advantage to being fluent in multiple programming languages, paradigms, and techniques. Knowing how to do client/server programming, web development, GUI development, low-level I/O, scripting, and networking and communications programming are all skills that competent developers all know how to do. Constantly learning new languages, skills, and technologies is another trait that keeps your skills relevant and current. Another advantage is that when you step outside of the box of one language you start to see patterns of differences or similarities between them. This helps you understand both languages better. It even provides insights into the mechanics and techniques of the languages.

Looking at the emerging relationship between Java and Ruby is a good example. There are many heavy weight Java technologists that are leaning towards Ruby on Rails. The reasons do not appear to be to replace Java but to complement it with a different paradigm and technology. Ruby on Rails is primarily a web development technology. Java covers everything but the kitchen sink. (web development, GUI, client/server, networking, communications, etc.) Ruby may even drive innovation within Java technology that would otherwise not be possible if you stay inside the Java sandbox.

Learning a new language or technology a year or every few years is something that I would recommend to anyone who is in the computer science or software engineering field today. You may not use the new language for anything outside of research and experimental programming but it is a good habit to have. I think it has many advantages for which I cannot even explain based on my life experirence of being raised in a multilingual family.

1 comment:

^-^,-,~ Inu said...

Hmm comment spam above... Anyway what pv forgets to mention is that the developers who can program well in more than one language are not the jack of all trades masters of none. Quite the opposite. These multi-lingual developers tend to be better problem solvers. PV also neglects to mention he is one of those 25-to-1 types. Yes he can produce 25 times the quality code (debugged, meets the user requirements) versus your average developer. He's a rare bird.