Skip to content

How to Become a Self-Taught Coder for Free

Updated: at 12:20 pmSuggest Changes

Photo of a sign saying "One Way"

Countless people have asked me something along the lines of:

I want to learn how to code but how should I get started?

So I decided to write up a comprehensive guide on how to do just that. Like anything these days, there are many ways to approach learning to code all over the internet. However, here’s my advice on teaching yourself how to code for free. I promise you that you won’t have to “scam” yourself with overpriced courses.

Table of contents

CS50 vs Finding Your Own Resources

CS50

If you’re serious about programming or maybe want a career where you code, then I recommend people do Harvard University’s CS50x course (which is entirely free and online) as it is best way to start. There, you’ll learn essential concepts in computer science and different programming languages like C, Python, HTML, CSS, and Javascript alongside an engaging lecturer and pre-made assignments and projects to test your knowledge and reinforce what you learn. You can do this all at your own pace too.

WARNING

It is reasonably lengthy, but the knowledge you gain by the end of the course will benefit you greatly in the future in whatever field of tech you’re interested in.

Finding Your Own Resources

Otherwise, if you’re not interested in a long course or prefer choosing what you learn, do you know what might interest you career-wise or what tasks you want to achieve with code?

IMPORTANT

It is crucial that you stick to the language you choose instead of splitting your time between a lot of languages when you’re just starting out. If you switch between different languages, it’ll hinder your learning significantly. Instead, commit to starting out with only one as once you learn the concepts and programming logic with that language, it’s much easier to transfer that knowledge to other languages.

Getting Started

Installing an Editor

Once you’ve chosen a language, you will want to set up a text editor or IDE (integrated development environment). This is where you’ll spend most of your time when coding as it’s where you actually type the code. Which editor you use is unimportant as you can switch to a different one later. What’s important is which one satisfies your needs and preferences. Visual Studio Code is recommended to beginners a lot, but find an editor that suits you.

Getting Started with the Basics of the Language

Next, it’s time to start learning the basics of that language. Find one (preferably free) reasonably comprehensive book, guide, or video resource that goes through the language’s basic setup, syntax, and logic. It doesn’t have to be the best or most complete tutorial, as long as it’s taught decently well, covers the fundamentals, and is reasonably up-to-date. At this point, you just need to learn the basics with easy projects and experimentation.

IMPORTANT

Remember that passively following a tutorial is not learning. One does not watch a video and remember everything. You must actively pay attention to the concepts and ideas being explained, question what the teacher says, code along, and experiment with that code.

“Why/how does that work? How can I do the same thing in different ways? What doesn’t work and why?” Make sure to keep asking yourself these kinds of questions.

Avoiding Tutorial Hell

The reason why I recommend finding one resource to start learning is because we want to avoid falling into what’s called tutorial hell. Tutorial hell is when you’re stuck doing tutorial after tutorial and sometimes switch languages (where you go back to doing tutorials again).

This is why I recommend people to use only a few tutorials. Once you’ve learnt the basics, the actual learning occurs from trial and error and tinkering with code.

NOTE

In the next section, I discuss building projects where you reinforce your existing knowledge and challenge yourself to continuously improve.

Time to Build!

Once you’ve acquired the basics, it’s time to put your knowledge into practice! The best way to do that is to build things. Find something you’re interested in or a problem you think coding can solve and build something! For example, if you enjoy working out, you can make a workout tracker to track the number of sets and reps you do. These projects don’t need to be flashy or extravagant. They need to be easy enough that you don’t burn out and give up, but challenging enough that it stretches the limits of your knowledge ever so slightly. Your skills and expertise will compound over time if you’re constantly pushing yourself outside of your comfort zone.

TIP

A great thing about projects is that you can collaborate or ask people for help and feedback.

Projects vs Leetcode-style Coding Exercises

I often get asked if it’s worth solving coding exercises like those found on Leetcode as a beginner. I believe that both projects and coding exercises have their purposes, and there’s no black-and-white answer on which one is better.

Coding exercises allow for the development of theoretical knowledge of coding concepts. However, it’s typically in an isolated context which makes it difficult to recognize how they relate to other concepts. For example, if you find for loops are difficult, it might be helpful to do some coding exercises that focus on for loops. Additionally, data structures and algorithms (DSA) are imperative to understand as they help you optimise and design high-quality software. Exercises focusing on implementing different DSAs to solve problems are an excellent way to build experience in the subject.

Coding exercises do have their limitations; they do not teach you how to build software and they can teach bad habits. Projects on the other hand, allow you to synthesise the different abstract concepts you’ve learnt into something practical. This is where the skills—such as software design, version control, and experimentation—that are applicable to real world software takes place.

In summary, projects and coding exercises are just tools for you to acquire experience, depending on your goals at the current moment. If you need help understanding a concept or a new tool, then exercises may be more appropriate. Otherwise, it may be better to work on projects.

Further Learning

From here, you don’t need as much hand-holding in your learning journey. You should have enough understanding to know what you’re interested in and what the next thing you want to learn is.

That being said, here are some of our suggestions if you’re still unsure:

NOTE

Note that these can be done at any time to supplement your learning. They do not need to be done after you’ve worked on projects.

Lastly, if you’ve gotten this far, congrats. I wouldn’t have expected anyone to read something I wrote on the internet. If you want more personalised advice on how to get started with learning to code, feel free to reach out to me by email which you can find at the bottom of the page or on the home page. Just let me know you’re coming from this blog post :)


Previous Post
Why I Don’t Use Code Notebooks as a Data Scientist