What language should I learn first?

This is a question I keep seeing here, people seem to be very confused about it or want to find the easiest path.

Here’s the truth: there’s no guarantee this journey will be easy for you unless you have a very high IQ, in which case you probably don’t need to be here. It certainly hasn’t been easy for me. If you’re looking for something easy to do, look elsewhere because this is definitively not it. Also, don’t confuse this with the impossible. The point is not to discourage you but to give you an honest view.

You will hear a lot of people telling you what language to do first, but that is their opinion. Just because it worked for them doesn’t mean it’s going to work for you.

Everybody hates this, but I’m going to answer your question with another question. What is your end goal?

If your end goal is to get a job in programming and make a lot of money, your best bet is to look at the most common languages. The good news is, someone already did the homework for you.

Pick the most common language, it will maximize your chances of getting a job. However, the market is very competitive so you’ll have to stand out. If you’re still looking for the easy way out, then pick the least popular language and you’ll have less competition.

Have a different goal in mind? Here’s a little summary of what language is good for what, mind you this is not all there is to it but it’s basic enough.

  • Front-end web development: JavaScript, TypeScript
  • Back-end web development: JavaScript, Java, Python, PHP, Ruby
  • Mobile development: Swift, Java, C#
  • Game development: C++, C#
  • Desktop applications: Java, C++, Python
  • Systems programming: C, Rust

If your goal is to integrate with embedded devices, then you’re looking at C++ or Assembly. If you think the Codecademy courses are hard, Assembly is going to make you cry. Yes, it’s hard. No, it’s not impossible.

Can’t settle on a goal? Then the answer is easy. It doesn’t matter.

Why doesn’t it matter? Because what you need is first-hand experience. If you can’t make up your mind, pick one at random. You’ll gain some experience and eventually will come up with a goal.

19 Likes

I would say that TypeScript works much better on the back-end than the front-end.
Type checking provides minimal real value on the front-end, but a lot of value on the backend.

Also, thanks to React Native, JavaScript is a totally viable way to do Mobile Development. And Electron has done a great job of making JavaScript a good option for desktop development.

1 Like

Oh jeez. What happened to HTML and CSS as front-end? :woozy_face:

1 Like

Not much changed in that regard, html & css still exists and are still used

but making a dynamic web application requires a lot more then just html & css. We can even make hybrid mobile apps with Javascript (+libraries), html and css.

1 Like

HTML is not Touring Complete, therefore, not technically a language. It is still a must-know for front-end development though.

CSS3 is Touring Complete, but it’s also something you should know as a front-end developer. I haven’t seen any position where the only thing you do is CSS, it should be another tool in your toolbox.

Valid points, updating the post.

EDIT

Hmmm, for some reason it won’t let me edit the original post. But your comments is registered

1 Like

The first language I learned was Python, that really helped me get a basic understanding of programming.

1 Like

I thoroughly disagree. I visited this site for the first time when I was in school to learn some more about programming on the side. I am now doing my Bachelor in CS. The entire notion that you need to be a genius to learn how to code is ridiculous. I have taught in Coder Dojos and I never saw a kid that had a “too low IQ to learn how to program”.

Finally, on the choice of programming language, it is rather easy:
Choose a language that enables you to build stuff you are passionate about not a language that you think will help you in a few years.
-Why?
Because there is no better way to learn the ins and outs of a language then thru actually using it in projects. And doing projects you are passionate about will make the hours you put in a lot more bearable than when doing stuff you are not passionate about.

I only disagree with one thing “you need a high IQ”. Not trie

I’m afraid you read that wrong. I’m not saying you need to have a high IQ to learn how to code, I’m saying this won’t be easy unless you have a high IQ.

If you have a high IQ then learning languages will be easy. Therefore, you don’t really need to be part of this community. The point is that much like anything else out there, this is not an easy journey, you need to work hard at it as long as you stay in this field. People think they can get a job as a coder after taking one of the courses here, what I try to make clear is that that is not true.

The answer to the question is in fact not as easy as you think, I wrote this post because I constantly see people asking the very same question. What you say is true, you need to pick a language that helps you build something you’re passionate about. What is not true is the common knowledge of what language is best suited for what, which is the purpose of the post.