I've been learning Python, Dart, HTML, and CSS for a while, but I'm worried that I'm only going through the motions and forgetting everything afterward. My usual process is to find a video, type the example code once, write notes in a Markdown file, and then move on.
I'm currently making notes in Obsidian, but I'm not sure they're detailed or useful enough. For example, my notes explain Python lists, indexing, and methods, along with a few copied examples. I understand the general explanation while reading it, but I don't always feel capable of using the concept independently later.
How should I change my learning process so I actually understand and retain what I'm studying?
4 Answers
Notes are useful as a reference, but they aren’t proof that you’ve learned something. Try closing the tutorial and explaining the idea in your own words, then write a fresh example from memory. After that, test yourself with a variation that wasn’t shown in the lesson.
Also watch for small accuracy issues in your notes. For example, Python uses True and False with capital letters, and lists are mutable sequences rather than simply a general container for any values. Writing and running your own experiments will reveal details that passive note-taking can miss.
Your process is a reasonable starting point, but it mostly involves watching, copying, and recording information. The missing part is applying it without the tutorial in front of you.
After learning about lists, invent small exercises: create a list of names, print it, remove an item, insert another one, replace an item, and print the result after each change. Try to remember the solution first, then consult your notes or the documentation only when necessary.
Once that feels comfortable, make slightly larger challenges, such as asking the user for names until they press Enter, or creating a menu that lets them view, add, and remove names. Small, self-created problems are much more useful than repeatedly copying examples.
You probably don’t need to stop learning from videos entirely, but don’t let them be the main activity. Use a structured course with exercises, and actually complete the problems before looking at solutions.
Courses that include written explanations, practice problems, and gradual projects can provide more structure than watching disconnected tutorials. Make pseudocode before coding, use the official documentation when you get stuck, and avoid relying on AI to solve the exercises for you.
Build something you personally care about, even if it seems simple or a little ridiculous. Motivation makes it much easier to push through confusing errors and unfamiliar concepts.
Keep the project small enough to finish. A command-line task manager, a text game, a budget tracker, or a file-organizing script can teach you a lot. You’ll naturally encounter questions about functions, conditionals, data structures, and modules, and solving those questions gives the information a reason to stick.

I’m currently trying to build a command-line task app in Python and am practicing by adding functions as I go. I’m also trying to understand what if __name__ == "__main__": is used for.