Code commenting has gone through different phases over the years. Back when many languages weren't very readable, it was important to use comments. We've migrated mostly to self-documenting code, but I've never left them completely behind.
As an example, I do a fair bit of SCAD work. It's a functional language that is often not obvious--many commands are repetitive. So I'll often use headers at the least.
Even working in C, I'll often document things about parameters and return values so that I don't have to read through the code when I go to use the function. They have their place, but if you have more comments than code, that's a bad smell.