- knowing what there is to learn within any topic and what order you should tackle things
- whether advice about what to learn in some topic, how, and in what order is any good or not
- when to quit or stick when a certain approach doesn't seem to work
- how to test your learning, and how to assess your efficiency
- how to sustain motivation while playing the 'teacher' (i.e. co-ordinator) role when you'd rather learn, and the 'learner' role when you'd rather teach.
- how not to make certain important things be associated with pain and boredom, when approaching them in a free, open, playful mode would make them stick much better
- how to avoid or undo damaging perfectionism about resources and approach and personal standards for outcome and ability
---
Self-learning is extremely difficult and I don't advise it to anyone, although I wouldn't discourage trying it either.
The traditional didactic models you already know are the best. The problem is getting the right people to teach the right subjects, and ensuring free and open access for all people of all ages.
Ultimately effective self-teaching tends to mean you implement the classical methods but in non-traditional formats.
I find it's usually only those with top percentile proclivity or motivation for a given subject can sit down with a textbook and notebook/repl and absorb information as effectively as the rest of us would with a good teacher and engaged classmates.
If you're like me and you're unable to go to Uni but want to self-teach programming/CS, learn the minimum required to get into a related apprenticeship-style position and throw yourself into it.