When beginners say they understand existing code but they don't know how to solve problems in general

Something that's not related:

I've been learning to use emacs in my spare time because I'm getting tired of the fact that I "had to use vscode". The keyboard shortcuts (at least the basic ones) actually aren't that hard to memorize and after a few days I'm pretty much okay with it; I've even considered using exwm but the minibuffer got clipped on my 1920x1200 screen. I also decided to switch to org for the time being while Camus 2 is still pretty far down on my side project to-do list. Maybe I'll make a new text editor that's more tailored to my taste one day (something between acme and emacs and use a subset of scheme instead of elisp).

Also with the end of my Gemini server (reason explained here) I'm gonna put non-tech things on the main site so it's gonna be way more political from now. Can one truly be free from politics and focus only on tech? Not me, at least; the life path I've chosen to take requires much more political presence. People could have the luxury of not dragging themselves through the mud of everything and just sail anywhere they like; they have no responsibilities but I do.

from my observation over the years i've noticed that people who've just started learning programming tend to think of solutions to problems as this one single solid atomic thing and everyone else "acquired" it through some kind of magic or miracle and now they need to do the same "acquiring" to succeed in what they want to do, and when they don't they ask questions like "i understand the code but how do i come up with this" and "i learned all of this but how do i use it and write my own code". of course the truth is there's no such "acquisition" and both the problems and the solutions to the problems are almost never atomic unless it has been done by someone else before and that someone else has published their solutions. imagine this scenario. you're guiding someone through a programming class session, you painstakingly explained every little details in the code, and the person you're guiding turned their head towards you and asked, "i understand, but how can i come up with all of these things on my own?". now imagine you replied with things like "oh you just need to practise more" and thinking you've done a good job as a teacher; in reality that's such a sad answer that's not gonna help and you feel it also because saying that is just putting them back in front of a computer that they still have no idea how to command and nobody's going to be truly happy after this. the first thing they'll have to keep in mind when learning, i think, is the fact that smaller pieces of things exist and programming is about the way to weave these pieces into one big thing.

i've heard stories back when i was still in cantonia, that people would remembr the code line by line down to every single punctuations - imagine being there trying to remember every single little word in some code going like "'print', 'f', left paren, double quote, percent 's', double quote, comma, double quote, hello world, double quote, right paren, semicolon". i heard that story and thought, that's such a sad and painful way of learning things, especially when misplaced effort like that barely did you any good. sometimes by the work of miracles that got them pass the test they needed to pass; most of them only do this because sometimes it's included in one of those requirements for an accountant license or something like that, and sometimes the more unlucky of them got released to the job market and somehow got a programmer job; for them things soon became hectic and their life turned into a complete nightmare because problems they have to deal with are ever-changing and potentially infinite; if someone still had this very stiff way of thinking and believes that each problem has its own different solution that's unable to dissect into smaller pieces that can be reused elsewhere, i doubt they'll go far. the truth is of course while the problems might be infinitely vast the possible forms of pieces that forms the solutions are not only finite and also way less than a beginner would imagine.

i used to think a good teacher of programming should lead their student through the thinking process when i was young (like 17yo young; was junior year in uni when i was 17); i no longer believe that's a good idea because i sense that there's something meta at play here and leading them will only prevent them from discovering the thought they need to think on their own and thus prevent them from building up the required confidence and resilience needed for learning harder materials.

(i actually forgot what i was about to write from here so i'll stop here i guess. i'm sure the same thing would come back to me again because i think about this kind of stuff so often…)


Last update: 2023.11.29