I recently put together a syllabus for learning to code by learning JavaScript for a couple of friends and interns. I believe it is a good, relatively cheap, introduction to coding that also contains projects that simulate real-world experience. I thought I'd share it since this is the time of year for resolutions. If you have a goal to learn to code this would be my recommended approach as of the beginning of 2017. My recommendation is to learn JavaScript and a couple of JavaScript frameworks.

Four reasons to learn to code by learning JavaScript

I think there are four main reasons to learn JavaScript as your first language, or to pick JavaScript as your next language.

JavaScript is flexible and well documented.

I am recommending learning JavaScript because it is a complete language with a robust ecosystem. You can use JavaScript with a variety of different coding styles so it can grow with you as you learn it. You can start with simple, procedural scripts and learn object-oriented fundamentals but also use it to do functional programming. Don't worry if none of that makes any sense to you right now.

JavaScript has a vibrant ecosystem.

JavaScript is hot right now so there are a ton of online resources for it. JavaScript also has a ton of existing frameworks. If you don't even know what a framework is, don't worry either. Frameworks allow you to leverage other peoples code so you don't have to continuously solve already solved problems. They also allow you to develop quickly by providing shortcuts. Each framework is different and has its own set of pros and cons. As a professional developer I spend more time learning new frameworks and their conventions than I do learning new languages.

JavaScript doesn't require any special tools.

The third reason to learn JavaScript is because you can use it, starting right now, with the tools you already have, if you are reading this blog post. All you need is the ability to edit files and open them with your web browser, and you're good to go. My syllabus will take a detour into learning some command line tools because they will give you more control over your computer and make you more comfortable poking around servers.

JavaScript can be used full-stack.

The fourth reason is that JavaScript can be used at all levels of the Web stack. If you don't know what a stack is, don't worry either. Your technology stack is the group of software and systems that allow you to accomplish your goal. When the goal is to deliver a web page that stack will include operating systems, web servers, databases, rendering engines, etc. It includes both your back-end and front-end systems. JavaScript can be used on both, meaning you can experience both back-end and front-end development, so as you learn you will learn which you gravitate towards.

Why learn Web Development?

The main reason I would suggest starting with Web Development over something like video game development or desktop application development is because it's easier. At least, that's my opinion. Web development doesn't require a ton of specialized tools to get started. Also, it's what I know, so I'm sure there is a lot of personal bias in that suggestion.

Learning Objectives

The basic structure of the syllabus is to learn the following in order:

  1. Basic HTML and CSS
  2. JavaScript Basics
  3. Node School
  4. Source Control Detour
  5. Command Line Detour
  6. Front-End JavaScript Framework
  7. Back-End JavaScript Development with Node.js
  8. JavaScript Libraries Worth Knowing.
  9. Full Stack Development on AWS

The Syllabus

Basic HTML and CSS

Before you can do Web Development you need to know the basics of HTML and CSS. I would suggest doing at least one, but preferably both of the following courses:

JavaScript Basics

After you have the ability to view your own web pages, the next step is to take a deeper dive into Front-End JavaScript. I recommend the following course:

Node School

The next step is to familiarize yourself with NodeSchool. I highly recommend going to a NodeSchool event in your area. You could do it yourself, but the event is a great experience. I will probably write up a separate "getting started with NodeSchool" post because looking at the instructions I could see how they might be daunting to a complete newbie. When you get Node.js, NPM, and Nodeschool all installed start with the some modules.

  • Nodeschool JavaScripting module
  • Nodeschool js-best-practices module

Source Control Detour

Once you start developing you're going to want to store your code someplace safe. It's time to spend a little time learning git.

  • Sign up for GitHub
  • Also sign up for Bitbucket
  • Play around with both Github and bitbucket and see which you like better, but keep both accounts, they are free.
  • Code Academy git course
  • Nodeschool git-it module.
  • Start storing all your code in git and get in the habit of practicing good source-control practices.

Command Line Detour

At this point I suggest you take a quick detour to learn your command line utilities a little better. This is completely optional, but I think it's worth it. Hopefully you're already on a Unix based system of some sort. If you're developing on Windows there is a new (as of 2016) bash "Windows Subsystem for Linux" that you might want to try. I have not tried it. I would recommend learning the basics of VI and Bash through the following courses:

Front-End JavaScript Framework

After you know the basics of HTML, CSS and JavaScript it's time to dive into a JavaScript framework. Which one doesn't really matter to me, but I suggest learning React because both Code Academy and NodeSchool have modules for it. I would take the following courses:

Back-End JavaScript Development: Node.js

Now you have a solid understanding of the Front-End. Let's switch to the Back-end and learn Node.js, NPM, and related technologies.

JavaScript Libraries and Principles Worth Knowing.

At this point you know a lot, and I would suggest taking deeper dives into some of the NodeSchool modules.

  • Finish the NodeSchool core modules
  • NodeSchool bug-clinic module
  • NodeSchool promise-it-wont-hurt module
  • NodeSchool async-you module
  • NodeSchool lololodash module
  • NodeSchool test-anything module

Full Stack Development on AWS

Once you've done all this, it'll be time to start putting these sites you're able to build into the wild. At this point it'll be time to learn all about web hosting and I suggest learning Amazon Web Services and how to host your front-end site on S3, communicating to Node via API Gateway and Lambda. I don't know of any tutorials on how to do all that, so maybe I'll write one up. By the time you get that point in the syllabus maybe I'll have it done.

Good Luck

If anyone actually goes through this course I'd love to have your feedback. Let me know how it goes!

I have a newsletter...

Many of my posts end up in Digital Ambit's monthly newsletter. It is the best way to keep up with what Dagny and I are doing in the business world. I appreciate your support and will only send you things we think are valuable.