7 puntos por GN⁺ 2024-11-15 | 4 comentarios | Compartir por WhatsApp
  • Existe la creencia de que la deuda técnica (tech debt) será menos importante porque la IA ayuda a escribir y ordenar código
  • Pero en la práctica, la IA está haciendo que el costo de la deuda técnica sea aún mayor
  • En codebases con baja deuda, la mejora de velocidad de las herramientas de IA se maximiza, pero en codebases legadas con alta deuda, la eficiencia de las herramientas de IA cae drásticamente
  • Como resultado, los codebases con mucha deuda técnica están teniendo mayores dificultades para aprovechar las herramientas de IA

IA generativa vulnerable ante el código complejo

  • Las herramientas de programación con IA como Cursor o Aider reaccionan con mucha sensibilidad a la complejidad del código
    • En código donde los patrones existentes o las interfaces están bien definidos, la mejora de velocidad es grande, pero en código con flujos de control complejos y muchas dependencias, les cuesta generar respuestas válidas
  • Un codebase complejo no solo dificulta el trabajo de los modelos de IA, sino también que los desarrolladores estructuren con claridad sus solicitudes
  • Por esto, muchos desarrolladores tienden a esperar hasta que las herramientas de IA puedan manejar complejidad de nivel ‘producción’

Cómo aprovechar bien las herramientas de IA

  • En lugar de forzar el uso de herramientas de IA en codebases legados, es importante que expertos humanos hagan refactoring para que la IA pueda funcionar con fluidez
  • Si un refactoring directo implica demasiado riesgo, se pueden usar métodos como el patrón Strangler Fig para desarrollar nuevos módulos y así aprovechar de inmediato los beneficios de las herramientas de IA
  • Con esto, los equipos de desarrollo pueden enfocarse en un nivel más alto de abstracción y poner más énfasis en el diseño de arquitectura que en los detalles de implementación del código

Un enfoque amigable para la IA

  • Es importante modularizar el sistema para que las herramientas de IA puedan funcionar correctamente, y definir la interacción entre módulos mediante interfaces claras
  • Mantener una estructura modular donde las funciones clave y el flujo de datos puedan explicarse en lenguaje natural es un criterio útil
  • Si se usan herramientas como Gauge Tach para establecer visibilidad y reglas de arquitectura, es posible evolucionar hacia un sistema modularizado

La calidad define la velocidad

  • Mantener un codebase de alta calidad se ha vuelto más importante que nunca
  • Si se invierte en una arquitectura modularizada, el equipo puede obtener el máximo efecto de las herramientas de IA y construir al mismo tiempo desarrollo rápido de funciones y software de alta calidad

4 comentarios

 
savvykang 2024-11-21

Parece que la hinchazón del software es un destino inevitable.

 
koreaisbest 2024-11-21

Parece que algunos gerentes y gente así tienen la mentalidad de que la IA va a resolverlo todo porque vieron algo por ahí. ChatGPT ha generado demasiadas fantasías; creo que hace falta recalcar que todavía está en primaria. Parece necesario explicar que apenas ayuda un poco como herramienta de apoyo... Y también me identifiqué con la situación de arriba: cuando se vuelve complejo, entiende mal las cosas. Da la impresión de que no logra captar el flujo completo del proyecto.

 
kallare 2024-11-18

No hay forma de escapar de garbage in, garbage out.

 
GN⁺ 2024-11-15
Opiniones de Hacker News
  • Las empresas con bases de código jóvenes y de alta calidad reciben los mayores beneficios de las herramientas de IA generativa. En cambio, las empresas con bases de código heredadas y complejas tienen dificultades para adoptarlas. También he tenido una experiencia similar al usar LLM en proyectos personales. En cuanto una base de código se vuelve aunque sea un poco singular, el modelo comete errores y el trabajo se vuelve más difícil

  • Los LLM hacen más fáciles las tareas sencillas, pero cometen errores en las tareas difíciles. Esta brecha no se está reduciendo; más bien, se está ampliando

  • En entornos de "alta deuda", tienen dificultades para generar respuestas útiles debido a flujos de control sutiles, dependencias de largo plazo y patrones inesperados. En muchos casos, esto no representa "deuda técnica", sino la madurez de la base de código

  • En lugar de forzar a las herramientas de IA generativa a resolver problemas complejos en bases de código heredadas, los expertos humanos deberían refactorizar el código heredado para que la IA generativa pueda funcionar sin problemas

  • Está surgiendo la creencia de que la IA hará que la deuda técnica sea menos importante. Sin embargo, el código generado por IA es irregular e inconsistente, y es muy sensible a prompts específicos y a las entradas de contexto

  • El código generado por IA realmente puede tener valor, pero el enfoque de este artículo es poco realista

  • El aprendizaje automático es como una tarjeta de crédito de alto interés para la deuda técnica. Cuanto más fácil se vuelve generar código, más código se crea y mayores son los costos de mantenimiento

  • Me impresiona la capacidad de los LLM para generar código, pero el objetivo es reducir la cantidad de código

  • La IA se encarga de tareas simples y genera más código, pero produce errores difíciles de detectar. Estas herramientas pueden permitir avanzar más rápido, pero hace falta operar de otra manera

  • La IA puede ayudar a comprender y modificar código, pero copiar y pegar ciegamente no es buena idea. Siguen siendo necesarias la revisión de código, pedir explicaciones y el trabajo iterativo