In my opinion, hidden controls aren’t bad per se. But they are something you have to learn to use. That makes them generally worse for beginners and (hopefully) better for experts. It’s a trade off and sometimes getting users to learn your UI is the right decision. I’m glad my code editor puts so much power at my fingertips. I’m glad git is so powerful. I don’t want a simplified version of git if it means giving up some of its power.
That said, I think we have gone way too far toward custom per-app controls. If you’re going to force users to learn your UI conventions, those learnings should apply to other applications on the same platform. Old platforms like the palm were amazing for this - custom controls were incredibly rare. When you learned to use a palm pilot, you could use all the apps on it.