Thus why software engineers often get a degree, buy books, pay for classes, and so forth.
The self-education threshold tends to be even higher at the beginning. Most people have no clue how to get from owning a computer to Hello World, to FizzBuzz, to simple scripts, to a well-designed and documented program.
The real failure is when people turn to university (etc.) to learn a skill, get a "QC Okay" stamp at the end - and then still can't FizzBuzz.
You need shorter feedback cycles which focus on finding and correcting errors, not monolithic course grades and monolithic degree pass/fail stickers. You wouldn't expect it to end well if you tried code a major project that way. Why would it work any better as an education plan?