The most annoying part is the people who don't write comments.<p>Code comments are important (sometimes more important than the code), even for code that seems self describing, as in many cases putting a few notes of the "why" is super critical to prevent people from making breaking changes later. That said, I am not advocating for commenting completely self describing code lines, e.g. // for loop etc.<p>My personal work style is I first write comments as the outline of what I want to have happen then fill in the details via code. At the end, I'll remove the unnecessary comments, but by doing this it helps me make sure my code is fully commented and helps me organize my thoughts before just writing code. The worst case is I sometimes leave unnecessary comments but that's fairly minor IMO. This method works at any level of code too, e.g. modules, interfaces, files, functions etc<p>Frankly commenting this way has saved me countless hours of debugging, especially in more complex and code dense functions, algorithms is a good example. Non trivial lambdas is another good example where a good comment can save a ton of time.<p>I also require function header comments with parameter descriptions and return value details etc. Tools like doxygen are invaluable when you work with teams that need to share details on interfaces etc.