Here’s the thing: You don’t really have a choice.
The likelihood that you’ll be developing software in a single language these days is slim. Isomorphic web applications – where the same code that runs on the server runs on the client – now exist. But that’s not the norm.
In the majority of cases, your backend language will be different from your frontend. If you’ve written an Android App in Java, for example, it’s likely you’ll be asked to create the iPhone version in Swift.
The question, then becomes, “When are you going to learn another programming language?”
You’ll know when you’ve gotten a handle on your first programming language. You’ll knock a method out and it will, much to your surprise, work on the first try. You’ll be able to read blog posts and not get hung up on the terminology. You’ll attend meetups and will be able to understand more than half of what the speakers are talking about. You’re ready for version 2.0.
Scared? Don’t be. It’s a lot easier the second time.
If your primary language is a procedural language (i.e. JavaScript, Java, C#, Python, Swift, etc.), you’ll already have almost all the bases covered such as variables, conditionals, and looping. If you’re coming from a declarative or functional language (i.e. R, Haskell, Lisp) you’ll find parallels *finally* showing up all over the place.
Most importantly, you’ll have the ability to mentally map the lessons from your first language directly onto your new language.
Know this: You’ll stumble very hard at first over the new syntax of the language and get some well-earned bruises. But if you hold tight, you’ll end up learning things about your original language that you missed the first time through. When you then go back to documentation – which usually isn’t very beginner friendly – you’ll now find that everything will make more sense because you’re growing as a software developer.
This is going to make you feel real good. Hold onto to that feeling. Use it to keep exploring.
The Choice is Yours
After you accepted the fact that you’ll be adding another language, the next question naturally is, “Which language should I choose?”
First allow me to back it up for a bit: You might be wondering why so many languages exist if they’re doing the same thing.
Chances are, they didn’t start out looking the same. While they’re usually based on another language – similar to how our spoken languages fall into broader categories like Germanic or Romance – most programming languages are created for a specific reason.
They evolve by reviewing other languages and picking and choosing the parts they like. We used to emphatically say JavaScript is not Java. Now TypeScript is basically Java. Meaning, the syntax is different-ish, but the overarching concepts are starting to look more and more alike.
So, how to choose?
It helps if you have a target in mind. Learn the must-have requirements of your employer, for example. Job listings are usually pretty clear about what you need and what’s nice to have. Focus on the needs first; don’t be distracted by the shiny objects.
Look also at the different language options at the high level, and try and figure out their origin story. It will help you understand how and why features are implemented. Similarly, pay close attention to the marketing surrounding the language. Do you like their community? What features are they proud of? Do you want to branch out into Web apps or Mobile apps?
Try to approach syntactical differences with an open mind. Most of the time the decisions were deliberate and by understanding why the language behaves as it does, you’ll understand better how to use it to its intended purpose.
Lastly, I highly recommend browsing popular Open Source projects and blog posts to see the code in action.
Once you gain the ability to quickly learn programming languages, more opportunities will open up for you. Your job search just went from “<INSERT YOUR LANGUAGE HERE> developer” to simply “developer.” And once you pick up your second language, you’ll be rapidly onto your tenth before you know it. It’s addicting like that.
thanks for sharing Not to be confused with Java, JavaScript is a primarily client-side scripting language used for front-end development. JavaScript is compatible across all browsers and is used to create interactive web apps, often through libraries such as jQuery and front-end frameworks such as AngularJS, Ember.js, React, and more.
If you are inspired by this post to learn a second programming language, you might try an adviser tool – http://dobegin.com/second-programming-language/ – which gives a recommendation based on the first language you know and some reasonable assumptions.
Interesting point that “TypeScript is Java”, any links to read more about that?
Totally agree with blog post heading, this does learning 4 – 5 programming language is a must in order to be best in the competitive world.
Yup, knowing 1 or 2 languages isn’t enough these days. Most job descriptions I’ve seen require JavaScript (AngularJS, React, Node.js) PLUS another skill (PHP, .Net or Java).
Can someone tell what is the difference between software developer and software engineer.
Is it same or not?
OK This article here… just helped me to emphatically push my mind to learning more than 1 at a time too. I have been trying but with this, I KNOW I am doing the right thing. Staying in 1 realm does not cut it any longer. Tech is growing and I must move along with it!
Thanks !
First, yes, you really really should and will learn more languages. If you only know client-side languages, you’ll want to learn a server-side language, if you only know a scripting language, utilize object-oriented principles, or better yet, learn an object-oriented language.
For most of use, learning is a love/hate relationship; we love to learn, but it takes a lot of time and effort which may not pay off as directly as you might like. My advise, focus your learning on a language you want to learn or enjoy learning. Otherwise the learning become more of an obstacle than an opportunity. Whatever you choose, make sure to actually make the choice. You should be at least playing around with a other languages about every 8 months.
Great post. I’ve been using PHP for the past few years, then picked up JavaScript, and am now learning Ruby. I hope that with another language i’ll be able to better capitalize on different opportunities and increase my value. Thanks again.