Although I go with the clean code concept of favour self-explaining code over comments, as code is never wrong about what it does, comments most often are, sometimes an implemented algorithm deserves an explanation, as the chosen solution is not self-evident even with all names expressing as much as they can. This is especially true if you as the creator had a hard time working out the algorithm to be efficient, fast, memory-saving or whatever code feature you were after while optimising the hell out of it - you do not want the next colleague to throw away your fine-crafted code just due to a lack of understanding.