Programar y escribir para la web: no tan diferentes

Leo un artículo en el blog de Ricardo Galli titulado Tratar al código fuente como un ensayo que me ha vuelto a crear una conexión entre dos temas que en principio parecen poco relacionados pero de los que se puede…

Leo un artículo en el blog de Ricardo Galli titulado Tratar al código fuente como un ensayo que me ha vuelto a crear una conexión entre dos temas que en principio parecen poco relacionados pero de los que se puede extraer alguna enseñanza común; en este caso, la programación y la redacción de textos para la web.

Código fuenteRicardo habla de un libro (Beautiful Code) y, más concretamente, de un capítulo titulado como su artículo: Treating Code As an Essay. En él se señala la similitud entre el código fuente de un programa y un ensayo, en el sentido de que, si bien en ambos casos su propósito es lo fundamental (“¿de qué se trata?”; “¿qué hace?”), no debe descuidarse el estilo en que están escritos, ya que no sirven de nada si no pueden ser interpretados por seres humanos.

A continuación rescata algunas reglas generales para escribir código de calidad:

  • Brevedad: La brevedad es una virtud, definitivamente hay un coste de lectura para el ojo humano, el código debe eliminar la información redundante
  • Familiaridad: Las personas son más conservadoras de lo que pensamos. Las curvas de apredizaje elevadas creean estrés y reducen productividad. Un lenguaje no debe obligar a los progamadores a trabajar con conceptos nuevos y complejos. No ser demasiado innovador es también una ayuda para el “código bello”.
  • Simplicidad: Si un programa es complicado de entender no puede tener belleza.
  • Separar bloques: Separar los bloques lógicos en cada función, así se facilita la lectura más rápida y en “diagonal”.
  • etc.

Inmediatamente me han venido a la memoria las reglas que da Jakob Nielsen para escribir para la web; de hecho, algunos de los puntos son prácticamente idénticos: simplicidad, brevedad, lenguaje familiar, etc. Y es que, pensándolo un poco, las situaciones no son tan diferentes:

    • Leer sobre un monitor (más cansado que sobre un papel).
    • No se lee completamente el contenido, sino que se “escanea”, ya sea buscando alguna información concreta, ya sea haciéndose una impresión general.
    • El contenido puede estar disperso en diferentes ficheros/páginas.

    Mujer escribiendo en un ordenadorPor supuesto, hay diferencias: un programa debe ser, al mismo tiempo, interpretado correctamente por una máquina, y ser inteligible para los programadores. Por otro lado, una página web, en principio, sólo tiene como público objetivo a los usuarios del portal; aunque, indirectamente, también puede ser interpretada por máquinas, i.e., los bots de indexación de buscadores. Es más: algunas páginas son bastante menos inteligibles que muchos códigos fuente. 🙂

    En cualquier caso, la idea está clara: no debemos perder de vista que es fundamental, en ambos casos, que los programas/textos que creamos deben poder ser interpretados con claridad y sencillez por humanos.

    ¿Podemos llevar más allá la analogía? Algunas ideas que se me ocurren:

    • Igual que hay estudios sobre rendimiento de lectura en páginas web, ¿existirán estudios sobre rendimiento de lectura de código? ¿Por qué no aplicar un eye-tracker a un programador estudiando el fuente de un programa? Podríamos comparar rendimientos entre diferentes estilos de programación, lenguajes, coloreado de sintaxis, etc.
    • ¿Cómo podemos usar el estilo de pirámide invertida en un programa? ¿Tiene sentido hacerlo?
    • ¿Podríamos aplicar alguna de las técnicas incluidas en los editores de código fuente y en los IDE a los editores de texto a la escritura para la web? Por ejemplo, ¿nos serviría una función que resaltara todas las repeticiones de una misma palabra en el texto para detectar qué hemos dicho anteriormente, o si la estamos utilizando demasiado? ¿Y si pudiéramos incluir fácilmente comentarios en el texto, visibles para nosotros como autores, pero no para los lectores en general?

Leave a Reply

Your email address will not be published. Required fields are marked *