by Code Girl

How to choose the right online course or platform when you’re learning to code

Photo by Callum Shaw on Unsplash

There has never been a better time to learn to code. There are vast numbers of online courses and platforms for learning, ranging from free to mildly expensive to out of my budget. It’s important that you take a moment to consider which course will bring you the most success.

There is a temptation to simply look for a course that matches your current need. This could be a language — for example, JavaScript — or a library — for example, React.

An effective evaluation of each course is paramount to success. In this post, I cover five points of evaluation based on educational psychology — brain science — that I think are important. This is based on my experience as a former college professor in the field of education.

What should a course include to ensure that your learning experience is optimal so that you both complete the course and successfully learn the content? Without such an evaluation, you may find yourself drifting from course to course in a perpetual state of confusion which brings about frustration, and may lead you to give up.

A variety of learning styles

In previous posts I’ve talked about the importance of learning styles, your brain’s preferred method of learning new information.

Most people have a dominant style or a combination of dominant styles that are:

  • verbal (reading)
  • visual (images)
  • auditory (listening).

This means that video-based courses that (1) have transcripts for reading, (2) include diagrams, images and make use of color, and (3) voice recordings of information ensure that more participants can be successful.

My favorite course is React 16 — The Complete Guide by Maximillian Schwarzmuller. The content is verbal, visual, and auditory. Max explains every step of the course, and you can read the transcription and follow along as he talks. This transcription is helpful when you don’t quite hear what was said, or you want to reread for clarification — especially if he is explaining something step by step.

Max also includes visuals — diagrams and illustrations — to help clarify concepts. Further, his visuals always emphasize key points. The images pair perfectly with the audio. The combination of the three learning styles ensures that you understand the content. See below for one of his diagrams.

Let’s talk about freeCodeCamp for a minute. While the platform itself is verbal learning — reading snippets of documentation and then practicing what you learned — there is way more to it than meets the eye. Because freeCodeCamp is so popular, they have a dedicated following of programmers that provide supplemental materials on YouTube channels that cover audio and visual learning styles.

For instance, Jose Moreno’s We Will Code walks through various freeCodeCamp challenges going into more detail as he explains the directions (verbal). Cody Seibert’s The Daily Programmer does something similar, but he walks through the challenges on a whiteboard and teases out the concepts being covered (visual).

There are many more of these channels, and I encourage you to explore them. Don’t forget the freeCodeCamp Podcast and blog. You have one powerful learning platform that meets the three learning styles, which is optimal for success.

When looking for a course, pick one where the material is presented in multiple ways so that you have a greater chance of understanding and retaining the information.

Project-based learning

When it comes to education, kinesthetic learning — learning by doing — is the most effective and efficient way to absorb the material. Learning occurs when there is a transformation of information into a working product. It is natural during this learning process for your work to get messy and break because this is learning in context.

Instruction should always be an 80/20 ratio. 80% of the time you are actually working, in this case coding. 20% of the time you are listening or reading or watching a video.

The course I learned the most from was Filip Kordanovski: Build a Responsive Website with HTML5, CSS3, and Bootstrap. The entire course was centered around building a landing page for a fictional company. We learned by doing. Each section of the landing page was set up so that we would learn new concepts. Not only did I learn HTML, CSS, and Bootstrap, I learned quite a bit about design along the way.

Another course I enjoyed was Wes Bos’s JavaScript 30. This is a free course that is designed for you to make small projects every day for 30 days.

Of course, there is no doubt that freeCodeCamp is project-based. In order to earn your Responsive Web Design Certificate, you build five very different projects. There are 20 projects in the interview take home prep session alone! Every section of the platform concludes with several relevant projects that test your abilities once you have gone through the curriculum.

Below you can see the first page of my freeCodeCamp Tic Tac Toe game. I had a blast putting this together with a little superhero spin on it.

Always look to see if the course you want to take has a project that you build throughout the course. Working on real projects builds your muscle memory for basic skills. But don’t stop there. Once you learn how to build through your course, it’s time for you to create your own original project. That is kinesthetic learning, learning by doing.

Problem-solving opportunities

