This question originally appeared on Quora: What are the best programming languages to learn today? Answer by Avi Flombaum, co-founder and dean at Flatiron School.


This question originally appeared on Quora: What are the best programming languages to learn today? Answer by Avi Flombaum, co-founder and dean at Flatiron School.
What programming language you learn depends entirely on who you are and what your goal is. I’m going to assume you’re an informed beginner, meaning you haven’t been writing code professionally and are just looking to pick up a new language, but you also are not in the situation where you’ve never tried it before—maybe you’ve messed around with some online tutorials, and are thinking about taking it more seriously.
So for you, informed beginner, the first thing you need to think about is what’s motivating you. Are you looking to get a job? Build an app? Pick up a hobby? Picking what and how you learn based on your end goal should be the single most important factor in your decision making—not the market, not what’s trendy, and not what a random person tells you is best to start with. The reason for that is simple: learning to code is really, really hard. It will require you to think in brand new ways and deal with tremendous amounts of frustration and self-doubt. If you’re motivated to learn because you want to build an iOS app, start with Swift/Objective-C. If you’re dying to build an Android app, learn Java and Android. If you want to make visualizations on the web, start with Javascript and then the D3.JS framework. While none of these might be the objective “best first language,” the single most important thing you can do is be motivated, and if you have a personal connection to some goal or idea, focus on that—the benefit will outweigh anything else.
I know all that sounds a little hokey, but I truly think that my biggest responsibility as an educator is to inspire students to fall in love with code. Hence the Flatiron School homepage (“Learn Love Code”) and the giant quote on the wall on campus:
Now that that’s out of the way, let’s look at some specific options.
Assuming you’re not necessarily interested in system programming (like building an operating system), you’ll first want to figure out if you’re interested in the front-end or back-end.
On the front-end side, your choices are pretty clear: HTML, CSS, and Javascript. Once you have a handle on those, you’ll want to start messing around with some front-end frameworks like Ember, Angular, etc…
Regarding back-end languages, you have a few primary choices.
Finally, it’s incredibly readable. This is how one would write a simple “Hello World” program in Java:
This is “Hello World” in Ruby:
While eventually it’s important to learn what is “abstracted away” in Ruby, as a beginner, this language allows you to focus on the logic rather than the syntax.
One question people ask me a lot is whether they should just learn full-stack Javascript (which means learning Node.js instead of a server-side language like Ruby/Python/Java).
Javascript is a necessary language for anyone looking to develop for the web. But it was not designed to build complex, scalable web applications. So when people talk about the rise of JS, I think it’s important to separate its use in front-end vs back-end.
Whatever kind of developer you want to be, if you’re working with the web, you’re using Javascript on the front-end. For the back-end though, server-side languages like Ruby/Python/Java (and there are more) are still more robust, stable, and popular than Node.js. I’m excited about Node’s potential, especially since it’s growing so fast, but it’s still a small piece of the pie. So for now, I think it’s critical that anyone that wants to be a back-end or full-stack developer gain a strong foundation in a server-side language.
At Flatiron School, we teach both full-stack Ruby and full-stack Javascript (here’s a syllabus you can download). While a portion of our students are excited about getting jobs as front-end developers, and just focusing on Javascript for them would suffice, the majority of our students come to learn the full-stack. For that, gaining a strong foundation in programming concepts through Ruby before moving on to web frameworks like Rails; and then again a strong foundation in JS before moving on to things like Node or front-end frameworks like Angular; is the best way to prepare students successfully for the future.
Ultimately, though, the first language will be the hardest. It’s like learning to play guitar for the first time. You have to train your brain to work in an entirely new way. After that, picking up another instrument is relatively trivial. So focus on whatever’s going to get you fired up and keep you motivated and you’ll do great.
More from Quora:
Join 500,000+ readers who start their day with Quartz.
By subscribing, you agree to our Terms of Service and Privacy Policy.