Programming

Roadmaps are wrong: learn to code properly - Part 1

Mauricio Del Río 2025-11-01 10 minutes
Tags:#Programming#Tips#Tutorials#Roadmaps#Learning

Disclaimer: I'm not trying to offend anyone with this article, but I do want to give my honest opinion on a topic that I think is important.

BOOOM!!!

I often come across various people on social media, some more serious than others, recommending the best path to enter the programming world. These paths can be approached in different ways: Roadmaps for frontend, backend, fullstack, data science, machine learning, etc. At the core, the premise is good, in fact, many of the sequences you find in these roadmaps are correct and useful. Except for one detail: These roadmaps are focused on people who already have programming experience.

Yes, this may sound a bit contradictory, aren't they supposed to be for people who want to learn to code? The reality is that these roadmaps assume that the person already has a solid foundation in programming, and what they're looking for is guidance on what technologies to learn next. The problem arises when people with no previous experience try to follow these roadmaps to the letter, which can lead to frustration and demotivation.

Do you really know what you're learning?

The world of technology is ENORMOUS. It's not decades of development, it's CENTURIES. This point many people are unaware of, computer science has existed for thousands of years, this is not an exaggeration at all, the first concepts of programming come from multiple cultures, from ancient Greece to imperial China. Beautiful and interesting stories, from theologians, philosophers, mathematicians, lawyers and eccentric personalities. Computer science has been gestated in a turbulent, hazardous path full of icons that have remained in collective ignorance.

Al-Khwarizmi? Cantor? Laplace? Boole? Babbage? Turing? Ada Lovelace?

I don't want to sound pretentious, but knowing history, in any field you want to study, gives you perspective. Knowing why something was invented, who invented it, in what historical, social and economic context the invention occurred, helps you better understand its purpose and functioning.

Let's say that people who work in the technology area have relatively marked patterns; We are curious, we like to solve problems and understand them, we are creative and we like to express our ideas into something tangible. But above all, we are people who seek to understand the "why" of things.

And this is not surprising, the history of computer science was built based on people who followed the same pattern. Can we create a universal language with combinatorics? What if I no longer want to add very large numbers by hand? How can I automate repetitive tasks? What if I want a machine to do what I tell it to do?

I'm not saying you should start with history but...

You must start with history! Haha! You thought I wasn't going to say it. Well, at least a little bit, out of curiosity. If you're interested, I can write some didactic and summarized article about great computer science figures and their contributions, but that depends on you as readers, if you see this article published somewhere, you can leave it as a comment.

The concept of Algorithm

Before even thinking about a trendy programming language, you must understand what an algorithm is. The definition is quite simple, and you'll find it in multiple ways on the internet, but I really like this one:

An algorithm is a set of defined and ordered instructions or steps that are followed to solve a problem or perform a specific task.

It may seem basic and very broad, but that's what it is, an axiom of life itself. EVERY day you use algorithms for your daily life without realizing it. You have routines, right? Sequence of actions that you perform repetitively to achieve a goal. Sure, your routine can have variations from day to day, but you usually reach your destination.

An algorithm is nothing more than that, a routine, sequential steps from an origin to a destination.

Thinking in algorithms

You wake up in the morning, you shower, you get dressed, you have breakfast, you take the subway, bus, car, bicycle, you just walk, you arrive at work, you pour yourself a coffee because you're dying of sleep, you turn on your computer and you start working.

Your routine could equally be, you wake up, go out to exercise, shower, get dressed, have breakfast, go drop the kids off at school, come back home, work from home, have lunch, etc.

Are they routines, right? Are they algorithms? Yes, they are.

Our work also implements routines, just like in daily life. What does a programmer do? Solves problems, and to solve problems, creates algorithms.

Problem: The user wants to log into their email account.

Solution: Create an algorithm that verifies the user's credentials and allows them to access their account.

  1. We design a login form.
  2. The user enters their email and password.
  3. The system verifies the credentials.
  4. If the credentials are correct, the user accesses their account.
  5. If the credentials are incorrect, an error message is displayed.
  6. The user can try to log in again.

See? A simple algorithm to solve a common problem. Now, don't get confused, verbally it looks very simple, but each of those steps you see there requires a number of actions that, if you're just starting to learn programming, you probably can't yet dimension.

But that's precisely why I'm giving you a hard time about this, to get to dimension all these steps, you must dimension how big and complex the world of computer science is, open your mind to understand that for humanity to be able to achieve this simple login, centuries of development, technological, mathematical and scientific advances have been needed.

Boolean logic

Society says that computer scientists are kind of weird, square, not very social, literal, at this point I've heard everything, and partly they're a bit right, but it's because we condition ourselves a lot to what we do.

What I'm going to say may sound a bit fatalistic, and maybe some humanists won't agree with this but, at the end of every path, whatever it is, decisions are binary. What is a binary decision? It's a decision that has two options, yes or no, true or false, or as we also usually note it in programming: 1 or 0.

Am I going to work today? Yes or no. Am I going to study today? Yes or no. Am I going out with my friends? Yes or no.

It doesn't matter the reasons, the motives for your actions can be infinite, but in the end, you either do things or you don't do them.

This is a huge field of study and it's fascinating at the same time, machines work this way (don't come at me with quantum computing please haha). Circuits, programming languages, operating systems, everything works with boolean logic.

I could spend hours writing about this, but that's not the objective of this article either, but your curiosity bug should point to studying logic, set theory, boolean algebra and algorithms.

Did you think you'd get away from mathematics?

I'm sorry, but no, it's impossible that if you want to be good at this you don't study mathematics. You don't need to know differential and integral calculus, you don't need to be a genius at this, but mathematics will orbit your life as a programmer, and in a much more direct way than you think.

I've come across many of these bootcamps that say don't be scared by mathematics, that they're not very necessary, but the truth is that's lying and creating false expectations for the person who pays to learn, don't be naive, this won't be easy!

It's not easy but very rewarding

For those of us who are in this field, we know what it's like to spend days, weeks without being able to solve something, sometimes you sleep poorly, sometimes it's frustrating, sometimes you have to redo everything from scratch, but when you manage to solve it, the satisfaction is enormous. There's nothing more rewarding than seeing what you made work, that your work bore fruit, that you managed to express your idea into something tangible. If you enjoy this type of emotions, you'll love this world.

So, how do I learn to code properly?

Concluding this first part, I leave you with the following initial recommendations to start your programming journey in a solid way:

  1. Study the history of computer science: Get to know the great figures, their contributions and the historical context.
  2. Understand what an algorithm is: Learn to identify and create algorithms in your daily life.
  3. Learn boolean logic: Familiarize yourself with the concepts of true/false and how they apply in programming.
  4. Strengthen your mathematical knowledge: You don't need to be an expert, but you do need a solid foundation in mathematics.
  5. Practice problem solving: Develop your ability to solve logical and mathematical problems.
  6. Be patient and perseverant: Programming is a long and sometimes difficult path, but the reward is worth it.

See you in the next one!