because I’ve been in a “let’s go bare-metal again” headspace, I’ve had reason to remember and recount going through the first phase of computer programming tech school in the usian military in the early 1990s.
in my particular cohort there were eight of us in the classroom, one cross-training sgt from the army and seven of us air force nerds. of the eight students in the class, only two of us had any experience interacting with computers at all prior to enrollment to this course. the two of us that had computer experience both had a smattering of self-directed programming experience on the home computers of the 1970s and 1980s. the others were still finding their way around a keyboard for the first time.
eight weeks later, each of the eight of us had implemented a very basic, extremely limited yet perfectly functional toy operating system in x86 assembly language using bios calls to do some very basic terminal and disk i/o in a menu-driven shell. each student could desk check their way through their various assembler routines and explain why they did what they did and how the desk check verified that because that was part of the process.
we then spent the next six months on Ada, but those are different stories entirely.
the magic isn’t in getting the machines to do things, the magic is in showing how the magic isn’t magic at all. this is all knowable stuff and can be taught without a shitton of prerequisites and gates.