A los desarrolladores de software se les fue de las manos cómo lo bautizan. Y ahora todos pagamos un ‘impuesto cognitivo’ por ello

A los desarrolladores de software se les fue de las manos cómo lo bautizan. Y ahora todos pagamos un 'impuesto cognitivo' por ello

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í.

Muhammed no tiene claro cuando comenzó el problema, pero señala que la deriva se aceleró con dos fenómenos: el auge de la cultura startup y la multiplicación del software abierto en plataformas como GitHub.

Nombrar un producto de consumo con una palabra llamativa tiene sentido cuando se invierten millones en marketing y posicionamiento. ‘Google’ podía permitirse ser una palabra sin significado previo porque se convirtió en verbo a base de omnipresencia. Pero una librería técnica con unas pocas decenas o cientos de usuarios no tiene ese colchón cultural.

Aun así, muchos desarrolladores empezaron a imitar ese estilo: el resultado es un ecosistema saturado de nombres que no describen nada y que obligan a todos los demás a hacer trabajo extra: cuando alguien se encuentra con una dependencia llamada ‘libsodium’, debe detenerse y preguntarse «¿De qué va esto? ¿Criptografía? ¿Por qué ‘sodio’? ¿Es algún chiste químico?».

Ese pequeño esfuerzo mental exige sólo unos segundos, es cierto, pero en un proyecto moderno, con decenas o cientos de dependencias, esos segundos se multiplican. A lo largo de una carrera profesional, conlleva montañas de esfuerzo mental que no se dedica a resolver problemas reales, sino a descifrar etiquetas arbitrarias.

El otro punto de vista

En los foros de HackerNews, sin embargo, no todo el mundo acepta que haya habido una ‘edad dorada’ de buenos nombres que luego se perdió. De hecho, una de las respuestas más votadas lo resume con una frase demoledora: 

«A los desarrolladores no ‘se nos fue de las manos’, nunca lo tuvimos entre manos y punto».

Una de las primeras reacciones del foro es desmontar la idealización de los nombres ‘clásicos’ de Unix y del software temprano. Se mencionan ejemplos como:

  • GNU, un acrónimo recursivo (es decir, que se incluye a sí mismo:»GNU’s Not Unix»).
  • awk, iniciales de apellidos (por sus creadores Aho, Weinberger y Kernighan).
  • dd, quizá el caso más extremo: nadie parece ponerse de acuerdo sobre qué significa realmente.

Otros reconocen que no todos on nombres que carezcan del todo de sentido. pero que muchos solo funcionan dentro de un contexto histórico y cultural muy específico… y que si no lo conoces, el nombre deja de ser una pista y se convierte en un jeroglífico. El caso de la app ‘Bison’ (Bisonte) resulta paradigmático: es la versión GNU de Yacc (‘Yet Another Compiler-Compiler’), que suena igual que ‘yak’ (un animal emparentado con el bisonte).

Familiaridad y claridad no son lo mismo

Una idea que se repite en el debate es que la sensación de algo sea un ‘buen nombre’ suele ser retrospectiva: cuando una herramienta se usa durante años, su nombre se vuelve transparente por pura costumbre, no porque sea intrínsecamente bueno.

Muchos participantes admiten sin pudor que usan aplicaciones de las antes mencionadas a diario sin recordar ya —o sin haber sabido nunca— qué significan esas siglas: así, el nombre deja de ser semántico y pasa a ser un simple identificador arbitrario, como lo sería cualquier palabra inventada.

Desde esta perspectiva, el problema no es tanto el nombre como el volumen: hoy el número de herramientas, librerías y frameworks ha explotado; hay miles de proyectos nuevos cada año, y la carga cognitiva no proviene de que un nombre sea raro, sino de que hay demasiados nombres que aprender.

Antes, una persona podía conocer ‘todos’ los nombres relevantes del ecosistema Unix. Hoy eso es imposible (y también hay muchos más ecosistemas)

Marketing, buscabilidad y SEO

Otro argumento recurrente es práctico: el nombre tiene que ser único y fácil de encontrar. En un mundo dominado por buscadores (y ahora también por modelos de lenguaje), llamar a tu proyecto ‘http-client‘ puede que resulte descriptivo, pero es una opción pésima cuando pretendes que el usuario busque documentación sobre el mismo.

Esto no justifica el uso de nombres completamente arbitrarios, claro… pero explica por qué muchos desarrolladores buscan palabras distintivas, incluso a costa de claridad inmediata.

¿Entonces no hay problema?

No exactamente. Aunque muchos participantes consideran exagerada la queja original, también hay un consenso implícito: nombrar cosas es difícil, y hacerlo bien es raro.

Algunos comentarios rescatan un punto intermedio muy interesante: los nombres funcionan mejor cuando hay una relación, aunque sea metafórica, con lo que hace la herramienta. Bison funciona porque es “GNU Yacc”; sodium porque viene de NaCl; grep porque remite a una acción concreta dentro de ed.

El problema surge cuando la relación desaparece por completo y el nombre se convierte en una ocurrencia privada sin anclaje compartido.

Imagen | Marcos Merino mediante IA

En Xataka | Los números de versiones son un disparate: por qué unas aplicaciones van por la 1.0 y otras por la 100.0


La noticia

A los desarrolladores de software se les fue de las manos cómo lo bautizan. Y ahora todos pagamos un ‘impuesto cognitivo’ por ello

