Do we still need to maintain comments in general-purpose scripting language? Is good code code that doesn't need comments? What are the most useful comments in code that you've seen?
Comments are a gift to future you. When you pick up the code again after 6 months/years/however-long-in-the-future and it looks like something you've never seen before, the comments you left should be notes you need to build context around what's in the code and (sometimes more importantly) what's NOT in the code.
This is one side, and this is something that I had in mind. However, I found that there is another popular opinion (1): that in reality, commented code is harmless. The problem is that it's messy and makes it difficult to read, etc.
I have heard devs (typically on the greener side) make the argument that comments in code are bad because they need to be maintained along with the code they're commenting on. It's quite common for devs to neglect this, leading to comments that are no longer correct, and an incorrect comment is worse than no comment.
The argument touches on truths, but in my opinion pretty seriously overstates the problem. Good comments tell you things like why a design decision was made, what hidden assumptions the code is relying on, etc. Things that don't often change unless refactoring is happening. The benefit of good comments is so large that, in my opinion, they are well worth this cost.
The same devs are often also of the opinion that writing code in a self-documenting manner eliminates the need for comments. This is just incorrect. Good comments tell you what the code itself can't.
> writing code in a self-documenting manner eliminates the need for comments. This is just incorrect.
why do you think it is always incorrect? in my opinion "good comments" about design decisions, hidden assumptions the code is relying on, etc. should be included in documentation or surrounding .md files, but not in code sources. Sentences made of english words and sentences made of instructions for computer/interpreter are completely different constructions which imply separate language processing in programmer's brain. it is like mixing up english and french in a single book page -- one french sentence per 30 english is tolerable, while 30 french sentences mixed up with 30 english ones become much less informative than if they were seprarated into different pages.
I retied some time ago but I would bet a few cups of coffee that hundreds of my temporary scripts, work-around eye-sores and such are still in development, performance, staging and production.
That was just an example. There are a plethora of variations in comments, only some alluding to the script being a last minute work around. Some are about dependencies so people have some troubleshooting clues to save them time in a 3am outage. Some give history and context to specific values or settings so people do not just blindly say "oh, cargo cult" and back them out. It would take all day to list all the types of comments. Most comments are JIRA issue numbers or confluence pages but those were not optional.