I’ve been using Anki since basically day one and have had great success with it for things like learning Japanese and classical music. But I’ve never figured out a really effective way to use it for technical or engineering topics.
For example, basic front/back cards and even cloze deletions usually only help me with passive recognition/. I’ve used these approaches to passexams, but the knowledge never feels deep or durable. I end up deleting those decks right after the test because I can’t actually produce the material fluidly in real work.
Now I’m trying to learn Python more seriously, and I’m leaning toward a more active, “heavier” card style to force production recall. Things like:
front: “Write a function that takes a file path, reads the attached file, and queries OpenAI’s API to summarize its contents.”
Back: the ideal code solution, with comments on key patterns, error handling, etc.)
I’d type out the code during review and have Anki check my answer.
This feels like the only way to make the knowledge stick for actual programming, but I know it goes the principle of atomic learning
I’m a professional developer with 5 YOE and I can tell you that it’s useless to memorise a programming language. As a programmer you need to understand how things work and practice creating your own programs to make it sink. This is particularly true now that we can generate code snippets in a matter of seconds with LLMs.
I would also say that understanding is more important. As we used to say: you can forget a formula and look it up in a reference book, but you should know the general methods and where to find them.
However, I don’t fully agree with you; every language has rules for how to write and how not to. That’s what training should be about: showing successful approaches and foolish ones. Unfortunately, AI often generates code that’s far from optimal, so we shouldn’t be surprised by the programs’ poor performance.
And again, I agree with you that the best way to learn programming is to practice programming itself and a modicum of theory, no more than 25%.
For languages new to you, I recommend learning the usual way: practice writing actual programs (maybe Anki add-ons?). Once you gain intuition of the language, it might be useful to make Anki cards only for important code snippets or language gotchas where practice alone doesn’t seem to cut it for you.
Starting with Anki is the wrong way to go about it.
spaced out practice is best used to memorize tidbits of information. a flashcard like what you have in your example is essentially too wide to fit that domain. this is true of any topic not just programming, keep using spaced out practice for memorizing names, independent and clear pieces of information, tips, best-practices (ex: what is the difference between blocking vs asynchronous calls) (ex: what multi-threading means?) (ex: what is casing convention in PEP) (ex: what is the logic behind decorator pattern?)
what you are trying to memorize is not meant to be memorized in your brain. use something like zettelkasten or second brain to keep procedures and workflows and you will be coming up with a strong toolset that you can reuse later again and again.
for programming you need to focus on understanding the logic not the syntax. and your next aim must be to connect and creating links between these conceptual blocks. and what you focus on right now translating your thoughts to code is the simpler part of being a programmer if you exactly know and can describe what you want in programming terms. and you will have lots of fun this way.
it took me sometime to realize that, but when I focused on programming literature rather than syntax coding in different languages became just a matter of translation (like you understand data structures, conditionals, loops, functions, classes, inheritance, interfaces, polymorphism and you can create a flowchart, and that is exactly what I recommend, then all that left is to put some syntax from any language of your choice to make it into reality)
and the last point is: AI will do lots of coding for you, if you are conceptually strong you can guide AI to get best possible results. (and to be honest this is the future, I coded in like 10 languages and many different use cases but most of my codes are created by AI nowadays, I just use plain English to correct it very rarely)
Would a valid new approach be to start with a focus on semantics/”literature”, and then take another pass at python? I’ve started so many times. I did coursework in college, and have made several programs and scripts for work as my job requires it, but feel that I rapidly forget everything I learn. I’m hesitant to start building stuff again without mapping out a new/deliberate approach to progress and retention.
Also, I fully agree with your opinion on AI/agentic coding, and want to be sure that I don’t follow generic “learn to code” advice in a way that is already becoming irrelevant in the job market.
Sure, give it another try. This time I suggest take a look at Intermediate Packets(IPs)
And when you create meaningful IPs you never again you are losing something.