//Código limpio en tiempos de IA

Si no leemos (tanto) el código, ¿a quién le importa que esté limpio?

En desarrollo asistido por IA, el código no deja de necesitar limpieza. Por el mismo motivo de siempre, se lee muchas veces, menos por humanos, pero muchas más por agentes.|

De un tiempo a esta parte se nos bombardea con mensajes de que la IA nos quita el trabajo de escribir código. Y que el código es cuestión de máquinas. Puede que ese sea el camino. Pero, a día de hoy, genera bastantes incertidumbres. Para empezar, te propongo una pregunta incómoda:

Si no leemos el código, ¿a quién le importa que esté limpio?

Con agentes generando y modificando ficheros de forma continua, parece razonable pensar que el código limpio pierde valor.
Si la IA escribe para la IA, podríamos aceptar cualquier cosa mientras funcione. Bye bye artesano del código, welcome to the machine.

Pero nada más lejos de la realidad.


La lectura sigue superando a la escritura

Aunque no lo lea un humano en cada iteración, el código sigue siendo leído una y otra vez.

Y como decía Uncle Bob, ese proceso lector no es uno, son muchos, muchos más que el de escritura:

  • el agente que implementa una feature,
  • el agente que corrige un bug,
  • el agente que refactoriza,
  • el agente que genera tests,
  • el agente que agrega o cambia funcionalidad,
  • y tu yo del futuro cuando algo falle en producción.

La diferencia es que antes se implicaba una parte de gusto personal, y casi hasta emocional, y ahora es una cuestión de rendimiento cognitivo del sistema completo.


A los modelos les gusta el texto, dales un buen alimento.

Todos sabemos que los modelos son especialmente buenos interpretando texto. Si este es claro, consistente y con intención explícita, mejor.
Cuando el código está mezclado, ambiguo o lleno de ruido, empeora la precisión de sus cambios, aumenta la probabilidad de efectos colaterales y sube el coste de cada ciclo de corrección.

Así que sí, dales código limpio y pídeles que lo mantengan limpio. Trabajarán mejor y quizá más a gusto.


Sin exigir limpieza total demasiado pronto

Pero no conviene saturar al agente con una batería infinita de reglas de clean code durante la fase de programación inicial. Bastante tiene con traducir tu especificación natural a código que compile. Y que sea correcto, claro está.

Como diría Kent Beck, “Primero hazlo, luego haz que funcione, luego hazlo mejor”.

Para ello, puedes usar el siguiente flujo de trabajo:

  • Pide que genere el mínimo código que implemente la funcionalidad.
  • Escribe y ejecuta los tests para validar que funciona.
  • … y luego nos ocupamos de la limpieza.

Uso de la IA en la fase de limpieza

Como hemos visto, no todo debe resolverse con prompts sofisticados desde el minuto uno; más bien en una sucesión de fases. Y la limpieza también se puede fasear.

Paso A: herramientas deterministas locales primero

Empieza por lo mecánico y repetible: formateadores, linters, analizadores estáticos, reglas de estilo y complejidad.

Estas herramientas son baratas (no consumas tus preciados tokens en vano), previsibles y rápidas. Algunas solo detectan errores, otras también aplican correcciones. Pero son un buen punto de partida para la limpieza.

Si en tu stack aplica, aquí entran comandos de toda la vida:

npm run lint
make clean
cargo clippy
black .
go fmt ./...
rubocop -a
php-cs-fixer fix
dotnet format
ktlint -F

Paso B: skills especializadas después

Cuando lo básico ya está estable, entonces sí, busca y adapta skills para la limpieza. Te sugiero que eches un vistazo a skills.sh, a awesome-copilot y las elecciones de Addy Osmani para ver las skills más populares.

Te paso una lista, para que revises a ver si alguna se adapta a tu estilo y lenguaje de programación. Por ejemplo:

Ajusta y aplica rutinariamente tus skills tras cada sesión de programación. Poco a poco, el código (legado humano y robótico generado) se irá limpiando.


Conclusión

La pregunta inicial sigue siendo útil porque obliga a pensar:

“Si no lo leerá un humano, ¿importa que esté limpio?”

En mi opinión, sigue importando mucho. Incluso diría que más que nunca. Porque el código es la expresión de la solución a un problema en forma de texto.

Cuanto más claro sea ese texto, mejores decisiones tomarán los agentes y menor será el coste de iterar.

Así que, limpia tu código y el de tus agentes. Todos lo agradecerán.