I never finished a programming course. I've started dozens. Never finished one.
What I did instead: I built things. A bot that tells you the weather. A search engine for my bookmarks. A CLI tool that does one thing I needed.
Each one taught me exactly what I needed to know, exactly when I needed to know it. Not "here's how arrays work" in week 3 of a curriculum. But "I need to sort these results by relevance, how do I do that?" at 1am on a Tuesday because I'm obsessed with my side project.
The question has to hurt first
A lesson I read ahead of time sits in a notebook. A lesson I need at 1am sticks. The weather bot did not care that I had watched a video about HTTP. It cared that the forecast had to come back as a sentence a person could read. I went and learned the next piece because the bot was sitting there half-alive and I wanted it to answer.
The bookmark search did the same thing to ranking. I had a pile of links and a query box. The naive list was wrong in a way I could feel. That is when sorting by relevance became a real sentence instead of a module name. The CLI was smaller. One job I was tired of doing by hand. It had to take an argument, fail loudly on a bad path, and print something I could pipe. Those constraints are the teacher. Syntax shows up as a side effect of making the command exist.
A thing that has to run
A course can end on a quiz. A project ends when a person, even if the person is me at 1am, gets a useful answer on a real machine. That is a different stop condition. I cannot mark the weather bot done because I understood the diagram. I mark it done when it replies with tomorrow's temperature. Then I mark it better when the timeout does not take the process down with it.
I still open docs. I still skim a chapter when I am stuck. I stop when the chapter is no longer the blocker. The unused chapter evaporates. The page I needed at 1am does not. The curriculum is the next broken behavior. Build something small. Make it work. Make it better. The Tuesday night question is the syllabus. The running program is the exam.
I have a graveyard of course logins and a short list of ugly tools I still use. The tools are what I kept. When I need a new skill I pick the smallest thing that would force me to touch it, and I do not leave the desk until that thing does the one job.