Unfortunately, many courses do not provide a chance for students to problem-solve. Most video-based courses are just a code-along.

Without the proper practice in solving problems, it will be very difficult for you in the real world of coding. That is because you need practice in analyzing cause and effect, and understanding hierarchy, debugging, and refactoring. That is probably one of the greatest strengths of freeCodeCamp — you are always solving problems. The entire basic JavaScript portion of the platform is solving one problem after another.

To prevent fatigue, I suggest you set a goal of solving a certain number of problems a week. Of course, many people like to take other classes. It’s important that you evaluate those classes to see if there are problem-solving opportunities.

The Colt Steele Web Developer Bootcamp does a great job of assigning coding challenges and projects after every section of learning. The Complete JavaScript Course 2018 by Jonas Schmedtmann is very similar and, in addition, the course is project-based and you create a budget application using everything you learned in the course.

When you are evaluating a potential class, always look to see if there are opportunities for you to solve problems on your own. The course should offer solutions to those problems, and there should be opportunities for you to try out your skills. This is a self-assessment. If you aren’t able to solve these problems, you might want to go back and redo a particular section or two from the course.

A community

There is nothing worse than when you are working through a course problem and you hit a brick wall and have nowhere to turn to for help. You try everything you can including lots of googling. But nothing. This actually stops your learning in its tracks and is why it is so incredibly important that your course brings together the community of learners to help you get “unstuck”.

Now, there are a number of ways to do this. freeCodeCamp does this in a forum on their website and there are a number of freeCodeCamp Facebook groups. Other courses use Slack or Discord, which are group chat applications.

This is crucial. If you don’t have a way to get answers to your questions in a timely manner, you will forget what you have learned and will be demotivated to move further. I make it a priority of only choosing courses that bring the community of students together for this purpose.

freeCodeCamp takes this one step further with in-person study groups. I attend the study group in Atlanta every other Sunday and have made some incredible friends there. Below is a picture of some members of our study group (including me) attending the We RISE conference hosted by Women Who Code.

In order: Nerando Johnson, Rachel Rae, myself, and Kris Hays.


While clever marketing will make you think that you can learn programming in a month and land an incredible job, the likelihood is that you can’t, and that is okay.

Learning programming takes time. You are learning new abilities, such as languages (JavaScript), frameworks (Angular), libraries (jQuery). Everyone learns at their own pace. It’s important that you set realistic goals so that you do not become discouraged along the way. This includes:

  • career goals, for example a developer job in one year
  • long-term goals, for example finish freeCodeCamp’s Responsive Web Design Certificate in 6 months
  • short-term goals, for example complete the next three videos from the React 16 course this week

Great courses provide benchmarks which help motivate you and encourage you to move forward. You see this very clearly in freeCodeCamp. If you follow the curriculum map, you always see your progress for each section. And the motivational pop-ups after each challenge just make my day (see below).

The Filip Kordanovski Build a Responsive Website with HTML5, CSS3, and Bootstrap course has built-in benchmarks because each section of the class is building another part of the website. These benchmarks are like short-term goals, and completing them makes you feel like you have accomplished something which in turn motivates you to work harder and get to the next benchmark.

While this may seem like something you can overlook when evaluating a course, it’s extremely important to your mental health while learning. A sense of accomplishment does wonders for your psyche.


Yes, there are vast numbers of courses out there for you to learn to program, but evaluating them with these five principles will actually knock many off the list.

Let’s review.

  • You want a course that addresses different learning styles so you have a better chance of understanding the material.
  • Since best practices in education tells us learning by doing is the best approach, only choose courses where there is a project that you have to build as you learn.
  • Make sure your course has opportunities for you to problem-solve on your own. This will help you to know how well you are understanding the curriculum.
  • Also, creating a community of learners helps you to get “unstuck” while you are working. Any platform will do — a forum, a Facebook page, a Slack channel. Don’t be afraid to ask for help.
  • Finally, having obvious benchmarks will help you to complete short-term goals and stay motivated for the long haul.

For more information on learning styles and brain science please visit my website here.

Follow me on Twitter to learn more about brain science and learning code @fwallacephd.