27 puntos por GN⁺ 2024-12-07 | 12 comentarios | Compartir por WhatsApp
  • Hay dos patrones principales en cómo los desarrolladores usan la IA
    • Bootstrappers:
      • Usan herramientas como Bolt, v0 y screenshot-to-code AI para generar rápidamente prototipos iniciales.
      • Parten de un diseño o un concepto y usan la IA para crear la base inicial de código, desarrollando un prototipo funcional en cuestión de horas o días
    • Iteradores:
      • Usan herramientas como Cursor, Cline, Copilot y WindSurf en el desarrollo cotidiano para autocompletar código, hacer refactorizaciones complejas y generar pruebas y documentación

Diferencias en el uso de la IA entre desarrolladores experimentados y principiantes

  • Desarrolladores experimentados: refactorizan continuamente el código sugerido por la IA, manejan casos límite, refuerzan las definiciones de tipos y revisan las decisiones de arquitectura
  • Desarrolladores principiantes: tienden a aceptar la salida de la IA tal cual, con el riesgo de crear código como un "castillo de naipes" que puede fallar en entornos reales

La paradoja de las herramientas de IA: la paradoja del conocimiento

  • Desarrolladores experimentados: usan la IA para acelerar tareas que ya saben hacer
  • Desarrolladores principiantes: intentan usar la IA para aprender qué deberían hacer
  • Resultado: la efectividad del uso de la IA cambia drásticamente según el nivel de experiencia

El problema del 70% al usar herramientas de programación con IA siendo no experto

  • Avance inicial: con herramientas de IA se puede implementar rápidamente el 70% de la funcionalidad deseada
  • 30% restante: al intentar corregir pequeños bugs surgen nuevos problemas, y al tratar de resolverlos se pueden generar aún más, entrando en un círculo vicioso

Estrategias para usar eficazmente las herramientas de IA

  • Patrón de borrador con IA: generar una implementación base con IA y luego revisarla y refactorizarla manualmente
  • Usar la IA como herramienta de aprendizaje: entender el código generado por la IA mediante una conversación continua, aprender junto con ello conceptos básicos de programación y acumular conocimiento gradualmente
  • Reconocer los límites de la IA: las herramientas de IA son útiles para desarrollar prototipos, apoyar el aprendizaje y validar ideas, pero para crear software mantenible y listo para producción sigue siendo necesario contar con conocimientos reales de ingeniería

El auge de la ingeniería de software agéntica

  • Sistemas agénticos: están evolucionando más allá de responder órdenes, hacia sistemas capaces de planificar, ejecutar e iterar
  • Perspectiva futura: la IA no está reemplazando a los desarrolladores, sino avanzando hacia un rol de colaborador cada vez más proactivo, resolviendo problemas de forma autónoma mientras respeta la guía y la experiencia humanas
  • La IA ya ayuda a implementar patrones conocidos, crear prototipos de ideas rápidamente y explorar distintos enfoques
  • Automatiza tareas de programación repetitivas y rutinarias, permitiendo concentrarse en problemas más interesantes

Precauciones al usar herramientas de IA

  • Importancia de la experiencia de usuario: con IA se pueden crear demos rápidamente, pero si no se manejan con cuidado los mensajes de error, los casos límite y los estados de la UI que pueden surgir cuando lo usen personas reales, eso puede generar una mala experiencia
  • El resurgimiento de la artesanía:
    • Aunque la IA ha acelerado el desarrollo de software, existe el riesgo de perder el arte de crear experiencias con verdadera calidad de producto para el consumidor.
    • Las herramientas de IA pueden encargarse de las tareas rutinarias de programación para que los desarrolladores se concentren en los detalles importantes.

Conclusión

  • El papel de la IA:
    • La IA no se trata de escribir más código más rápido, sino de ayudar a construir mejor software
    • La IA no mejora de forma drástica la calidad del software.
  • Las partes difíciles del desarrollo de software siguen requiriendo juicio humano.
  • La IA permite explorar rápidamente para encontrar mejores soluciones, pero no puede reemplazar las buenas prácticas de software.
  • Responsabilidad humana: sigue siendo tarea de las personas usar la IA con criterio para mantener los principios de ingeniería y mejorar la calidad del software

12 comentarios

 
dbs0829 2024-12-10

