And at the time, most programs were text-mode. I/O was only keyboard, screen, and disk (and maybe mouse, joystick, and serial port if you wanted to get fancy). When your program started you had full control of the entire system. There was no multitasking, 100+ processes running in the background, nor GUI architecture over an OS subsystem. So you only needed to learn a very very few things to be able to build software roughly equivalent to professional store-bought software. Simple logic and data structures and 3-6 types of I/O and that was it.
From there it was a short step to something more powerful like Turbo Pascal or Visual Basic, again both of which were pretty much "batteries included" everything you need in one tool.
Today's landscape with its enormous stacks, build tools, cambrian explosion of languages, frameworks, and libraries, etc., and layers upon layers of abstraction and indirection between you and the machine, plus countless dependencies, package managers, containers, etc., all of which are constantly changing and shifting out from under you, is baffling even to professional developers.
Luckily, it is easier to find documentation, tutorials, and other actual people to ask about stuff. But also a lot of that is quickly outdated, faddish and evangelical, just assumes that you already know 500 other things, or assumes that you know absolutely nothing, so only covers the barest basics.
So it's really still more difficult than just picking up a book about C, QBASIC, Turbo Pascal, or Visual Basic and getting started was back in the day.