In layman's terms:
- There's nothing wrong with the comments per se.
- What's wrong is writing code that needs that kindthose kind of comments.
- What's wrong is, or assuming that it's OK to write convoluted code as long as you explain it friendly in plain englishEnglish.
- Comments don't update themselves automatically when you change the code. That's why often times comments are not in sync with code.
- Comments don't make code easier to test.
- Apologizing is not bad. What you did that requires apologizing for (writing code that isn't easily understandable) is bad.
- A programmer that is capable of writing simple code to solve a complex problem is better than one that writes complex code and then writes a long comment explaining what his code does.
Bottom line:
Explaining yourself is good, not needing to do so is better.