The first programming language you should learn is…

Share this

Get Our FREE Guide to Landing a Junior Developer Job

Find out EXACTLY what you need to do to land your first full-time job as a web developer.

You can unsubscribe from our mailing list at any time. We won't use your email address for anything else, promise!

One of the most confusing things when you set out to learn technical skills is figuring out WHAT to learn. And nowhere is this more true than when it comes time to pick your first programming language.

Ruby seems cool, PHP sounds useful, you’re not exactly sure what people do with Python and should you focus on Java? Or is it JavaScript?

To make matters worse, you might ask a developer friend what you should learn and either get a “Eh, it doesn’t really matter what you pick” answer or, worse yet, a long winded argument about why learning any language other than C++ is a horrible waste of your time, and you didn’t even know that C++ was an option!

Before I tell you THE ANSWER I want to set up some context: here at Skillcrush we focus exclusively on technical skills related to building websites. That means that we will tell you what to learn and how to learn it if your end goal is to work as a designer, developer, project manager, UX specialist, or in some other capacity building websites and web applications.

Got it?

And then ONE MORE caveat: your friend who said it doesn’t really matter? She was right. But that’s good news for you! But it’s also not THE ANSWER.

Here’s the thing: when it comes to learning your first programming language, your most important task is to start to understand how programming works. You need to learn: what a variable is, and an array, and method, and function, and objects and loops. You need to understand how logic works. And the amazing thing is that these core programming principles apply to all programming languages.

Got THAT?

Alright, now it’s time to tell you THE ANSWER.

Ruby vs. PHP vs. Python vs. JavaScript? (AKA which of the four most common web programming languages should you start with?)

The answer is…JavaScript!

That’s right, if you are setting out to learn your first programming language you should learn JavaScript. Let me tell you why:

Reason #1: JavaScript is easy to use and has an immediate payoff

JavaScript is the only web programming language that runs both in the frontend and the backend (more on that later), which means two very important things for you:

JavaScript comes installed on every modern web browser, so you can LITERALLY start programming in JavaScript this very second on the very browser that you are using to read this article. No muss, no fuss.

Python and Ruby are both wonderful languages to learn, but unfortunately, the process of installing either one on your machine so that you can start to learn it will make you want to tear your hair and run away screaming, never to be heard from again.

And you have nice hair.

Because you can use JavaScript on the frontend and because JavaScript runs all the fun interactive elements of websites you can start to use it immediately to sex up your website.

And who doesn’t love a sexy website?

Not THAT kind of sexy. Geez.

Reason #2: JavaScript can be used to make sites pretty and to build crazy fast servers (aka it can do A LOT of different stuff so it’s a great skill to have)

Up until about ten years ago, JavaScript was really only used on the frontend. That means that it ran in your browser and allowed developers to create interactive elements on websites like slideshows and whatnot, but it didn’t do a lot of fancy stuff.

And then AJAX came on the scene. I will let you read the tech term we wrote all about AJAX but suffice it to say that AJAX created the ability to use JavaScript in conjunction with data and made it possible to do all kinds of crazy stuff like load new stuff on a website without refreshing the page.

Think how Gmail loads your new emails or Twitter loads new tweets.

And then JavaScript started to explode.

The past few years have seen INSANE development in the JavaScript language. JSON has taken over as one of the most popular ways to transfer data. Node.js was released and allows you to build servers in JavaScript. Libraries like Mustache.js and Handlebars.js have made it possible to create awesome JavaScript templates. And frameworks like Ember.js, Angular.js, and Backbone.js are powering the creation of thousands of crazy interactive web applications and have pushed the limits of JavaScript way further than anyone thought it could go.

Seriously, JavaScript is ON FIRE.

And I haven’t even touched on how it can be used on the mobile web!

Reason #3: Tons of job growth and high pay for those who know JavaScript

What, you don’t believe me about JavaScript being on fire?? Let’s see if this will convince you:

Indeed is the biggest job listings aggregator website in the world and they have this handy tool that combs through all of the thousands of job listings and tracks trends in job keywords. In other words, what skills are HOT.

So putting aside the fact that all 10 of the fastest growing keywords are tech related, let’s talk about JavaScript.

Some facts:

JavaScript is a keyword in fully 1% of all jobs posted on Indeed

jQuery (a popular JavaScript library) is ranked #8 on the fastest growing keywords and is found in ~0.5% of jobs posted to the site

Jobs advertising for Node.js expertise have grown 80,000% over the last three years

Jobs advertising for Angular.js expertise have grown 9,000% in just the last year

Jobs advertising for Backbone.js skills start at $60,000 and go up to $140,000 !

There are currently over 54,886 jobs on Indeed advertising for JavaScript knowledge

In other words…JavaScript is where the party is AT.

So come join us!

If you are ready to try your hand at JavaScript, I want to invite you to join the next session of Skillcrush 102: Go Interactive with JavaScript, jQuery and APIs. This three week class starts on Monday, April 14th and will give you a solid foundation in all things JavaScript so you can go out and get yourself one of these 54,886 awesome open jobs and/or start making interactive websites for yourself.

