I try to write comments whenever what the code isn’t obvious on its own. A “never write comments” proponent might argue that you should never write code that isn’t obvious on its own, but that doesn’t always work in practice
Sometimes you have to write cryptic code for performance reasons
Sometimes you have to deal with unintuitive edge cases
Sometimes you have to work around bugs in 3rd party code
Sometimes you are dealing with a problem that is inherently complex or unintuitive, no matter how you put it in to code
I try to write comments whenever what the code isn’t obvious on its own. A “never write comments” proponent might argue that you should never write code that isn’t obvious on its own, but that doesn’t always work in practice