How to learn programming

Start here if you want to become a programmer

⭐️ 👀 2023 WEB DEVELOPMENT BOOTCAMP starting in days! Join the waiting list to reserve your spot in my 10-weeks cohort course and learn the fundamentals, HTML, CSS, JS, Tailwind, React, Next.js and much much more! 👀 ⭐️

Hi. I am a programmer. I’m one of those cool people that sit all day at the computer and make it do things.

We have it pretty good. No problem if the weather is bad, we work inside. Also, there’s plenty of work, anywhere in the world. And we have the option to work remotely, since programming is done on computers.

I can understand why you want to become a programmer. And I want to help you.

First, you should figure out what is the field you’re going to work on. Or the field you would like to work on.

This depends on your goals, your inclinations, and perhaps the odds of finding a good job in that field.

Because there’s not just “programming”, or “software development” in general. There are different kinds of programming. You might want to learn programming to:

  • create a website
  • create a mobile app for your smartphone
  • create a game
  • automate your home with an Arduino

or you might want to dive into complex fields like data science or machine learning, AI and so on.

Each of those sectors are very different from each other. Each one has a different programming language as their “main language”.

We have countless different programming languages. Some are more complex than others. Some are more beginner friendly. Some are highly specialized, some are general purpose languages. Some are very popular, some others are obscure and niche languages. Some are old, some are more recent.

Typically, the language you choose depends on the field you want to work on:

  • Want to create utilities and automate your tasks at work? Learn Python
  • Want to work on Web development? Learn HTML, CSS and JavaScript
  • Want to work with Arduino and embedded devices? Learn C/C++
  • Want to create the next Linux or a performant command line application? Learn Rust
  • Want to create games? Learn C# and/or C++
  • Want to work in Machine Learning and Data Science, or in general “crunch numbers”? Learn Python, R, Julia

You can really start programming with any language. Just know that some specializations are exclusive to a single language. For example iOS development can be only done with Swift, not C#. Android is Kotlin or Java, not Python or PHP. And frontend Web development is mostly the realm of JavaScript.

To each specialization its perfect programming language.

The main issue with learning programming is motivation. If you have an ambitious goal, for example creating your the program or game you want to create, your drive to achieve your dream is going to do marvels for your learning.

It’s much easier to learn this way rather than a general “learn programming” goal that can be too general and give less motivation.

Motivation is not just dreams to build your own software and games - it might also be getting better at your job, of course.

Learning programming requires lots of practice, trial and error, patience and persistence.

If you don’t know what language to start with, unless your field is dominated by a specific programming language, and everyone uses that to perform the task you want to do.

If you want to become a Web programmer, start with JavaScript as that’s what you’re going to use all day long.

Otherwise if you just want start and you want someone to tell you which language to choose, I think everyone should learn Python.

Python is a general purpose programming language that’s easy to learn and very flexible. Once you know how to create Python programs, you’re going to apply that knowledge everywhere.

Here’s how to start.

If your language of choice is Python or JavaScript, start today on freeCodeCamp. The practice-based curriculum will help you get started very quickly.

Then pick some books. Books are immensely useful because you can have them at hand and they look at you all the time saying “read me”.

Pick physical copies, so you can annotate notes and underline what you want. Good books last years.

Start with a beginner’s book, and intermediate book. Books made for schools are great. “Intro to Python for Computer Science and Data Science”, for example.

If you pick JavaScript you can start with my JavaScript Beginner’s Handbook, but get more resources too.

The programming language is just a tool. A very important tool that you should know inside-out, like a carpenter knows the tools of the trade.

The job of a developer is to solve problems. Analyze the domain, choose the right solution, identify the best tools, services and other software that can help you, and implement it into code.

This is why in parallel to learning a programming language, or while you learn it, you should learn how to solve problems.

Initially at a high level. How to reason about a problem, how to think like a programmer.

Then you will get more in-depth and you will start solving problems with code.

So you will learn better your programming language of choice, and you will learn how to solve problems with it.

This is where things get blurred a little bit. To provide more guidance, once a year I launch a practice-based JavaScript Bootcamp and that’s all about learning how to solve problems with code.

Then if you plan to get hired at a company, you will need to prepare for the job interview. I recommend you to start with studying data structures and algorithms, and then start practicing with sites/books that are specialized in interview questions.

There’s a whole industry specialized in just that part.

For some reason preparing for a job interview is very different from the actual programming you will do on the job, but it’s a necessary evil in most cases.

Of course if you want to learn programming to become better at your job or for personal projects, you can skip all that part.

That was an introduction.

Go and download the books you’re interested in from The Valley of Code and remember: it’s going to be difficult, but it’s going to be worth it.

One more thing! ⚠️ ✋

At the end of January I will organize the Web Development Bootcamp.

It's a 10-weeks long cohort online course where I will guide you to becoming a Web Developer.

It's not "just a course". It's a big event I organize once a year.

We'll start from zero, learn the fundamentals of Web Development, HTML CSS, JavaScript, Tailwind, Git, using the command line, VS Code, GitHub, Node.js, we'll then learn React, JSX, how to use PostgreSQL, Astro, Next.js, Prisma, deploying on Netlify/DigitalOcean/Fly/Vercel and much more! 

At the end of the first 10 weeks you'll know how to create web sites and web applications and I'll unlock you the 2nd phase of the Bootcamp: you will get access to a large number of projects exclusive to the Bootcamp graduates, so you can follow my instructions to build things like private areas with authentication, clones of popular sites like Twitter YouTube Reddit, create e-commerce sites, and much much more.

Because once you got the fundamentals, you only learn by working on real, exciting projects.

To find out more, visit bootcamp.dev