IMHO, keep it simple. Teach them in a well understood and limited environment that will expose them to some of the pain points (but not enough to totally ruin their day).
For this reason I also reccomend C, though I come from embedded / systems programming, not webdev or data science. Giving C a bit of a critical look over, the main pain points are:
No inbuilt package management (you'll need to learn other tools alongside it like GNU make)
Types (at least for me) felt really scary when I was learning it.
Pointers are... An experience in and of themselves. I'd say this is the part of the language I really wouldn't want to force on a beginner, but pointers (in my experience) are such a core part of lower level programming, even with other languages. You NEED to grasp your memory model and how it relates to C or you're fscked. I'm still trying to think over a good way to teach pointers. Maybe teach a safe subset of their behavior first, treating them more like a reference in java. Avoid freaky pointer math.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.