Teach Yourself Programming

It's not easy. But it doesn't break the laws of physics. So it must be possible.

Mindset for teaching yourself programming

First of all, get your mindset right.

You need to understand that YOU are in control. You can make it happen if you make it happen. If you don't make it happen, it won't happen.

Be in control. Learn how to do so: https://highagency.com

Motivation is a key point

The long game is what matters.

To survive the long game you have to focus on the good, and realize the bad is an inevitable part of the process.

I will teach you habits to avoid this trap in the habits section below. And also some habits to keep yourself motivated.

Learning how to learn, or teaching yourself how to teach yourself

Second, you need to learn how to learn.

More accurately, you need to teach yourself how to teach yourself.

It's a very personal thing, and it's something you catch on your own, although I can give you some advice based on my experience.

We fear what we don't understand

Look up words you don't know, and phrases you don't know. Even if you think you know them, if how the author is using it doesn't make sense, then look it up.

Not looking things up will make you more stupid. Here's the dictionary definitions I'm using:

2. stunned, dazed, or stupefied
3. slow to comprehend or learn things

And most importantly for our case, we fear what we don't understand; it will make you less engaged with programming.

I will teach you habits to mitigate this problem down below.

Deliberate practice loop for learning anything

A picture of the deliberate practice loop described in the text

Then it's about a deliberate practice loop.

  1. Pick an achievable target
  2. Set a timer, 30 minutes, or 1-2 hours
  3. Aim to achieve the target within the timer
  4. When the timer is up, assess, did you finish on time?
  5. If yes, repeat cycle but with a shorter timer or a more ambitious now-more-achievable target
  6. If not, repeat cycle with same or a simpler target, and same timer length, but first write down your learnings, observations and strategy for achieving it next time

(Note that you can totally consume content about HOW to do what you need to do, as part of the timer.)

Lower the difficulty over and over again

This habit is important enough that I will give it its own larger section title.

If something is too hard, make it easier. Meaning if you can't make a todo app, then learn how to show a list on screen. If you don't know how to do that, learn how to put any text on the screen. If you can't do that then learn how to just run a program that doesn't do anything.

If you can't figure out how to do that, then learn how to type on the computer and use the mouse.

The point is, keep moving backwards in difficulty until you CAN do it. Then and only then, increase the difficulty.

With the above loop this should come naturally at some point.

Habits to effectively learn programming

Learn how to properly type on a keyboard like a professional

If you're going to be a professional, act like one. Type at 100 words per minute without many mistakes.

Personally I learnt over 10 years ago using a program called Typing Master.

Learn it seriously. Then practice seriously. It's a VERY important skill to have. So do it.

Don't be one of those writers, or programmers, that type slower than their grandma (their grandma learnt to type on a typewriter at school!).

Keep a log or a blog

It's important that you can reflect on what you've learned. Particularly important when you become demotivated because "I haven't improved at all" and you can look at your code from one month ago and say "well at least I can write it better now". Or from one year ago. Or from 5 years ago. I look at my own blog posts from 10 years ago and realize I wrote very poorly.

If you write a blog that's also a public record of the fact that you're a badass that can teach themselves programming.

"What will I write about?" just write down what you've learnt, as if somebody else will read it. In such a way that you

Experiment

If you can keep a log, you can keep an experiment log.

Just write down "I have this problem, I'm going to see if doing X for Y days, will help with it". Write it out every day on your log.

Then after a week or a month or however long you set out to do the experiment for, you can decide whether it did help or not, and add it to your habits stack, or not.

To avoid alienation from programming, look up words

Again, use your dictionary.

Your dictionary is your best friend. This isn't just about programming BTW. My vocabulary is much larger, and much more precise, than the vocabulary of the average English native, simply because I actually look up every word I come across that I don't know. At least I look it up so that I can understand that sentence.

To avoid alienation from the process, take breaks

Breaks are incredibly important for your brain to function well.

Make a habit to take a break every couple of hours.

Taking a break, in a more technical sense, means to allow your brain to not have to process sensory information, allowing it to be with its own thoughts.

Motivation won't get you as far as systems will

Create systems and habits that will get you to mastery, take advantage of the fact that right now you're motivated.

Motivation tends to fade away, like a firework, it goes high in the sky, and blows up, and falls to the ground.

Systems will get you to outer space, and beyond.

Fundamentals, don't I need fundamentals first?

Not really.

You will learn them naturally, as you work yourself through the deliberate practice loop.

When you're at some level where you can kinda understand what people are saying about programs, then you're at a level where you can really dig deep into fundamentals.

FUNDAMENTALS ARE SUPER IMPORTANT. But if you're not yet at a level where the fundamentals make sense, because you don't know the first thing about programming on a computer, then the fundamentals will be very frustratingly slow.

You will learn the fundamentals naturally, as part of your deliberate practice loop.

Consume copious amounts of content about programming

All these things keep you connected to the subject, and little by little build a model inside of your head of what the world of programming is. This tells your brain that it's a real thing, it's a real tribe, with real people in it, therefore it must be important.

Pitfalls to avoid

Avoid the pitfall, very popular pitfall, known as Robert C. Martin. He is not a competent programmer, even if he writes a lot of popular books about programming.

Don't fall into the trap of overly thinking about and structuring your code. The natural shape to structure your code will become clearer to you the more you program. Don't over-engineer it.

Further reading

Contact

If you have suggestions, feedback, or questions, or want mentoring, contact me at help@teachyourselfprogramming.com.

Copyright © 2025 TeachYourselfProgramming.com