I really wish programming tutorials for absolute beginners were exactly like that. Like please program my dumb ass to learn programming.

Ideally a tutorial would Just assume I know nothing at all. In fact, assume I'm some medieval serf from 1320, motherfucker. Assume I've never heard of a computer before, never mind used one. Assume I've lost two dozen children to the plague, scurvy, smallpox, and conscription into wars with neighboring fiefdoms. Assume I'm currently imprisoned in the oubliette for hiding grain under my floorboards. Assume I speak in such a thick accent from bumfuck nowhere that it is entirely unintelligible to both contemporary nobility and modern English speakers alike. Assume I'm illiterate. Assume I've never washed my penis before. Assume I've never wiped my ass.

I'm talking about a tutorial that involves a thorough description of each and every click of the mouse. Rigorously define every single word that has programming relevance. Leave no stone unturned, if you're even slightly vague about any step I guarantee you I will fuck it up! It'd be sick as hell if such a lesson plan existed for every common programming language

  • macerated_baby_presidents [he/him]
    hexbear
    25
    edit-2
    4 months ago

    I'm talking about a tutorial that involves a thorough description of each and every click of the mouse.

    The thing about that sandwich programming introduction is that there is no limit to how detailed the instructions are. You can say "open the jar of peanut butter" and your partner doesn't know how to do it. Maybe they don't know how to execute "unscrew the lid" or even "grasp the lid". The level of detail of the instruction set is arbitrary. The goal is to introduce students to the idea of functions: there are some things the computer already knows how to do, and you can put them together into larger routines.

    I worked at a helpdesk for a bit. The reason tutorials don't give you "click at pixel 300, 627" is because you need to understand computers as tools that respond to input according to sensible rules. They are not magic invocations; there are many paths to the same outcome. Say I want you to open a program. I can say "click that icon on the desktop", but I'm just guessing at what level of instructions you understand. For instance, I didn't specify to double-click, so a really clueless user might single-click and ask "now what?" and be confused when I follow up assuming they opened the program. Normal users get annoyed with tedious detail; maybe they normally open programs without using the mouse at all. If I lead by saying the actual thing I want you to do, in this case "open the program", you can ask for more detail if you don't know what I mean.

    Since it's got to be appropriate for many people, tutorials can't perfectly guess your level of knowledge. Since they are finite length, they can't fully define this infinite chain of meanings. For instance, if I ask you to create test.js, you need to know what a file is, what an extension is, what a text editor is, which one you're using, how to open it, how to save a file, how to use a menu bar, on and on and on. Since the tutorial can't ask you what you know and respond on the fly, almost everyone is going to have to look some stuff up themselves. At the top end, there are often no tutorials! We try to write docs and READMEs, but that competes with development time - sometimes you're a new employee, you get dumped into a poorly documented codebase, the last workers quit, and you have to figure it out yourself.

    The goal is not to turn you into a factory automaton, moving the mouse to (300,627) and not knowing what to do if there's an unexpected popup. Goal is to get you away from rote repetition and towards understanding what you're doing. If you must, a thinking machine. Practically, you need to plop the serf down in front of MSPaint until they learn to use a computer. Then they can learn programming.