I used to assume I was improving because I could follow programming tutorials without much trouble. That changed when I tried building something with the tutorial closed. I might have known what I wanted to make, but I struggled to decide where to begin, search for the right information, or understand what an error was really telling me. I'm now spending more time creating small projects from scratch, even when the results are messy. It's frustrating, but being stuck seems more educational than watching another lengthy tutorial. For those who have been learning for a while, what helped you make the transition from following examples to figuring things out on your own?
4 Answers
If you use tutorials, turn them into an exercise instead of following along line by line. Read or watch enough to understand the general idea, close it, and then try to recreate the result yourself. When you get stuck, look back briefly, take a break, and attempt the next part without the reference open. That gives you exposure to useful techniques while still practicing recall and problem-solving.
Tutorials usually show the polished path to a result, not all the planning, rewrites, failed attempts, and debugging that happened beforehand. That hidden process is a major part of programming. You start developing that skill when you work through those decisions and mistakes yourself.
A small project you genuinely want to use can make a huge difference. Start with something modest, such as a simple command-line tool, and sketch out the logic before writing code. The goal is to practice deciding what to build and how to break it down, not just reproducing someone else’s steps.
Following a tutorial in small, isolated sections can work well, especially for topics with lots of setup or boilerplate. Use it to learn the basic mechanics, then make the architecture and remaining features your own. Changing the design, experimenting, and building something different forces you to understand why the code works instead of merely copying it.

That makes sense. I think I was treating the tutorial’s finished code as the destination instead of using it as a starting point.