If the walls had ears what would they hear? If code could speak what would it say?
When I was a wee apprentice programmer, and algorithm dinosaurs roamed amongst the primeval digital swamp, my boss at the time told me that the code should speak for itself?
Well written code should be easily read and understood. If you look at a method, and it takes longer than a few minutes to understand what it is doing, then maybe the method needs re-factoring.
Anyway, the code should speak for itself, but this will only get you so far. And sometimes a complex algorithm needs help speaking with itself.
Documentation of course. And I include commenting in this. Nothing helps the secondary audience more than a well placed comment.
So do not be afraid of comment bandwidth, or of putting in documentation tags as the code may well speak for itself, but it speaks a whole lot clearer with the help of documentation.