Creo que el tema está bien elegido. Es "genial" escribir una línea de Perl que hace diez mil cosas a la vez, pero luego apesta cuando tienes que volver a visitarla.
En una nota diferente, inteligente o no, el código debe documentarse. Existe un desajuste inherente de impedancia entre los lenguajes de programación aceptados por la industria y los conceptos de alto nivel a los que nosotros, como humanos, estamos acostumbrados en nuestro pensamiento. El código autodocumentado simplemente no es realizable, hasta que se convierte en lenguaje natural. Incluso el código Prolog necesita ser documentado, ya que, por alto que sea, sigue siendo bastante formal.
El código imperativo de grano fino sirve para implementar planes de grano grueso; eso debe documentarse. No quiero tener que leer las 50 líneas del método cuando un comentario rápido de una hoja de ruta de 3 líneas servirá.
Edición posterior: un ejemplo más elocuente es el que trasciende las computadoras. Un libro puede estar muy bien escrito, pero a menudo queremos procesarlo en diferentes niveles de abstracción. A menudo, un resumen del libro servirá, y eso es lo que los comentarios pueden ofrecer al código. Por supuesto, un código bien abstraído puede recorrer un largo camino hacia la auto documentación, pero no puede brindarle todos los niveles de abstracción.
Y los comentarios también pueden actuar como notas al margen en un libro, cuando necesitamos explicar el proceso de razonamiento detrás de un reclamo en el texto principal sin descarrilarlo.
Con este contexto, encuentro que mi afirmación previa referente al lenguaje natural que trasciende la necesidad de comentarios es incorrecta. Incluso el lenguaje natural, como en un libro, puede prestarse a la documentación, para explicar de manera dispersa la abstracción incorporada en el texto, o para proporcionar desvíos sin descarrilar el texto principal. Con la nota de que el código bien resumido ya puede haber recorrido un largo camino hacia la autodocumentación.
Por último, pero no menos importante, los comentarios pueden ayudar al codificador a mantener un alto nivel de abstracción. Muchas veces me doy cuenta de que dos comentarios consecutivos que incluí en una lista de pasos no hablan al mismo nivel de abstracción, lo que inmediatamente garantiza una mirada crítica de lo que estoy haciendo con ese código.
Ciertos problemas trascienden la codificación y afectan la codificación al igual que otras actividades. Los comentarios pueden proporcionar esa ayuda para aclarar los fundamentos y las facetas de nuestro código, y les encuentro un compañero agradable que habla un idioma más suave para beneficiar a la persona por un cambio.