Los días 13 y 14 de junio, desde Digital55 estuvimos presentes en el CTO Summit como patrocinadores. Entre ideas de innovación, optimización de procesos y, sobre todo, desarrollo de software, nuestro COO, Jesús Pérez, tuvo la oportunidad de dar una ponencia sobre uno de los temas más sonados este año: la Inteligencia Artificial.
Y es que, por muy ligada que esté la IA a nuestro sector, no deja de causar sorpresa e incluso cierto miedo a algunas personas que temen ser sustituidas. Es por eso que Jesús, con más de 15 años de experiencia en desarrollo y habiéndose dedicado durante los últimos 7 años a gestionar equipos de software, quiso trasladar su visión.
¿Están los programadores en riesgo por la IA?
Comenzamos rompiendo el hielo con la pregunta del millón: ¿quitará la IA el trabajo a los programadores?
Y la respuesta de Jesús fue muy clara: no. Pero sí que hay que tener en cuenta ciertos matices, y es que lo que sí va a hacer es transformar profundamente la manera en la que trabajan.
Para entender mejor en qué va a consistir esta transformación, Jesús hizo una distinción entre dos tipos de perfiles diferentes. Aquí, a pesar de que los términos puedan dar lugar a confusión, la principal distinción es el enfoque que tiene cada uno, sin tener en cuenta otros aspectos como experiencia o estudios.
Por un lado tendríamos a los “coders”. Los coders son aquellos perfiles muy especializados y muy centrados en el código como tal. Suelen ser expertos en frameworks y/o lenguajes específicos y trabajar en marcos cerrados y concretos. Esto los convierte en el perfil idóneo para tareas específicas e inmediatas y, por lo tanto, para lo que es el día a día de un desarrollo. Sin embargo, supone también que tengan una visión mucho más limitada y no lleguen a involucrarse en aspectos más genéricos y estratégicos, como pueden ser el diseño o la optimización del software.
Por otro lado, los “ingenieros”. Como ya os comentábamos, el uso del término en este contexto no tiene nada que ver con sus estudios o su formación profesional, sino con el enfoque que tienen respecto al proyecto. En este caso, son pensadores estratégicos. Hablamos de una mentalidad que abarca una comprensión completa del proyecto, involucrándose en todo el proceso, operaciones y aseguramiento de calidad. Además, son perfiles más versátiles, capaces de adaptarse y/o manejar varias tecnologías.
Hasta ahora, en un equipo de desarrollo ambos perfiles eran igual de necesarios. Pero, con vistas a futuro, interesa más que a la hora de formar un equipo nos centremos en perfiles “ingenieros”. Como veremos más adelante, de momento la IA no nos devuelve código con la misma calidad que haría un coder, pero la previsión es que siga avanzando y, en ese caso, habrá mayor demanda del tipo de perfil “ingeniero”, puesto que serán los perfiles con una visión más estratégica quienes más evolución consigan. Todos debemos adaptarnos a las herramientas y a las innovaciones para ponerlas a nuestro favor, y es ahí donde los coders verán su próximo reto.
Ventajas de la IA en desarrollo de software
En Digital55, nuestros equipos llevan un tiempo haciendo uso de herramientas de Inteligencia Artificial para mejorar su productividad y agilizar el aseguramiento de la calidad, entre otras cosas. Los resultados que estamos teniendo son bastante prometedores.
Beneficios tangibles de la IA en equipos de desarrollo
Hay determinados beneficios que son más fácilmente medibles.
La influencia de la IA en la productividad
Uno de ellos es la productividad. Y aquí debemos hacer una distinción entre si la persona que lo utiliza es un perfil junior o senior.
Los perfiles junior han visto una reducción muy notable en el tiempo que deben esperar para que se resuelva una duda. Pueden conseguir respuestas de forma más fácil, sin depender completamente del perfil senior, por lo que los bloqueos a la hora de generar código son mucho menores. Por los datos que tenemos en Digital55, en los primeros meses la productividad fue ligeramente mayor, pero nada abismal. Sin embargo, a medida que avanzaba el tiempo, cuando estos perfiles junior ya se han acostumbrado a la forma de trabajo y al uso de estas herramientas, notamos una diferencia sustancial en la cantidad de tareas que eran capaces de completar.
Con los perfiles senior pasa algo similar en cuanto a la “curva de aprendizaje”. En el inicio, la productividad aumenta de forma mínima, pero con el uso habitual va marcando una diferencia algo mayor. Si bien es cierto que en este caso la IA no supone una diferencia tan significativa como con los juniors, sí que es clave para reducir o incluso eliminar tareas rutinarias, repetitivas, etc. De esta forma, se pueden dedicar a tareas más estratégicas y/o creativas, lo que, de nuevo, está muy vinculado con la distinción que hacíamos antes entre “coders” e “ingenieros”.
Mejora en la calidad del código con la IA
Si decíamos que el código que genera la IA necesita una revisión antes de pasar a producción, ¿cómo es posible que logre mejorar la calidad? Pues es sencillo: gracias a los tests. La IA es de gran ayuda para automatizar tests y también para recibir explicaciones bastante precisas de los errores y mejoras reportados por herramientas como SonarQube. Esto, en nuestro caso, nos ha ayudado mucho a mejorar la base de código basándonos en estos tests y reducir la cantidad de errores.
Estimaciones más precisas con IA
Cuando hablamos de las estimaciones, podemos plantear dos vertientes: el uso de la propia IA como herramienta predictiva o el hecho de que, aplicando IA en el desarrollo, los tiempos están más controlados.
En algunos casos, se puede utilizar la IA como herramienta predictiva, puesto que puede analizar datos históricos de proyectos anteriores, identificar patrones y tendencias y, de este modo, prever con mayor exactitud el tiempo y los recursos necesarios para completar un proyecto. Además, permite la identificación temprana de posibles riesgos y obstáculos, lo que facilita la planificación.
Sin embargo, esto que comentamos implica la necesidad de integrar la IA en una herramienta de gestión (como puede ser Jira) o de contar con una herramienta específica. En cualquier caso, el simple hecho de que un equipo de desarrollo utilice IA en sus proyectos conlleva una mayor predictibilidad. Las desviaciones son mucho menos comunes y la productividad aumenta, con lo que se hace más sencillo cumplir los plazos.
Beneficios intangibles de la IA en equipos de desarrollo
La aplicación de Inteligencia Artificial también conlleva ventajas que, aunque no son tan fácilmente medibles por su subjetividad, son igualmente importantes.
El bienestar y, con ello, la felicidad del equipo, puede incrementar gracias a los otros beneficios que aporta la IA, como son la reducción de tareas repetitivas y monótonas. Esto les permite enfocarse en aspectos más creativos y desafiantes de su trabajo, lo cual aumenta la satisfacción laboral, reduciendo la probabilidad de desmotivación.
Además, el uso de IA puede facilitar la comunicación y la colaboración dentro del equipo. Al eliminar muchas interrupciones innecesarias, se mejora la coordinación y se reducen los intercambios no productivos entre los miembros del equipo.
Desafíos derivados de la implementación de IA en equipos de software y cómo abordarlos
Sin embargo, que existan tantas ventajas no significa que vaya todo sobre ruedas. Al fin y al cabo, son nuevas herramientas a las que es necesario adaptarse y que, como cada cambio que ha habido a lo largo de la historia, también presenta ciertos desafíos.
Capacitación del equipo en IA
Lo primordial ante cualquier cambio es la capacidad de adaptación del equipo. Y, para ello, hay que darle los medios necesarios para que puedan formarse en el uso de estas herramientas, incluyendo la competencia en su manejo y la capacidad para interpretar y ajustar las sugerencias que estas herramientas ofrecen.
Así, no hablamos solo de que sepan utilizar la herramienta, aunque ese sea el primer paso. Es importante que todos comprendan dónde la IA tiene sus puntos fuertes y débiles, dónde es más necesario que revisen en profundidad, cuáles son las mejores prácticas para aplicar la IA de forma adecuada, etc.
También se trata de darles las herramientas y las capacidades necesarias para ser adaptables a nuevas tecnologías, situaciones y metodologías. En la actualidad ya hay muchas herramientas de IA con las que se puede trabajar, pero de cara al futuro los cambios son inciertos y pueden surgir muchas otras. Por eso, es más recomendable trabajar sobre su flexibilidad y lograr que el equipo tenga una visión global que le permita adaptarse, tal como hablábamos antes al describir al perfil de “ingeniero”.
Adaptación de roles
Los roles dentro del equipo deben adaptarse para aprovechar al máximo las capacidades de la IA, asegurando al mismo tiempo que se mantenga la calidad del software producido. Esto está muy relacionado con lo que comentábamos al inicio sobre los “coders” y los “ingenieros”.
Formación a Recursos Humanos y Selección
La capacitación al equipo va más allá de dar formación a los desarrolladores. Las personas encargadas de Recursos Humanos también deben estar al tanto de qué se necesita y del impacto que tiene la IA en desarrollo para poder seleccionar a perfiles preparados para ello.
De este modo, deben comprender qué nuevas habilidades deben valorar en los procesos de selección. No solo el conocimiento y la experiencia previa con determinadas herramientas como Copilot, sino también la visión que pueda tener el perfil sobre el desarrollo, su adaptabilidad, el uso de buenas prácticas, el conocimiento en patrones de diseño y, sobre todo, su capacidad crítica. Esta última es destacable porque será la que le permita revisar y determinar si los avances aportados por la herramienta de Inteligencia Artificial están correctamente planteados o necesitan modificaciones.
Aseguramiento de la calidad
Como acabamos de comentar, aunque la IA puede generar código, este debe ser revisado antes de ser puesto en producción para asegurar que cumple con los estándares de calidad requeridos. Es importante que los miembros del equipo tengan esto muy presente y no den nada por sentado, puesto que no se le puede dejar a la IA toda la responsabilidad en cuanto a generación de código sin contar con supervisión de un experto. Debemos asegurarnos de realizar pruebas de rendimiento y carga para garantizar que el sistema generado por la IA funcione correctamente, este proceso es fundamental para asegurar así la fiabilidad y eficiencia del software que creamos.
Conocimiento de las herramientas de IA
Ya existen muchas herramientas de IA y lo previsible es que sigan surgiendo más y más. Por ello, más allá de ser capaces de utilizar una o dos de ellas, interesa distinguirlas y conocer su naturaleza, ya que este es el primer paso para lograr esa adaptabilidad que tanto hemos mencionado.
En la actualidad, principalmente diferenciamos entre herramientas de dos tipos para desarrollo de software:
- Copilots: herramientas como GitHub Copilot y Tabnine, que ofrecen sugerencias de código en tiempo real basadas en el contexto del proyecto. Estas herramientas están integradas en los entornos de desarrollo (IDEs), lo que facilita su uso y mejora la productividad.
- Chats generalistas: herramientas como ChatGPT y Gemini pueden resolver dudas y generar ejemplos de código. Sin embargo, su uso es menos eficiente por la falta de integración con el entorno de desarrollo. Son más útiles para perfiles junior con dudas genéricas, pero su alcance se queda bastante limitado para perfiles con una experiencia más extensa, cuyos problemas suelen ser mucho más específicos del proyecto.
En resumen, la IA no va a reemplazar a los programadores, pero está transformando la programación de manera profunda. Aquellos que se adapten y adopten estas nuevas herramientas estarán mejor preparados para enfrentar los desafíos y aprovechar las oportunidades que ofrece, que no solo pueden tener beneficios claros para las empresas, sino también más específicos para los profesionales.