Coding Resources: Online Learning

We all learn differently, and we all want to learn for different reasons. My purpose in this post is not to tell you exactly where you should go to learn, but to be a resource that helps you figure that our for yourself.

When I first started coding I had no idea where to start. A friend told me to start with Python because it was popular, still gaining in popularity, and its syntax was similar to natural language, which would make it easier to pick up. All of this was great advice, but I felt like something was missing. I wanted to learn more about how my code was interacting with the computer and I wasn't getting those answers using Python.

I did an enormous amount of research and decided to drop Python and start learning C (If you are new to programming I do not recommend learning C). The majority of resources I read advocated against learning C -- anything but C for that matter. A few explained, however, that learning C would make other languages easier to learn in addition to giving me greater control over the machine. This was exactly what I was looking for and was the deciding factor in my decision to learn C.

I say all this because if you aren't excited about the language or technology you are learning, chances are you will either not learn it well, or not learn it at all. These are the resources I have used and enjoyed. If they don't get you excited, the last section of this post has links to a bunch of resources I've heard were good but did not personally use. Keep in mind that I have been fairly cash strapped, so the resources I use are all going to be free or very low cost. If you have the resources to pay for training there may be much better avenues available to you.

freeCodeCamp: If you are new to programming I highly recommend freeCodeCamp. More than anything it provides a fantastic roadmap for developing your skills as a developer. Keep in mind that while the introductory material does a decent amount of handholding, the training wheels come off quickly. I believe this was done intentionally to teach coders to learn how to research and ask questions, two skills that are extremely valuable. Supplementing the material with exercises from other resources will likely be very helpful.

EdX: EdX offers online university courses for free with the option to upgrade to a verified certificate. The only course I have taken from EdX is Harvard's CS50X, but it was one of the best courses I have ever taken. CS50X teaches C, so if you aren't interested in C I recommend going elsewhere. MIT has an intro course on EdX that I have heard is great, but uses Python instead of C.

Coursera: Much like EdX, Coursera is another resource where you can take online university courses. Coursera has an enormous course library and is a great resource for both new and experienced coders alike. One difference from EdX is that you have to enroll in the paid option in order to have your assignments checked or graded. I'm currently supplementing freeCodeCamp with a MEAN stack course from Coursera and enjoying it.

Codecademy: Codecademy uses an interactive approach to learning where you read a short lesson and then write the code yourself in a cloud IDE. It is my go-to resource when I am looking for an introduction to a certain language or framework. The lessons are easy to pick up and put down, making it great when you have an extra 5 minutes or an extra 5 hours.

Code School: Code School is primarily a paid resource, but they have a few free courses. Much like Codecademy, they use an interactive platform, but supplement each lesson with video lectures. I really liked their introductory git lessons.

The Odin Project: The Odin project provides a great framework for learning web development much like freeCodeCamp. Unlike freeCodeCamp, there are no coding challenges on the site itself. You are referred around the web to other resources that help you learn a certain lesson or skill. If you are more interested in Ruby & Ruby on Rails than Node.js for your back end, the Odin Project may have a better roadmap for you than freeCodeCamp.

Helpful Links & Articles: learntocodewith.me resources, Beginner's Javascript Study Plan. For those times you need some comic relief - xkcd.

Resources I haven't tried but have heard are great: Zed Shaw's Learn (insert language) the Hard Way, Team Treehouse, Pluralsight, Skillcrush, MIT Open Courseware.