If you have any questions about JavaScript or the class or what you should learn to maximize your earning and employment potential, shoot us an email at hello@skillcrush.com. We would love to give you advice!

Get Our FREE Guide to Landing a Junior Developer Job

Find out EXACTLY what you need to do to land your first full-time job as a web developer.

You can unsubscribe from our mailing list at any time. We won't use your email address for anything else, promise!

Adda Birnir

Adda is not only the CEO and founder of Skillcrush, but also an instructor. With her self-taught tech skills, she’s worked on building sites for the New York Times, ProPublica
and MTV.

37 comments

Do yourself a favor and learn how to program and do things right in a language with a proper type system, such as C#, Java, Typescript or Dart – languages that will actually teach you real programming skills and good habits.

If you learn Javascript, Ruby or Python first, you will most likely learn how to do everything wrong – which will set you back years of unlearning, fumbling around and potentially put you off from programming entirely.

The skills you learn from stronger languages are completely applicable to scripting languages like Javascript – but the nonsense you will learn by starting in one of these languages will teach you bad habits that can’t or shouldn’t be applied to languages with stronger type systems.

Great write-up. But I got lost along the way. I was happy when I read this;

“Here’s the thing: when it comes to learning your first programming language, your most important task is to start to understand how programming works. You need to learn: what a variable is, and an array, and method, and function, and objects and loops. You need to understand how logic works. And the amazing thing is that these core programming principles apply to all programming languages.”

…so I thought your answer will be based on that.

Which programming language is the best “to start to understand how programming works?”

You chose JavaScript but your reasons are different; easy to learn, make sites pretty, high payoff…

Let’s assume that the beginner is a serious beginner and wants to understand how programming works first before getting to the money and other stuff.

I ges the guides you are giving out its kind of a way helpful buh as I am beginner, it’s contradicting.
As a beginner to me the best programming language to start with,,,,,those used on client side (html, CSS and then JavaScript). Starting to learn server side language its a bit complicated.
En to b perfect on programming, b perfect with php, ruby, Java and JavaScript.
Having done well research on this and for the years I have worked as a programmer in various institutions here in Kenya.

I know about 10 different programming languages and I do agree with Adda. The web has evolved up to this point with JavaScript and npm as its primary food. You cannot go wrong learning this as your first language. However, I would stress, JavaScript has very odd behavior when compared to compiled languages so it is nice to have another companion language you learn as well. I would recommend Java, Swift or Go for compiled as these are approachable and forgiving and Go in particular is very straight forward and minimal while Java and Swift have more all the features that are popular.

After developing more than 15 years: C++, C#, Java, Python, Javascript, It depends what do you want to do with your devel life, that is:

– C++: you would like work with baremetal solutions: System Operators, hardware devices, and so on.
– C#: you would like to devel cool integrated native windows tools.
– Java: you want to devel hard enterprise web solutions.
– Python: you would like to devel system integration scripts and so on.
– Javascript: you wan’t create scalable web solutions

Hello, Nice write-up. It has an concern with your site in web browser, may follow through? Web browser even now could be the current market head and a massive part of others will abandon your current wonderful creating just for this difficulty.

Kind of missing the point, the first step should be to learn algorithms and algorithmic thinking, can then learn how to implement them in any language, I think both C (for systems programming) and Python (for applications programming) are both useful first starts. Can readily migrate to any other language from these two.

There is no doubt that knowing JavaScript is important, but I think this is the hardest language to start learning programming basics. Why? Because vanilla JavaScript comes with so many tripwires…

I.e. the way types are resolved (“undefined” is not null, typeof null === “object”); Prototype inheritance has a different perception of how attributes etc. are inherited; Variable scope and the fact that missing the “var” keyword causes the variable to be global; JavaScript is asynchronous, which in my honest opinion is the hardest thing to wrap the head around (pyramid of doom, concept of promises) and my personal favorite: People often don’t know the difference between “==” and “===” and enter the land of programming by coincidence… When I started learning programming in school, we used classic C for understanding control flow, memory management, simple sorting algorithms, recursive functions etc etc. which led us to learn OO with Java… After 2 years of programming JavaScript with Node.js, I realized that each language / platform has it’s caveats, but it’s never a bad thing to be proficient in many different environments… So, don’t worry and happy coding :-)

There are good reasons listed, but I’d say that Ruby & Python are better initial languages because they have a much easier syntax.

What keeps people from learning languages is difficulty & frequency of overcoming errors. And a complicated syntax creates more instances where syntax errors hinder progress.
Compare something like JS’s: for (var i = 0; i < cities.length; i++){}
to python's: for i in cities:

It's easy to learn the concepts with a lighter syntax, and then transition to javascript after you understand variables, arrays, loops, and functions.

I do applaud the article for emphasizing the explosive growth JS has, but I disagree with the bashing of OOP languages like Ruby and Python. Ruby is an excellent starter, and no, it doesn’t make you pull your hair out to get it installed.

