For most of my life I believed I could not learn to code because I was bad at math. I had good reasons to believe it. Here is where it came from, because if you carry the same belief, the story matters.

As a kid I went to live in the United States. Four years later my family came back to Brazil, and we could not afford the American school in our city, so I continued in a Brazilian school instead. That sounds harmless. It was not. The Brazilian math curriculum is far more demanding and moves faster. In 8th grade I was still working on fractions. My new classmates, same grade, were already solving second-degree equations. I had been dropped into the middle of a race that had started years earlier without me.

It took me years to recover from that gap. It threw off my whole schooling. I only finished high school as an adult, and to be allowed to do that under the Brazilian system I actually had to go back and redo elementary school as an adult, just to have it on my academic record. So when I tell you I understand feeling hopelessly behind in math, I am not speaking in metaphors.

And yet here I am, having learned to code, with a programming degree. The belief that I could not do it because of math was wrong. It cost me years. If you are holding the same belief, let me save you the time.

Most programming is not the math you are afraid of

The math people picture when they hear “you need math to code” is calculus, trigonometry, heavy algebra, the second-degree equations that left me behind. For the vast majority of programming jobs, especially where most beginners start, you almost never touch that. What you use every day is closer to logical thinking: breaking a problem into steps, following conditions, keeping track of what is true at each point.

That is a skill, not a talent. It can be built. I built it, and I started further behind than almost anyone.

The small amount of math that does matter

To be honest with you, a little real math helps, and ignoring it quietly holds a lot of self-taught people back. The pieces worth shoring up are basic arithmetic you can do without panic, a comfort with how numbers relate (fractions, percentages, simple ratios), and just enough logic to reason about true and false. That is most of it for a beginner.

The reason it matters is not the math itself. It is confidence. When the arithmetic underneath a problem feels shaky, your brain spends its energy there instead of on the actual code. Fix the foundation and the code gets easier, even though the code was never the real problem.

How I rebuilt mine from zero

Two things worked, and neither cost much.

The first was Khan Academy. It is free, it starts from genuinely the beginning, and it lets you fill specific holes without sitting through a whole course. Given where I started, going back to the beginning was not optional, it was the entire point. I worked forward from the actual gap, and nobody was watching. That privacy mattered.

The second was stranger and worked better than anything for raw speed. I used a 20-sided RPG die to drill mental arithmetic. Roll two dice, add them, roll again, subtract, over and over, hundreds of tiny problems while watching TV. It sounds silly. But fast, automatic arithmetic is exactly what frees your mind to think about logic, and repetition under no pressure is how you get there. I stopped flinching at numbers.

If you take one thing from this: the goal is not to become a mathematician. It is to make the small math automatic so it stops stealing attention from the code.

What to do this week

  1. Be honest about where the gap actually starts. Go back further than feels comfortable. I had to go all the way back, and it worked.
  2. Spend 15 minutes a day on Khan Academy filling that specific gap, not “math” in general.
  3. Drill mental arithmetic in tiny, no-pressure reps until it is automatic. Dice, an app, flashcards, whatever you will actually do.
  4. Start coding in parallel. Do not wait until you “finish” math. You never will, and you do not need to.

You are not bad at this. Maybe, like me, you were handed a gap you did not create and never got a fair chance to close it. Gaps are fixable on your own schedule. I am the boring, hopeful proof: start where you actually are, make the small stuff automatic, and keep going. If I climbed out of that hole, the one you are in is climbable too.

This site is where I share what worked. If you want the step-by-step version, grab the free roadmap below.