I’ve grown up speaking multiple languages, like most Indians1. My childhood was defined by clear-cut language separations: Gujarati for home, Hindi when talking with friends, English (and to a smaller extent, Marathi) at school.
Each language ended up occupying a certain part of my brain. To this day, I can’t think of anything scientific or computing related in any language other than English: I just don’t know the right words. Conversely, talking about some topics in English just doesn’t feel right. Oh, and don’t even get me started about different styles of the same language2.
I have a lot of fun with language: conversations with my sister, for example, often ends up with us switching languages often in between sentences.
Keep this in mind when I say that the best advice for a novice programmer is to learn as many programming languages as possible.
In random order3, here are some of the languages I’ve learned (and at times, used):
- ActionScript 3.0
- Common Lisp
For most of these languages, I can be considered to be a tourist: someone who has read a basic travel guide and knows a few phrases in order to get around. For others, I could be an academic: someone who studies the language, but never uses it in real life. I’m only fluent in a few of these. I do not consider myself to be a master of any of them.
Still, knowing multiple languages has had a tremendous impact on my career as a programmer; I always end up using a concept learned with one language elsewhere.
It opens up your mind to the possibility of alternate ways to do things. You write better code. More importantly, you begin to understand the value of writing simple code. Understanding different patterns of behaviour in different languages leads you to being able to think out of the box, so to speak.
From a more pragmatic point of view, knowing multiple languages is good for your paycheck. The computer industry moves at a very fast pace. If you are just a one-trick pony, well, you aren’t going to hire-able for long. Sure, there’s still a market for COBOL programmers who work on mainframes, but it’s pretty small.
There are a few drawbacks to being a polyglot programmer: you are always learning, and never quite feel like an ‘expert’ at anything. You may give-in to the temptation of over-thinking and over-complicating things while coding. And, you may not be able to ‘market’ yourself for a job, you may not pass the keyword screening tests of the HR department in large organizations.
The Indian IT industry is at times a strange place4. People willing pigeon-hole themselves, saying ”I am a X Programmer“ (replace X with Java/.NET/PHP/etc). Very few of us actually enjoy programming, and most don’t want to learn anything new. I’ve only met a few people who’ve learned languages because they want to; a sad fact that depresses me at times.
But if you do end-up being a language nut like me, the benefits will far out-weight the costs. You just need to actually care about what you do, the rest comes easy.
It seems to me being proud about being bilingual is a profoundly American trait. ↩
Delhi-Hindi, for example, is very different from Mumbai-Hindi. ↩
Seriously, I couldn’t figure out in which order to put things, so I ended up randomizing the list! ↩
Of course, I don’t know how the industry is out-of-India, as I’ve only worked here.