That's not a valid criticism if you have intent and will to learn.
As for your monads example, getting into functional programming via things like CLisp, Erlang, Haskell, and the like will expose you to lambda calc pretty darn quick. And learning how monads work is near the beginning of that path.
And just being inquisitive leads to a whole lot of areas that give indications on what to learn. For example, doing computer vision enforces you to learn how linear algebra works. Machine learning teaches a great deal of how statistics works. Finite State Machines have their own really interesting niches to work with. Working a crummy operator job teaches how to do automation (on the sly!).
It really depends on how you approach learning. If you're just slowly grinding away because you have to, going through a 4 year BS degree is probably better.
If one wants to learn anything in the sciences, we things like MIT Courseware, Arxiv, Libgen, SciHub, and "canihaspdf" on twitter. Yes, these are primarily pirate options - so what?
I can publicly see the course projections for any arbitrary degree, along with class titles. And many have book lists linked, so I can hunt for the books online using less legal methods. The only difficulty with some STEM learning paths is they require laboratories - those are hard/impossible to do at home and thusly necessitate academic environments. Computing, on the other hand, is easy to learn even at a Starbucks with a laptop and a phone.
What's stopping people from learning what they wish is primarily time and the will to (and the fact that school does a great job at beating the will to learn out).
As for your monads example, getting into functional programming via things like CLisp, Erlang, Haskell, and the like will expose you to lambda calc pretty darn quick. And learning how monads work is near the beginning of that path.
And just being inquisitive leads to a whole lot of areas that give indications on what to learn. For example, doing computer vision enforces you to learn how linear algebra works. Machine learning teaches a great deal of how statistics works. Finite State Machines have their own really interesting niches to work with. Working a crummy operator job teaches how to do automation (on the sly!).
It really depends on how you approach learning. If you're just slowly grinding away because you have to, going through a 4 year BS degree is probably better.