fue publicada originalmente en

Genbeta

por
Marcos Merino

.

Los desarrolladores con más experiencia pensaban que con IA su productividad mejoraría. Un estudio ha demostrado que es al revés

Los desarrolladores con más experiencia pensaban que con IA su productividad mejoraría. Un estudio ha demostrado que es al revés

Si hay una profesión donde la IA está marcando la diferencia desde ya, esa es en la programación. Mientras que el creador de Stable Diffusion tiene claro que en pocos años ya no harán falta devs humanos y el paradigma de los lenguajes de programación más demandados parece dejar paso a otras formas de picar código como simplemente hablar con una máquina o vibe coding, la realidad es que a día de hoy y con conocimientos técnicos de programación, cabría esperar que un dev con experiencia y la ayuda de la IA disparara su productividad.

Pues no. Y de hecho ya hay un estudio que evidencia justo lo contrario, como  explica Reuters: la IA no solo no mejoró sus resultados sino que los empeoró, algo que sorprendió incluso al propio equipo de investigación. Además lo hizo de forma tan sutil que ni siquiera los devs se percataron. El estudio no habla de fallos graves o críticos, pero si de un efecto: la lentitud. Sí, el trabajo iba más lento con la IA que sin ella.

Cuando usar la IA no implica mejorar la productividad

Antes de empezar con este estudio, todo el mundo tenía claro que con la inteligencia artificial iban a ahorrar tiempo. Y hasta dieron cifras: terminar su labor un 24% más rápido, según su experiencia y las herramientas empleadas. De hecho al terminar seguían pensándolo, estimando un 20% más de rapidez, ya que según sus palabras gracias a la IA habían avanzado mediante un flujo de trabajo más ágil,  sin bloqueos ni interrupciones.

Nada más lejos de la realidad: les había costado mucho más, concretamente un 19% de incremento medio total con la prueba realizada por METR, que no es poco. Llama la atención porque según este equipo de devs estaban desempeñando tareas reales esenciales como corrección de bugs, nuevas funciones, refactorizaciones… cosas que hacen a diario y no tareas diseñadas para desafiar a la IA.

La cifra y el resultado sorprendió a todo el mundo, especialmente habida cuenta que los devs no eran novatos, sino que tenían experiencia, familiaridad con las tareas y sus repositorios y lo que estos albergaban para ir al grano. Estaban en su salsa, pero ni con esas la IA les hizo su trabajo más rápido, sino que lo ralentizó.

¿Por qué la IA les hizo ir más lentos? Buena parte de la razón por la que las herramientas con IA fueron un lastre es su forma de trabajar: sus sugerencias no eran del todo incorrectas, pero sí imprecisas. Es decir, iban bien encaminadas pero requerían ajustes, lo que implica un análisis a fondo de la solución propuesta para implementar pequeñas pero importantes correcciones, que había que comprobar después y volver a empezar. Lo que en un principio parecía una ayuda se transformó en un proceso intermedio más.

Así que esa sensación de fluidez no era real. Sí, tenían una base sobre la que empezar, pero rara era la vez en la que esa base funcionaba tal cual. Requería de desmenuzarla, entender qué quería decir el modelo, comparación con lo existente y reconstrucción para convertirla en funcional a la altura de lo requerido. Avanzar más rápido era una ilusión que se desvanecía a la hora de compilar, hacer pruebas o revisiones del código generado.

Cursor

Pese a ello, muchos de los participantes del estudio continúan empleando esas mismas herramientas en sus flujos de trabajo diario. No lo hacen porque les ahorre tiempo, como ellos mismos pudieron comprobar, sino porque el trabajo es más llevadero así.

Para este estudio principalmente usaron Cursor, que integra modelos de lenguaje avanzados como Claude 3.5 y 3.7 Sonnet y que permite la escritura y revisión del código sobre el entorno de desarrollo de forma directa. No es que Cursor haga todo por ti, pero sí que es un buen acompañamiento a la hora de la ardua tarea de programar pese a no ser lo más eficiente.

Al fin y al cabo la IA es una valiosa herramienta que ya está transformando el mercado laboral, si bien no afecta ni ayuda a todo el mundo por igual. Sin ir más lejos su incursión en la industria está siguiendo la estrategia de avance del cangrejo, dando un paso hacia adelante y otro hacia atrás: hay empresas que tras recortar trabajadores y usar IA en su lugar, han tenido que recular.

En Genbeta | Bill Gates cuenta cómo consiguió convertirse en un gran desarrollador: este es su principal consejo

Portada | Foto de Sigmund en Unsplash


La noticia

Los desarrolladores con más experiencia pensaban que con IA su productividad mejoraría. Un estudio ha demostrado que es al revés

fue publicada originalmente en

Genbeta

por
Eva R. de Luis

.

15 desarrolladores españoles responden: sus plataformas favoritas para aprender lenguajes de programación

15 desarrolladores españoles responden: sus plataformas favoritas para aprender lenguajes de programación

Mientras que hace unas semanas hablamos con personas expertas en programación en España sobre los lenguajes que más nos recomendaban aprender (y según los intereses de cada quién), hoy les hemos pedido ayuda para que nos recomienden las mejores plataformas para aprender lenguajes de programación.


Continuar leyendo «15 desarrolladores españoles responden: sus plataformas favoritas para aprender lenguajes de programación»