The Best and the Worst Free Programming Courses

“Everyone can code!”
Well, not really. It might be an unpopular opinion, but I don’t think that coding is for everyone. Why? Well, for the same reasons that dancing is not for everyone. Or painting. Or collecting stamps. We all can do those things but if we don’t enjoy them, chances are we’ll abandon them in a few weeks or will hate them forever. And, normally, different people enjoy different things. The same with coding — more and more people are trying to break in and learn to program. Maybe, they want to make more money, maybe they like the idea of a flexible schedule and remote work. Those are all valid reasons to try coding but it doesn’t guarantee that you’ll like or will be doing this for the rest of your life.
Give it a try
So before you commit to a boot camp, expensive courses, or a bachelor’s degree in hopes to start your first successful startup in the early 20s and retire early, try committing to something free, high-quality, and available for you to start anytime. If you can make it through the free course, if it will make you curious to learn more and proud, if you find yourself trying to finish an interesting project at 3 AM, chances are you might really enjoy it. And if you don’t — not everyone should know how to code or suffer doing something they don’t really like.
Why these courses?
By now, you might be asking — why I chose these courses and how do I even know what to recommend? I’m a self-taught software developer who went to an unusual, experimental school, 42 Silicon Valley, and met hundreds of people there who were also trying to learn. We didn’t have any teachers or classes, only projects we had to complete or peers we needed to review to level up and open new projects.
It was a unique experience in a heart of Silicon Valley where we attended a lot of developer conferences, went to mock interviews at big companies, participated in hackathons, and generally, had a lot of fun. There were no textbooks so Google was our best friend and in those few years that I spent there, I tried so many online resources, that I started to see the difference between okay and high-quality materials. I tried taking all the courses listed below and finished only some of them, but they all helped me in one way or another. Other resources looked great at first but weren’t a big help. I’ll also briefly cover them at the end.
This is the first course I recommend to anyone curious to learn more about programming. Do you want to be a web developer? Watch CS50. Do you simply want to understand how your browser works? Watch CS50 and then maybe their Web course as well. Are you bored? Just watch CS50!

It’s a real course offered by Harvard. It’s also an entry-level course so no prior knowledge is required. As a bonus, it’s taught by David J. Malan, the guy with a magnetic personality and a real talent to explain hard stuff. It’s not that easy to pass the course though — their exercises can be pretty challenging. I would recommend doing this course twice. The first time, just relax and watch all the videos. The second time, try solving the exercises as well. And if you can’t — no worries. Once you become more confident, come back and try again.
Learning programming is tough. Learning it on your own is twice as harder. A self-learning needs not only a lot of patience and motivation, he needs support and structure as well. If you feel like you can relate, The Odin Project is a real gem. Not only do they give you a structured, well-defined path with lots of great exercises, but also a great Discord community to lean on anytime you get stuck.

Here is another great resource that offers a structured curriculum. You have lectures, exercises, modules..all you need is a set schedule and a lot of willpower to go through all the material they provide.
For those who are looking for less structure and move variety, I would recommend small lessons from freeCodeCamp. If you are interested in a specific topic, say CSS Flexbox, there is a course for that. Or you can explore freeCodeCamp’s curriculum and commit to one of their tracks. Most of them take around 300 hours, feature a lot of exercises and 5 projects you need to complete to get your certification. Nobody can guarantee that you’ll find a job right after this, but you’ll have a solid foundation and direction for sure.
Khan Academy offers content that is a little bit more in-depth than on other websites but this resource is a real geek’s dream. It’s an amazing website to learn anything from Math to Economics but in my opinion, knowing some basic stuff is required to fully enjoy their Computer Programming courses. If you feel like you’re not ready, give this platform a chance and try one of the courses in the Life Skills or Humanities sections. Oh, and don’t forget to show this website to your kids, this resource has a lot of great content for them too!

Courses I would not recommend
One of the most popular resources that I would not recommend is Codeacademy. They have a nice, shiny website, and a lot of courses to choose from but… you are not going to learn much. As a rule of thumb, any course that offers a lot of support and hand handling will not teach you a lot of stuff. You might enjoy the process, you might feel like you are making progress, when in fact, you just copy and paste. For the same reasons, be careful with Udemy, Udacity, and some YouTube videos that just show you what to do without thinking much about it. You might spend months trying to finish that course and feeling confident in your skills only to find later that you have no idea how to start building something from scratch or how things actually work.
***
I’ve seen a lot of people trying to learn how to program — some of them succeeded, some of them don’t. In fact, it’s pretty hard to predict in the beginning if the person will pick up this new skill or not. It doesn’t really matter if you liked math in school or played videos games for a few weeks in a row and installed Windows for your crash in high school. The only way to know for sure is to try coding and see how it feels. If you’re not ready to commit to a whole course, try reading one of these fun programming books.
Are you new to programming or in the middle of your learning journey? What courses did you find useful? What courses felt like a waste of time?






