How would I learn to code today?
Tags: codenewbie
Published: 2021-06-27 21:58:25

I was 17 years old when I decided to switch majors to Computer Science, without knowing exactly what it was or what I was in for. All I knew was that I liked HTML because of my extensive experience customizing my MySpace profile.

Today, years later, I’m reflecting on what I would do if I was learning to code from scratch. What would I do with the tools that are available today?

### Book, Website or YouTube?

I’ve seen a lot of people get hung up on what medium is the best to learn to code. To be honest, I don’t think it matters. In most cases, anything that makes you postpone getting started isn’t worth thinking about too much.

Ideally, choose the medium you’re most comfortable with. I learn best reading vs watching, so I would personally choose a book or a website with tutorials. But a lot of people are more visual and video would work better for them.

What I think it’s more important is what you learn and the order in which you learn it.

### Basics

The first thing you should learn is the basics. Pick any language that you’re curious about and learn about:

- Variables
- Data types
- Control structures
- Data storage and access

Which language? Again, it doesn’t matter as much as you think it does.

The purpose of the first programming language you learn isn’t to become an expert in it. It's just to learn how to think like a programmer. You can pick up another language later. In fact, it will be easier to pick up and learn any other language after you already know one.

That said, when people ask me which language to start with, I usually say Python or JavaScript.

### Tutorial

After you learn the language basics, I think it’s good to do ONE tutorial to get a feeling of what it is like to start and complete a project in a short amount of time.

However, don’t start doing tutorial after tutorial or you’ll get stuck in [tutorial hell](https://levelup.gitconnected.com/getting-out-of-tutorial-hell-4ed8aa788b2b).

### Object Oriented Programming (OOP)

A lot of the languages widely used today are object oriented, so it’s a good idea to learn about that next. Learn the basic concepts and principles of object oriented programming.

Be warned that a lot of OOP resources start talking about animals and houses to teach you basic concepts, instead of using real world scenarios. In my experience you really “get” OOP when you actually start using it.

### Algorithms and Data Structures

When you first start learning algorithms and data structures it might seem like meaningless theory, but they actually help you develop your problem solving skills.

In any given program you basically have data and a set of instructions that do something with this data. Learning data structures will make it easier to organize the data in a way that makes sense and makes its handling easier. And learning algorithms will help you figure out the most efficient way to handle data to get the result that you want.

### Project

After learning the basics of the first 4 topics, it’s time to do a project on your own. You might think it’s early and that you don’t know enough, but trust me, after a certain point this is the best way to learn.

There’s always this gap after you do a tutorial where you feel like you understand the concepts but you can’t actually build something on your own. This is because the tutorial was holding your hand and telling you what code to write (which is fine). But the way to bridge that gap is to start a project on your own.

Of course, there will be many times when you won’t know what to do. That’s part of the process, and that’s when you will make use of your new best friend, Google. By looking up a problem that you are actually facing, finding a solution for it and then implementing it, you will absorb the knowledge easier than if you just read about it in a book.

#### A few tips:

- Make sure that every time you come across a coding exercise or example that you actually type it instead of just copy pasting. That will help you remember things better. It does make a difference.

- Be consistent. Make a schedule, or at least decide on a set amount of hours you’re going to learn every day.

There’s this stage when you’re learning something, when you realize: “wow, this road is going to be way longer than I thought”. Don’t get discouraged. It’s normal to feel overwhelmed at some point, but just keep working on it and you’ll see results.

- Mindset.
  This kinda relates to the previous tip. You’re going to get stuck at some point, that is a Expect it so that you’re not frustrated when it happens. See getting stuck as part of the learning process.

Programming is mostly about problem solving so by encountering roadblocks you’re actually practicing one of the most important skills you need to have as a developer.

- Google is your friend. To be a programmer you have to be a lifelong learner, because there will always be something you don’t know.

  Luckily, every popular programming language has a big online community, and you can find an answer for virtually any question you have. So when you’re stuck, or if you’re not sure about something, just look it up online.

  This is the end of the post, but this is not everything you need to know about programming! There are sooo many more topics to learn about, from design to testing and documentation. But if you want to get started, now you know how.