Great programmers should hopefully recognize and implement a proper balance between practicality and rigor, as necessary. They should also exhibit self-awareness and self-restraint, which sounds like the real problem for the guy you mention.
Those people were just getting a bit better at building things. They were building experience. It just so happens you found their bad code that they'll realize was terrible a few years from now.
We can't simultaneously hate our own previous code and expect everyone else to delivery perfectly when they first start (or even at mid-level).
A recent example: https://news.ycombinator.com/item?id=14267555
There's also an immense cost to not having CS fundamentals in terms of performance and wasted time; I don't want to pay someone to try and solve a version of the halting problem, or matching opening and closing delimiters with regexes.