It's quite simple, actually. In most cases, the "inferior choice" comes from decisions other than the stack itself. The stack itself is not as important as long as you select something ubiquitous and mature and has plenty of support i.e. you can find lots of answers when you have to search the internet. Sure, there are cases where you need extreme performance, or a language with good data science libraries. But those requirements just narrow the choices making it easier to decide. Just pick something your team already knows, and/or something you can easily hire people for, and run with it.
The inferior choices you need to worry about are things like poor architectural descisions, or bad coding habits. These are the things that will "bite you later and trigger a rewrite". Not the stack itself.
I've seen a of lot enigeers that don't understand fundamentals and it causes a lot of problems in real-world software. These are my goto recommendations:
Code Complete: A Practical Handbook of Software Construction, Second Edition
Clean Code: A Handbook of Agile Software Craftsmanship
It's weird that you mention a book like Clean Code to a person worried about potential gaps in their CS education. I mean, they don't teach it at universities, right? Chances are, if he's self taught he knows Clean Code better than average graduate.
The inferior choices you need to worry about are things like poor architectural descisions, or bad coding habits. These are the things that will "bite you later and trigger a rewrite". Not the stack itself.