On the other hand, it also makes for an often frustrating experience of "this would be so much simpler/easier if it were Haskell or at least had x", where x could be algebraic data types, higher order types, Monads, Applicative Functors, dependent types, laziness, and so on and so on...
EDIT: Addendum: Rust scratches some of that itch and seems more and more accepted in the workforce world, so at least that's a good direction we're moving towards.
I don’t know if any of those things are practical but some are useful and some make money ;)
OCaml is also instructive. It’s a little more similar to “industry languages” but definitely close to Haskell; it also has reasonably broad adoption.
Your parents (and the older version of you) that are facing the 33%+ probability of running out of money in old age will agree that solving such a problem is most definitely not a fool's errand.
Otherwise fully agree.