Yes: I find "what" comments critical. Naming things is hard; getting two people to agree on the concept the name represents is harder. I write "what" comments -- usually at a class, class field and method level -- religiously because it articulates the concept the class/field/method is supposed to represent. The whole point of writing code is to build a logical model of real-world concepts; if you can't articulate the concept, you can't write the code to model it. Sometimes these comments help others, but I find their greatest value comes when I finish writing the comment/documentation and compare it to the code. I often find that they don't quite match -- my code isn't doing what I just said it is -- and that forces me to either clarify the concept or fix the code. Either way, the model ... erm, system ... is better than it would be if I just relied on names alone.