

Descubra más de La Naturaleza del Software
¿Ayudan los asistentes de IA a los desarrolladores novatos?
Ventajas y desventajas de usar IA para programar
Programar es difícil.
No estoy tratando de desanimar a nadie, al contrario, soy de los que creen que cualquier persona puede aprender a programar, e incluso puede reconvertirse e iniciar una nueva y exitosa carrera en el desarrollo de software.
Sin embargo, no es una tarea que se aprende un fin de semana, requiere concentración, práctica, y mucha paciencia.
Pero lo más importante es adquirir experiencia para entender por qué ciertas cosas pasan, y por qué algunas prácticas son consideradas mejores que otras.
Es por esto que quizás el exponerte, como desarrollador novato al apoyo de un asistente automático, apoyado por IA, como CoPilot, ChatGPT, o las funcionalidades de programación automática que entrega ReplIT, pueden hacer más mal que bien.
Tomas Puljak, publicó en el newsletter de CodeAnywhere una nota donde profundiza en esta cuestión.
De acuerdo al autor, los programadores novatos pueden llegar a confiar demasiado en las recomendaciones de la IA y perder la lógica y el razonamiento detrás, lo que afectará en su habilidad para resolver de manera independiente futuros problemas con el código, en incluso depurarlo. Y por supuesto no ayuda en la comprensión de los fundamentos básicos de la programación.
Otro problema es que al automatizar las tareas repetitivas, como crear casos de prueba, inspección de código, e incluso la implantación, se pierde entendimiento sobre la importancia y los matices detrás de estas labores.
Esto puede provocar que los programadores inexpertos no sepan cómo probar su código en profundidad, o cómo realizar una revisión adecuada, o incluso cómo pasar a producción su código.
El uso de estas herramientas tampoco contribuye a la motivación de los programadores, pues no sentirán el mismo sentido de orgullo y satisfacción que surge al resolver un problema de manera independiente.
Por último, nos dice el autor del artículo, los novatos sienten un falso sentido de seguridad. Confían en que el código completado con la ayuda del asistente inteligente es correcto porque este no señala que existan errores, pero eso no significa que este código no presente fallo en ejecución.
Producto de todo esto, el código que terminan entregando es de calidad inferior y tendrán dificultad en darse cuenta cuáles son los problemas y hacer las correcciones.
La IA nos entrega herramientas poderosas que pueden ser muy útiles en las manos de un programador profesional y con experiencia, pues la automatización de tareas tediosas se agradece, y la programación está llena de estas, pero este beneficio requiere de un grado de experiencia avanzado, en manos inexpertas puede llegar a ser una receta para el desastre.
Las automatizaciones sin un entendimiento detrás, sin una capacidad de aplicar criterio y sin los años de experiencia, puede afectar seriamente la calidad e incluso la seguridad de tu base de código.
Así que si eres un programador aprendiz te pido que tengas paciencia, primero conoce bien tu arte, domínalo y sobre todo adquiere experiencia, y cuando ya la tengas podrás juzgar el aporte que estas herramientas dan a tu trabajo.
Si eres un manager, recuerda (o si no estás enterado) que hacer software es difícil. Siempre está la tentación de aumentar la productividad de los programadores imponiéndoles nuevas herramientas, que muchas veces terminan interponiéndose en su trabajo más que ayudándoles. El incorporar asistentes inteligentes puede estar muy bien, pero debe ser una decisión meditada y ojalá basada en una comprobación intensiva y meticulosa en terreno.
¿Qué opinas?, me agradaría conocer tu experiencia con asistentes inteligentes de programación, y también conocer tus opiniones sobre estas consideraciones que he expuesto. Te invito a compartir este texto con tus colegas y amigos, y a suscribirte y continuar esta conversación.
¿Ayudan los asistentes de IA a los desarrolladores novatos?
como tal no soy un novato, pero si soy bien junior en Rust, y usar ChatGPT me ayudo a entender como se crean unos patrones de DDD en ese lenguaje