There’s never been a better time to be a programmer.

Technology isn’t slowing down. Neither will the demand for innovative solutions to solve new challenges or take advantage of new opportunities. The key differentiation in the marketplace is often the one with the better technology. And companies are willing to pay big bucks for it.

Not only are there new challenges and opportunities, but there are also better systems today to support programmers. Languages, code editors, libraries, automation tools, platforms, and services are all continuing to evolve and improve.

I have to admit I am a little jealous of people who are getting into programming today. Sure, there will be challenges and frustrations, but newcomers to programming may never know the struggles and pain some of us have endured a decade ago. Or, just a few years ago.

Oh, and learning? You can choose from books, blogs, social media, real-time chat, on-demand video training, free meetups, and insanely inexpensive conferences. It’s almost criminal more people don’t take advantage of the learning opportunities available!

There’s never been a better time to become a programmer.

Why am I a Programmer?

I’ve been a software developer for more than 20 years. Here’s the short list of why I love programming and will continue doing it:

I love learning. There’s never a shortage of new technologies to learn or ways to improve my skills.

There’s never a shortage of new technologies to learn or ways to improve my skills. I love challenges. There are always new problems to solve.

There are always new problems to solve. I love getting creative. There are infinite ways to compose software and solve problems.

There are infinite ways to compose software and solve problems. I love sharing. There are numerous ways to get involved in the developer community to benefit others, and yourself in the process.

Why Learn JavaScript?

Today, JavaScript is not just popular, it is universal. JavaScript is a strategically important skill. You can use JavaScript to build web applications, mobile apps, desktop apps, command-line utilities, and control IoT devices. You can build “serverless” functions. It’s the scripting language of choice for countless applications. Even Microsoft Excel has a new JavaScript API!

BONUS: Watch Jeff Atwood’s keynote from Iterate 2018 on the human side of being a programmer!

Get Your Playground Ready

Every programmer needs a playground for learning, testing, and creating software. Here are some of the essentials you will need as a JavaScript developer.

Create and Modify Code with a Good Editor

The first tool for a programmer is a good editor for writing code. If you don’t already have a favorite code editor, I use and recommend Visual Studio Code. VS Code has exceptional support for JavaScript, and there’s a vast library of free extensions contributed by the community.

Run JavaScript with Node.js

JavaScript was originally created to run in the browser (e.g. Google Chrome, Firefox, and Safari). Node.js was designed to execute JavaScript outside of a browser. It is not only a great platform for building web applications, but it can also be used for so much more. You can use Node.js to test ideas as you learn JavaScript or build your own utilities to automate tasks. Also, Node.js comes with another essential tool, npm. More on that later.

On macOS or Linux, I recommend you first install nvm and use nvm to install Node.js. On Windows, I recommend you use Chocolatey.

Install JavaScript Modules with NPM

Being a programmer doesn’t mean you have to reinvent everything. Chances are, someone has already written a module or library and published it as open-source so the developer community can also use it and make it better. NPM comes with Node.js and is the best way to install open-source JavaScript modules and utilities. You’ll want to get comfortable using its command-line interface (CLI), such as,

npm install to install packages,

to install packages, npm init to create a package.json file for a project,

to create a file for a project, and npm run to run scripts defined in a package.json file.

Manage Software Projects with Git

Think of writing code as playing a video game with checkpoints. At certain times in the game, a checkpoint saves your spot in case something bad happens. Using a version control system like git gives you the ability to save the current state of the software you are writing. If you end up going down the wrong path, you can always revert back to a saved checkpoint.

Learning git will not only help you protect your own code but enable you to interact with other software projects. Most open-source projects and many organizations today use git to manage source code and host their projects on services like GitHub or BitBucket.

Write Better JavaScript with ESLint

ESLint is your friend. Unlike that friend in school who encouraged you to get into trouble. ESLint is a code “linter” for JavaScript. A linter is a utility that checks code for common mistakes and issues. You’ll want to apply a set of ESLint rules designed for the type of software you are writing. Search npmjs.com for eslint-config to find an appropriate set of rules to add to your projects. My personal favorite is eslint-config-leankit .

Write “Pretty” JavaScript with Prettier

Software developers spend a lot of time reading and understanding code. For this reason, programmers can be very opinionated about how code should look. For example, where to place braces around blocks of code, how to indent blocks of code, and the use of spaces around words and special characters.

Prettier is a utility that modifies code based on style “rules.” These rules are designed to make your code more consistent and readable (for humans). prettier can automatically format your code to conform to a standard style. You will learn how to write better-looking code, and anyone who reads your code will be grateful you did.

Where to Get Started Learning JavaScript

I hear you saying, “ENOUGH with the words already! Just tell me where I can go to get started!”

Here are a few resources I personally trust to help you get started. Most of these are free. Good video training is usually not free, but there’s a lot of value for not a whole lot of money.

Books

Tutorials and Community Sites

Podcasts

Video Training

