Tbf, i always comment my code to do a sanity check of what i am doing along the way( think rubber duck method with comments). The problem is that my writing is so cryptic i am the only one that could ever understand it.
I have to comment my code because otherwise I have no idea wth I was writing 6mo ago.
Like, I recently had to update a script I wrote 2 years ago and had thought 'this is self explanatory, I don't need to comment it's only to have me come back and have to walk the code to figure out I forgot to include an edge case that hadn't occurred yet ..
Break it up into functions with names that describe what it does, then the script becomes basically a sequence of function calls and is easier to read and troubleshoot.
Check-in rejected during code review. If you can't summarize what you are doing, then you don't really understand it. You may have to edit the comments after you have worked on it a bit and have a better understanding.