Nolan Lawson: la calidad del código es más importante que la velocidad

Fuentes: Using AI to write better code more slowly

Nolan Lawson: la calidad del código es más importante que la velocidad en la era de la IA

La proliferación de herramientas de inteligencia artificial (IA) para la programación ha desatado un debate sobre la mejor manera de utilizarlas. Mientras algunos defienden una estrategia de “cañones de baratijas” (slop cannons), que prioriza la velocidad y la generación rápida de código, el desarrollador Nolan Lawson argumenta que la calidad del código es primordial, incluso si eso implica un ritmo más lento. En su reciente publicación en nolanlawson.com, Lawson presenta un enfoque alternativo que prioriza la robustez y la mejora continua del código, aprovechando la flexibilidad de los modelos de lenguaje grandes (LLMs).

El problema de la velocidad a toda costa

La tendencia actual, según Lawson, se inclina hacia la producción rápida de código de baja calidad, con la esperanza de integrarlo rápidamente en proyectos. Esta “mentalidad de cañón de baratijas” implica generar código rápidamente, abrir solicitudes de extracción (PRs) masivas y fusionarlas sin una revisión exhaustiva. Sin embargo, Lawson sostiene que esta aproximación ignora el potencial de los LLMs para generar código de alta calidad de manera más deliberada. “Los LLMs son muy flexibles”, afirma Lawson, “y se pueden utilizar tan eficazmente para escribir código de alta calidad más lentamente”.

El poder de la revisión con IA y la búsqueda de errores

Lawson destaca la importancia de la detección de errores, citando el proyecto Mythos de Anthropic como un ejemplo de la capacidad de los LLMs para identificar fallos. Mythos, un agente de IA diseñado para encontrar errores en el código, demostró ser excepcionalmente eficaz en este sentido. Lawson también ha observado que incluso modelos públicos de Anthropic y OpenAI son capaces de encontrar errores en el código no revisado, aunque con diferentes niveles de precisión. El desafío, según Lawson, no es tanto encontrar los errores, sino priorizarlos y validarlos.

Para abordar este desafío, Lawson ha desarrollado una habilidad para Claude, un modelo de lenguaje, que combina la potencia de Codex, Cursor Bugbot y él mismo. Esta habilidad, inspirada en un artículo de Milvus.io, utiliza múltiples modelos para revisar las PRs, reduciendo la probabilidad de falsos positivos y mejorando la precisión de la detección de errores. El proceso implica que cada modelo identifique los errores, que luego sean revisados y validados por Lawson, quien también realiza su propia investigación para descartar falsas alarmas. El resultado es un informe detallado que clasifica los errores por gravedad, desde fallos críticos de seguridad hasta problemas menores de rendimiento o incluso errores de estilo.

Un flujo de trabajo centrado en la calidad, no en la velocidad

El flujo de trabajo de Lawson difiere significativamente del enfoque de “vibe coding” de alta velocidad. En lugar de buscar una mayor productividad en términos de líneas de código, Lawson prioriza la calidad y la comprensión profunda del código. Su proceso implica: primero, que un agente corrija los errores críticos y de alta prioridad con su guía; luego, omitir los errores de prioridad media donde la relación costo-beneficio no justifica la corrección; y, finalmente, abandonar la PR si la cantidad de errores críticos indica que el enfoque general es incorrecto.

Esta metodología a menudo conduce a tareas tangenciales, como la escritura de pruebas unitarias y la corrección de errores preexistentes, lo que contrasta con la idea de una productividad “10x”. Lawson encuentra este enfoque gratificante, ya que mejora la salud general del código base y le permite comprender mejor sus aspectos menos evidentes. “En mi experiencia, el happy-path de una arquitectura compleja es menos interesante que sus modos de fallo”, explica Lawson, una perspectiva que refleja su enfoque en la robustez y la preparación para lo inesperado.

Un llamado a la reflexión y a la calidad

Lawson reconoce que su enfoque puede no convencer a quienes ya están convencidos de que la IA solo es útil para generar código rápidamente. Sin embargo, invita a los desarrolladores que utilizan agentes para escribir PRs extensos que apenas comprenden a sí mismos a adoptar un enfoque más lento y reflexivo. Sugiere que los desarrolladores hagan preguntas a los agentes sobre cómo funciona el código y cómo podría fallar, que generen documentación con diagramas Mermaid y que utilicen herramientas como /grill-me de Matt Pocock para comprender a fondo el código.

Si bien este enfoque puede no aumentar la productividad en términos de líneas de código y puede consumir más tokens, Lawson cree que conduce a un código mejor y a una comprensión más profunda del código base, alineándose con su objetivo de crear un código más robusto y accesible para otros desarrolladores. En última instancia, Lawson aboga por un enfoque de programación que priorice la calidad, la metodología y la mejora continua, incluso si eso significa sacrificar la velocidad.