I love the idea that more and more people are wanting to learn how to “code”. However, there are so many starting points nowadays that it can be pretty overwhelming. What language? Web development? Front-end development? Back-end development? SO MANY OPTIONS!!!

Don’t worry… I have everything figured out for you. Trust me… 😉

All jokes aside though, if you would have asked me the question of “I want to learn how to program, what language should I learn first?” a few years back I would have easily said, Ruby. Why? Cuz… it’s my favorite language that’s why! If you were to ask me that question today I would say JavaScript.

Why JavaScript?

I get why some people may be cringing pretty hard at this suggestion but hear me out. JavaScript gives you the ability to create applications for the web, desktop, and mobile, all while being cross-platform. Let’s look at how you can apply knowledge learned from one niche within development and apply it to others.

Front-end Web Development

This is basically where everything got started. JavaScript on the client side (web browser) was pretty much the end all be all.

As a front-end developer, your skillset mainly revolved around 3 technologies. HTML, CSS, and JavaScript. JavaScript is used to make your web page and/or web app a little more interactive. If done right it can help make your app feel a bit more responsive as well.

When you develop for the front-end you’ll quickly find that you’ll have a mess on your hands and that you’re more than likely reinventing the wheel in a lot of ways. That’s where a framework can help out.

Another benefit of learning a framework for the front-end is that the patterns and the way you’ll work within their guidelines will stay the same no matter if you’re working on a front-end application, back-end application, mobile application or desktop application.

As I write this there are a few popular options and those are React, Vue.js, and AngularJS. If you’re new to JavaScript and want to do some cool stuff on the front-end my vote would be to try React first. There is plenty of documentation and will transfer to mobile as we’ll learn later.

Back-end Web Development

Writing code on the back-end allows you to “bring to life” things on the front-end. What I mean by that is, if you’re not making a static website then chances are you will need to pull and manipulate data before serving it up to a front-end application.

Although, JavaScript started out as a client-side scripting language the team over at Node.js has brought it over to server-side for us. If you’re curious about what’s under the hood Node’s site has a bunch of documentation on how this works. Check it out: https://nodejs.org/en/.

With Node.js we can take a lot of our knowledge about JavaScript from the front-end and apply it to the back-end. We can work with frameworks such as Express, Hapi, and Koa to help us write API’s to work with our front-end application or other apps.

Desktop Applications

Now that you’ve spent time learning about front-end and back-end development you can then take that knowledge and apply the vast majority of it over to desktop applications.

How? Using something like Electron.

With Electron you can even take one of the frameworks from the front-end and use it to assist you in creating your desktop application. One of my favorites is using Vue.js and the electron-vue boilerplate. The boilerplate has some generators built in that makes setting up an Electron app with Vue.js very easy. I highly recommend it!

You may say to yourself don’t I need to know about how desktop applications are made? I would say it doesn’t hurt to learn the ins and outs, especially when you’re deciding if something like Electron will cover everything you want to do with your application, but it isn’t required. Oftentimes you’ll find yourself working with API’s (like you can create with Node.js) and web servers will take care of most of the heavy lifting.

Since you’re using Electron you have the ability to make your application cross-platform. That means with one code base and some tweaks here and there you can release your application to users who are on Windows, Mac OS, and/or Linux! I don’t know about you but, that’s pretty cool to me…

Mobile Applications

Building upon your knowledge of front-end frameworks and the idea of building cross-platform desktop applications it may come to no surprise to you that you can make mobile applications with JavaScript as well.

One of the biggest players in this space is React Native. React Native also allows you to build cross-platform mobile applications as well. With one code base, you can create iOS and Android applications. Just like Electron, you’ll more than likely utilize web API’s and have a hosted remote server take care of the heavy lifting for you.

React and React Native will have some overlap, but they are not entirely the same. React is primarily used for front-end web applications and React Native is what you’ll use when developing for mobile.

So, where/how do you actually get started?

Start small and use the internet. No need to join a boot camp or go back to school. Everything you could possibly want to learn is here… online. I’ll link a few resources that I like to use below.

https://developer.mozilla.org/en-US/docs/Learn/JavaScript

https://nodeschool.io/

https://www.udemy.com/courses/search/?src=ukw&q=javascript

Udemy courses are always on sale. I honestly don’t know how anyone makes money on there. That’s beside the fact, but you might as well take advantage of their “sale” that is always happening.

Developers what did I miss? Maybe someone has an opposing view as to why JavaScript is a bad place to start. I’d love to hear that too. Let’s chat in the responses below.