Durante décadas, podría decirse que las ingenierías ha compartido un principio básico: los nombres importan. Es decir, que un puente, una válvula, un compuesto químico o un instrumento quirúrgico reciben nombres que dicen algo sobre su función, su forma o su propósito. Nadie espera creatividad literaria en un manual técnico: lo que se espera es claridad. Sin embargo, según el programador Salih Muhammed, en el mundo del software algo se terminó torciendo en los últimos años.
Hoy convivimos con listados de aplicaciones, librerías de desarrollo y plataformas cloud poblados de serpientes, dioses nórdicos, animales y, en general, de palabras que no significan absolutamente nada relacionado con lo que en realidad hacen.
Esta tendencia, que a muchos puede parecerle simpática o inofensiva, según Muhammed tiene un coste muy real que pagamos con atención, memoria y esfuerzo mental. Él lo califica de ‘impuesto cognitivo’. Confucio ya hablaba de ello en sus ‘Analectas’:
«Zǐ lù dijo: Si el monarca de Wèi decidiera que el maestro se convirtiera en gobernante, ¿qué llevaría el maestro a cabo primero?»
«El maestro dijo: sería necesario rectificar los nombres«.
«Zǐ lù dijo: ¿esto harías? ¡el maestro es un pedante! ¿por qué rectificarlos?»
«El maestro dijo: Porque si los nombres no están rectificados, entonces las palabras no son eficaces; si las palabras no son eficaces, entonces los asuntos no se llevan a cabo […]».
Cuando el nombre deja de ayudar
Richard Stallman, una de las figuras históricas del software libre, señalaba en una charla reciente algo que debería resultar obvio, pero que ya no lo es: las herramientas deberían tener nombres que ayuden a recordar qué hacen.
El problema no es que exista algún nombre creativo aquí o allá. El problema es que la excepción se ha convertido en norma. Hoy es habitual escuchar descripciones técnicas que suenan más a un poema surrealista que a una arquitectura informática:
«Usamos Viper [‘víbora’] para la configuración, Cobra para la línea de comandos, Melody para los WebSockets, Casbin para permisos y Asynq para las colas de trabajo».
Desde el punto de vista del oyente, esa frase exige un esfuerzo adicional inmediato: detenerse, mapear cada nombre a su función real, consultar documentación o hacer búsquedas mentales forzadas. De todos los nombres, sólo el último tiene algo que ver con su función: Asynq es una librería para procesamiento asíncrono de tareas y colas de trabajos en Go (job queue).
En otras ingenierías esto no pasaría
Imaginemos el mismo fenómeno trasladado a otros campos. Un ingeniero civil no hablaría de reforzar un edificio con el sistema «ThunderFalcon». Un cardiólogo no diría que va a implantar un ‘Butterfly X’ en lugar de un stent coronario. Y un químico no bautiza una molécula como «Steve» para que suene gracioso.
Cualquiera que haya estudiado algo de química sabe, de hecho, que la nomenclatura de los compuestos no es algo que se deja al azar: es preferible que algo tenga un nombre largo antes de que no quede claro a qué nos estamos refiriendo.
Durante los primeros años de la informática, este mismo principio era la norma. Herramientas como ‘grep’ (global regular expression print), ‘sed’ (stream editor), ‘diff’ (difference) o ‘cat’ (concatenate) no resultaban muy líricas, pero funcionales. Los primeros lenguajes de programación también seguían esa lógica: FORTRAN, COBOL, BASIC, SQL. Incluso cuando había abreviaturas, el significado estaba ahí.
