I’m walking down the halls of my school’s campus, and I bump into a fellow student. He’s trying to get into the world of programming, and we spark up a conservation.
During the conversation, this guy tells me, “I didn’t know where to start, so I learnt a little bit of Java. Then I moved on to HTML, and I think now I’ll try some Ruby. Just wanna have a strong base in everything first.”
At this point, I’m not too surprised. I see a few beginners make this mistake from time to time, so I tell him my generic advice:
Stick to one language first.
When you’re learning programming, you’re learning how to think in a completely different way. It takes practice and time, and at that stage, the particulars of different languages can be darn-right confusing and unnecessary.
If you’re new to the world of programming (it’s a great world by the way, so stick around), you’re better off settling with one language first and getting comfortable with the standard programming concepts.
Once you’re at a good enough level (a level where you can perhaps make a moderately complex text-based application like a time controlled trivia application or a poker game), then you can feel free to branch off and learn a new language.
Moving on to other languages
I mean, what’s the point in going through all the hassle to to learn a new language if your not even sure you’re going to use it in the future or not?
I’m pretty sure I’m not the only one who thought this. But, after a few hours on Quora, I figured out that that that isn’t necessarily the case.
We should never forget that the programming world is a world that encourages constant learning. We’ll never stop learning when we’re a professional software engineers; there’s simply too much stuff to know. And so, there’s no real disadvantage to learning multiple languages just because you’re interested in them or you you feel like you might use them in the future. Actually, there are some advantages.
Strengths and Weaknesses
Like anything, each programming language has its strengths and weaknesses. Python is known for getting stuff done nice and fast, but anylisng Python code can be a bit confusing. Java is known for being meticulously specific with its syntax (which can be helpful sometimes), but can be easier to analyse and debug. Each language has specific characteristics like these (there are more advanced and technical ones too).
Learning multiple languages can help you understand and appreciate the strengths and weaknesses of different languages, and hence help you utilise the strengths of languages more. This is especially true when you learn the more technical characteristics of each language. Those nuances can make huge differences in how a language can and should be used.
Also, and arguably more importantly, learning mew languages teaches you new computer and programming concepts, expanding your mind and making you a more well rounded programmer
Variety is the spice of life
When you do add new languages to your portfolio, you should be aware of the value of variety. If you already know Java pretty well, I’m not so sure learning C# next will be of much help.Learning Python if you already know and love Ruby might not be the best idea either. Those languages don’t vary all too much, so you’ll end up wasting time learning a language that doesn’t really teach you much or add much value to you.
There’s no fun in that, now is there?
Unless there’s a specific reason you need to learn a specific language (maybe you want to use a language-specific game engine or complete a language-specific project), you should probably learn a variety of languages. Try learning an Object Oriented Language, throw in a Web language, play with SQL and things like that.
Just make sure not to learn too many – each language you learn should be learnt well and not just superficially.
Dig a little Deeper
Like I said, each language should be learnt well. Since each language has been built for a specific reason (like how PHP is for server-side operations and Rust is… actually just better version of C++) and every language has its strengths and weaknesses, each language also has its conventions.
Those conventions are important, and to be strong in a language you gotta be comfortable with those conventions and use them properly. This is called idiomatic programming, and is one of the things used to separate excellent programmers from just plain old normal programmers.
If you don’t take care to program idiomatically, you may end up programming with an accent. This is when you program in one language using the conventions and habits of another language. Similar to how its weird to hear some people speak English in foreign accents, programming with an accent can be…awkward. It’s generally looked down upon by the programming community, and leads to inefficient code.
This is why you shouldn’t learn too many languages unless you’re positive you can handle them all. Learning conventions and learning simple syntax are too completely different things. You could pick up a Russian dictionary any day and learn a few words, but that doesn’t mean you can speak Russian.
Learning to program idiomatically takes time to learn and maintain, so keep that in mind.
Just to finish up
Well then! I hope you can take something away from this post.
Don’t be make the same mistake I did and think that you have to have a project in mind before you learn a new language. As long as you think that this language will be fun to learn, that it adds a little variety to your knowledge and that you’ll learn something new, go for it. You have no idea where that language could take you. Trying out Java surely took me far.
Just be sure not to learn new languages superficially – avoid accents when you’re programming. This programming world of ours is pretty particular about idioms and accents. Don’t come along and crash their party.
Credits: ahenon, crazywebsite, Tartan Marketing, the great people of Quora