Está bien aprovechar la tecnología, pero me preocupa que haya demasiadas personas que hasta le delegan el pensamiento, y eso se nota aún más, sobre todo, cuando voy a temas de educación. Sinceramente, no me gustaría trabajar con personas así.

 
kandk 2024-12-09

Tal vez sea parecido a la discusión de que los IDE arruinan a los desarrolladores...

 
savvykang 2024-12-07

Estoy cansado de corregir el código generado por IA de los clientes
Cuando la IA empieza a tomar decisiones, parece que ya no hay salida.

 
iolothebard 2024-12-07

Parece que mejora cuando le das retroalimentación a la IA… pero en algún momento se rompe. Hace falta saber detectar ese momento. Y cuando llegue, hay que elegir si dejas la IA o empiezas de nuevo.

 
yadameda 2024-12-07

¿Cómo quedaría más natural traducir production-ready (listo para producción) en el texto principal?

Nivel listo para entrar en servicio real
Nivel de producto

 
kandk 2024-12-09

¡Listo para el lanzamiento!

 
binaryeast 2024-12-08

Yo normalmente lo traduzco como listo para lanzar o preparado para el lanzamiento.

 
jhj0517 2024-12-08

"Listo para lanzar" suena bien, ¡me gusta!

 
bus710 2024-12-08

"Listo para desplegarse" (ya sea para uso real o para clientes) ¿qué tal suena?

 
savvykang 2024-12-07

¿Qué tal con uno que ha sido validado en la práctica?

 
soomtong 2024-12-09

Parece que para validar en condiciones reales se usa mucho la expresión battle tested.

 
GN⁺ 2024-12-07
Opinión de Hacker News
  • La IA, al igual que muchas herramientas del pasado, intentó reemplazar parte de la programación. Pero el trabajo esencial sigue requiriendo el cerebro humano

    • La IA no puede realizar tareas esenciales como gestionar la complejidad
    • La IA puede conversar en inglés, así que es más flexible que intentos anteriores, pero aun así tiene límites para resolver problemas fundamentales
  • La IA es como un desarrollador junior entusiasta del equipo

    • Tanto los desarrolladores junior como las herramientas de IA tienden a escribir código con muchos errores y demasiado verboso
    • Como la IA no puede aprender a partir de la retroalimentación, hay que seguir revisando los mismos errores repetitivos
  • Se pudieron desarrollar nuevas herramientas rápidamente usando herramientas de IA

    • Gracias a la IA, tareas que habrían tomado días se completaron en unas pocas horas
    • Aunque la IA haya hecho el 70% o el 42.5% del trabajo total, fue una gran mejora
  • Para los desarrolladores junior, la IA es un arma de doble filo

    • Si usan la IA como atajo para aprender, terminan saltándose el aprendizaje
    • Pero si la usan como mentor, puede permitir un aprendizaje más profundo
    • Si la IA reemplaza el trabajo de los desarrolladores junior, podrían surgir problemas de contratación
  • El patrón de "confía, pero verifica" es importante

    • Si el código escrito por la IA compila y pasa los casos de prueba, es una señal positiva
    • Por ejemplo, existe un proyecto que hizo bindings en Python para csscolorparser de Rust
  • La IA puede escribir código rápido, pero eso no acelera el proceso de aprendizaje

    • Con ayuda de la IA se puede avanzar más rápido, pero aun así lleva tiempo escribir código bien estructurado
  • Copilot falla en tareas complejas

    • La IA muestra límites en su capacidad de escalar
    • En el futuro harán falta tecnologías como la computación cuántica
  • GenAI puede ofrecer resultados profundos en soluciones con requisitos bien conocidos

    • En problemas complejos, solo logra alrededor de un 50% de efectividad
    • Se está usando un método de crear una lista detallada de tareas y resolver cada una por separado
  • Es importante verificar el trabajo de la IA

    • El código sugerido por la IA podía ejecutarse, pero estaba usando una biblioteca con problemas de seguridad
    • Aunque el código de la IA funcione, sigue siendo necesario validarlo
  • Es difícil encontrar en la práctica a personas que realmente hayan mejorado mucho su productividad con IA

    • Las herramientas de IA son convenientes, pero solo son útiles para algunas partes de la programación