Frontend, Backend… Which End Do I Choose?

When it comes to using JavaScript to create software, there are so many options available! It depends on what type of applications you are most interested in creating.

Frontend

If you are interested in creating websites, including user interfaces (UI) with interactive elements on web pages, you may want to learn more about “front-end” technologies like HTML and CSS, and front-end JavaScript frameworks. Unfortunately, there are sooooo many frameworks to choose from.

My two personal favorites are React and Vue. React is arguably the most popular and valuable front-end skill to have right now. However, I think Vue is easier to learn and use, and continues to gain momentum in the developer community.

Backend

If you are interested in creating software that serves (or hosts) web applications, you may want to learn more about “back-end” programming. This includes Node.js and frameworks built for Node.js. Express is the most popular framework. FeathersJS is a new framework that is rising in popularity. My favorite Node framework is hapi.

Desktop

Electron is a great way to build cross-platform desktop applications that can run on Windows, macOS, and Linux. Visual Studio Code is one example of an Electron application. Watch one of my introduction to Electron talks to learn more about what you can do!

Mobile

Want to build a mobile application? React Native is one of several JavaScript frameworks that let you build mobile applications for iOS and Android. React Native also has the advantage of sharing technology with React , mentioned previously under “Front-end” technologies. So, by learning React , you can apply your knowledge to both front-end and mobile applications.

IoT

Want to program robots, control lights, or create cool gadgets? Check out Johnny-Five, Cylon.js, or Node-RED.

Command-Line Interface (CLI) Utilities

Want to create CLI tools to run in the terminal or command prompt for yourself or other tech-savvy pros? Look to Node.js with a good command-line module like yargs. I’ve built lots of CLI tools to automate tasks and deliver custom solutions to my colleagues and customers using yargs and nexe to compile a CLI script into a stand-alone executable.

JavaScript, ECMAScript, ES6, ES2017… Huh?

You may have read or heard of JavaScript referred to as something like ES6 or ES2015. “ES” is short for ECMAScript, which is the JavaScript language standard. Essentially, ECMAScript is a formal document (or specification) of syntax, features, and behavior controlled by Ecma International, an independent global standards committee. JavaScript is an implementation of the ECMAScript specification.

ES5 and ES6 are the names of specific versions of ECMAScript. When ES6 was released in the year 2015, Ecma International decided to rename ES6 to ES2015, and for all future versions of ECMAScript to be versioned according to the year of its release. Not confusing at all, right?! So far, ES2016, ES2017, and ES2018 have been released. “ES.Next” has become a popular term used to refer to the next version of ECMAScript under development.

In 2019, Focus on ES2015 and Beyond

I recommend when learning JavaScript through books, tutorials, or videos, you seek to find those that approach the language using version ES2015 or newer. If you need to write JavaScript code for an environment that only supports ES5, for example, a specific older browser, you can use Babel to transpile (translate) your modern JavaScript into compatible syntax.

Here are just a few of the more modern JavaScript language features that are important to look for and learn.

Arrow functions

Asynchronous functions using async and await

and Classes

Declaring variables with let and const

and Destructuring

Get Social!

As I mentioned before, one of the reasons I love being a programmer is the supportive community. There are amazing people out there who believe in sharing their knowledge and experience with others by:

Answering questions on forums or social media,

Creating and maintaining open-source projects,

Writing articles, tutorials, and books,

Recording videos,

Speaking at meetups and conferences,

And the list goes on and on!

Follow some really awesome JavaScript developers and communities on Twitter!

If you have a local JavaScript meetup, or a local web developer meetup that includes JavaScript and related technologies, go to a few meetings! Search for other events in your area, such as software conferences, code camps, and hackathons. I have found some of the best opportunities for learning and job opportunities through connections I’ve made at local meetups and events.

A Note on Impostor Syndrome

There are a lot of smart and experienced people out there doing amazing things with software. It’s natural to feel intimidated. It’s hard to ask for help or share your experience when it seems like what you’re doing is basic or insignificant compared to others.

Here’s the secret. Everyone experiences impostor syndrome.

For those of us who really care about programming and the community, we get it! Learning new things is critically important to survive as a programmer. We are all a beginner at something. The community by and large are understanding, gracious, forgiving, and have loads of patience for newcomers. Making mistakes is one of the best ways to learn!

Believe it or not, if you choose to invest in becoming a programmer, you’ll soon have the opportunity where you can choose to help others who are new to things you know!

Get Out There and Be Awesome!

This article only scratches the surface of what’s out there for programming JavaScript. Here is my final challenge to you. Being a programmer is like having a super-power. Through technology, you have the amazing opportunity to impact countless people around the world in significant ways. Use your new skills to make a positive difference!

Learn More About Security and User Management

Take the worry out of managing your application’s user logins and accounts! Check out some of our amazing content:

Follow us for more great content and updates from our team! You can find us on Twitter, Facebook, and LinkedIn. Questions? Hit us up in the comments below.