The best advice I have for anyone who wants to get into programming is to ditch Windows and hop on the OS X / Linux express train. Learn to use a command-line and plain text editor (Atom or Sublime) and study HTTP thoroughly before even embarking on a language.

Proprietary.
Not open-source.
Unless you plan on developing strictly Microsoft-oriented (i.e., ASP .NET), Microsoft’s bastardized flavor of SQL, with their (sad) MS Server editions.
Linux/OS X.. stock with Perl, Ruby, etc. right in the distribution. Windows? Jump through hoops of fire to get third party installers and hope they work well. Lack of a default terminal (Command Prompt doesn’t count, have to get Putty or the likes for VPS control). And, my biggest peeve of all coming from a Tech Support role, security vulnerabilities to the heavens. Most targeted OS in the world for hackers, malware, etc.

Another thing — head to dev/tech conferences and you’ll probably see 5-10% using Windows. Rest of everybody will probably be running some debian flavor of Linux or Macbooks.

I should also probably mention that 9/10 of the resources (books, e-courses, talks, etc.) I’ve used to learn always advise Linux/OS X where possible, with little to no instruction to get started as a Windows user. And there’s always more caveats to dev’ing on Windows.

Again, no valid points. What is this 9/10 of the resources? Name them all. I have books filled up in my bookshelf that teach in Linux and Windows (unless it specifically says XXX for Linux). It’s because instructors know devs will use either. I’ve never heard of devs all using 100% Linux unless their company is an exclusive Linux environment.

So you’re implying it’s just as easy to develop, say, a Rails application Windows as it is on Linux or OS X? Zero caveats on Windows, right?

And who would want MS SQL on Linux? No valid point.

I will name them all, and highlight every point where they bash Windows. Just wait until I’m done working in my 100% Linux workshop because ownership sees no value in a proprietary, closed sourced environment. ;)

To suggest I said a ‘platform’ switch is “required” is quite ignorant. It’s a preferential suggestion, that it’s easier to work on a local OS distro that is similar to the environment you’d deploy to (I don’t know any Microsoft devs personally, anyone I know who works with a linux web server works on a local unix OS). Thanks for putting words in my mouth.

Again, it’s opinion and bias I’ve gathered over the years of personal experience and meeting people who have had all the reasons to make a switch from Windows to unix for ease and experience.

Maybe you didn’t say required, but you certainly worded it in a way which suggests it “best advice I have for anyone who wants to get into programming is to ditch Windows” – Personally I use Linux a lot and do like it and I’ve used various Macs and still prefer my iPhone over the Androids… But all your points are complete crap from an OS basher.

I’ve never heard of devs who wake up each day and decide to write their code on different OS’s. I think you and I are thinking on two different terms. As a starting developer, it was a hell of a lot easier for me to throw Windows 7 out the window when I launched my first VPS running Ubuntu 12.04 and decided to install Ubuntu Desktop 12.04. I learned more sysadmin by working in the OS I deployed web-apps onto. Ever try to chown or chmod on Command Prompt? Lol

You make no valid points for ditching Windows. You can install MySQL on Windows, can you install MS SQL on Linux? You can install Python, Apache, and Perl in Windows just fine. And why doesn’t command prompt count for terminal? You can telnet and ssh just as well. You’re making Linux administrators look bad by bashing Windows.

Herwin it really just depends on your goals and the type of work you want. If you grew up and learned on Windows, it doesn’t hurt to expand your horizons and learn popular Linux distributions like CentOS or Ubuntu. Like I’ve been saying, speaking a lot of bias and personal experience. Whatever direction you head in, figure out what most of the community uses and go with the flow. It helped on my resume to mention experience in different OS distro’s, because it means flexibility, adaptation, and not afraid to try new things. I feel those are a couple things important for any employer in any profession.

Yeah, agreed that flexibility, adaptation, and willingness to try new things is a plus for employment. I’m currently in Finance, and playing around with coding for exactly what you cited; I like trying new things. I believe coding will be an important skill in the future. Even if I don’t end up a programmer, still good to have some background in it.

I completely disagree with you. Sorry to tell you but I suspect the majority of companies in the country are running on a Microsoft platform (in whole or in part) and are running MS products – and their developers are most likely using a combination of languages which includes some open source as well – not strictly. Also, to suggest the MS SQL platform is sad is , well I am not sure what it is… retarded?? Have you used it in a large business environment even? I have used Oracle, MS SQL, Dec Rdb, IMS, DB2… the list goes on… MS SQL is a great product and scales nicely… I would take it over any of those other ones all day every day… I am not convinced you know what you are talking about…

Good, but JavaScript (not counting Node.js) is only a client-side language. Sooner than later the programmer has to “graduate” to PHP, Ruby or Python for server-side scripting. That aside, why I’d suggest learning JavaScript is because it is the only option for the Web.

Agreed! And you can also use JS and HTML5 to create mobile apps for both iOS and Android using things like CocoonJS or Phone Gap build, etc. The only problem I think is that you have to know some html and some css.