How to Be a Self-Taught Programmer (and Not Die Trying)

April 15, 2024 (2mo ago)

I believe it has been socially accepted for some time now that to be a good programmer, have a successful career, or start a business in this field, one does not need a formal degree. However, I also think that it’s not just about doing an intensive 3-month bootcamp, getting a job, and that's it. For this reason, I would like to share how I organize myself to improve every day (working full-time and studying on my own). I hope you find something useful ;)

Essential Tool: Notion

For those who are not familiar, Notion is basically an application that allows you to manage notes, tasks, databases, calendars, etc. It is a fully customizable and intuitive all-in-one tool.

I honestly don't know what I would do without Notion. In fact, since I started programming, I have been jotting down all my notes here.

When I'm working on a project, it's very useful for breaking down a huge task into smaller tasks and organizing them.

In the example I leave below, I had to solve a problem so what I did was create small tasks that would lead me to that goal; I also made other sections that I considered important to better understand the problem and its possible solutions.

Mailchimp image

Regarding studying, a simple recommendation to apply right away is to make a page for the course you want to do, and as you watch the course, jot down questions in toggle format (it's the element that lets you hide or show text). Particularly for me, it helps because when reviewing concepts, I don’t just read what I studied; I make an effort to answer the questions from what I remember at the moment.

Toggle example

Study Technique: Spaced Repetition

As I mentioned, when I want to learn something more theoretical, I write down my notes in Notion and then review them. But how often and how do I re-study and practice what I've learned? This is where the ‘spaced repetition’ technique helps us. The idea is to review the material at increasingly longer intervals. For example, you first review the next day, then in three days, later in a week, and so on. This method is based on the principle that reviewing information just when we start to forget it strengthens our memory and makes learning more lasting and effective.

And for that reason in Notion, I developed a table that lets me know what I am studying and when I need to review it.

Spaced repetition table

How do I stay updated with the latest news?

I think it's partly good to be aware of what's happening in the world of technology, especially in these times of the rise of Artificial Intelligence where tools that can automate several tasks are coming out.

YouTube accounts I recommend following:

  • Fireship: an account that explains cs concepts in a very entertaining and concise way

  • Midudev: a Spanish frontend developer with top-notch courses and explanatory videos

  • Theo - t3․gg: former Twitch dev, a real pro.

It’s Not All Roses, Foundation Courses

Being up-to-date with the latest technologies is not everything, as it can distract from the ultimate goal, which is to make life easier for your users (and honestly, they don’t care if you're using the latest version of your favorite framework). Thus, understanding the fundamentals allows you to have a solid base that will not change despite the language or technology you use.

As you might have seen in the table picture, I have already taken foundational courses such as CS50, Clean Code, and SPD (Systematic Program Design). Currently, I am following the OSSU path, which is an open-source repository and has a pretty interesting curriculum to understand the basics of CS. If you want to start it, let me know so we can share opinions, notes, or solve doubts!

My System

I study every day of the week, so I take the weekends off. (disclaimer: there are times when it can fail during the week due to work or other events, so I always commit to giving myself some time on the weekend on those occasions).

I also exercise and sleep well → being healthy helps you think, concentrate, and perform better.


This is all from my experience and I know I have a lot to improve. However, I believe that by respecting these steps, consistently and without forgetting to rest, it is possible to develop good performance in your work or project and move to the next level as a dev.

This is my first blog so any feedback is welcome! If you want to share your experiences and chat for a while, talk to me on Linkedin, Twitter or send me an email at