¿Sustituirá la IA al desarrollador?

La IA está revolucionando el desarrollo de software. Aunque no reemplaza a los desarrolladores, mejora la calidad del código y reduce la deuda técnica en sistemas heredados. Descubre su papel crucial en la industria tecnológica y cuales son las herramientas más convenientes para tu squad.

¿Sustituirá la IA al desarrollador?

Desde que comencé mi carrera como desarrollador, incluso antes en la carrera, ya nos amenazaban los futurólogos, normalmente profesionales de "negocio", diciendonos que nuestra profesión iba a desaparecer.. primero con las herramientas de autor... luego con el low-code, después el no-code y hace 6 meses los de recursos humanos de una gran startup unicornio nos advertían que nuestras tarifas iban a caer.. bla bla bla...

La cruda realidad es que la necesidad de desarrolladores (que no programadores...ver artículo) se ha incrementado, y las tarifas incluso han subido este último año. Puede que en el año pasado el número de proyectos se redujera y eso  produjo mayor oferta de desarrolladores disponibles, pero aun así no eran suficientes para la gran demanda existente... entre otras cosas para "refactorizar" y reducir la deuda técnica existente.

La IA está siendo un gran aliado de los desarrolladores, ayudando a resolver problemas de expertise, ayudando a analizar y a prevenir errores, pero aún está por ver que sea capaz algún año de sustituir a un desarrollador.

¿Cual es el enfoque actual de la IA en nuestro mundo?

Principalmente intenta facilitar la revisión del código, advirtiendo de malas prácticas, y sugiriendo nuevas pruebas unitarias. Sin embargo, el alcance actual de la IA está todavía en entender ese código propuesto y revisarlo buscando entender su lógica y establecer si cumple o no patrones. Esto obviamente, mejorará mucho la calidad del código en producción, y ayudará en algo fundamental y prioritario hoy día: reducir la deuda técnica del código legacy que corre en la mayoría de empresas servicios críticos.

Cuando una IA evalua la calidad de un código intenta aplicar los criterios de "clean code": SOLID, DRY y KISS que todo desarrollador debería seguir a la hora de escribir código. Desarrollaré este punto en un nuevo artículo.. sino me extendería demasiado.

💡
Para esto recomendamos la lectura de: "Clean Code: A Handbook of Agile Software Craftsmanship" (Robert C. Martin Series)

Herramientas principales:

A continuación hacemos un breve resumen de las principales herramientas que han ido saliendo en los últimos meses:

Autocompletado de código

  • Github Copilot: asistente de codificación basado en inteligencia artificial que ayuda a los desarrolladores a escribir código de manera más rápida y eficiente. Aquí tienes algunos detalles sobre esta herramienta:  
  • TabNine: Igual que copilot,  integrado en un IDE: VSCode, IntelliJ, WebStorm, PyCharm, Eclipse, entre otros.
  • DeepSource: Es una plataforma de salud del código que ayuda a construir software mantenible y seguro mediante análisis estático, cobertura de código, análisis de infraestructura como código (IaC) y corrección automática. Se integra con herramientas como GitHub y GitLab. A diferencia de GitHub Copilot, DeepSource se enfoca en la calidad y seguridad del código, mientras que Copilot es un asistente de codificación basado en IA.
  • Amazon CodeGuru: herramienta de pruebas de seguridad de aplicaciones que combina aprendizaje automático y razonamiento automatizado para detectar y corregir vulnerabilidades en el código. A diferencia de GitHub Copilot, CodeGuru se enfoca en la seguridad y optimización del código, especialmente dentro del ecosistema AWS.
  • DeepCode: utiliza inteligencia artificial para detectar y corregir vulnerabilidades en el código. A diferencia de GitHub Copilot, DeepCode se enfoca en la calidad y seguridad del código, mientras que Copilot es un asistente de codificación basado en IA.
  • AskCodi: es una herramienta de asistencia de codificación basada en inteligencia artificial. Sus ventajas radican en su capacidad para acelerar el proceso de escritura de código, ofreciendo sugerencias contextuales y personalizadas mientras los desarrolladores trabajan en sus proyectos. Al integrarse con IDEs populares, AskCodi mejora la eficiencia y la calidad del código, permitiendo a los programadores concentrarse en la lógica de la aplicación en lugar de tareas repetitivas. Ofrece aplicaciones para generación de código, creación de pruebas unitarias, documentación, conversiones de código, entre otros.

Refactoring

  • Sourcery: realiza un autocompletado preciso, crea pruebas y docstrings y revisa código con estilo humano: Proporciona comentarios detallados en el código.

TDD

  • Testim: aprovecha el aprendizaje automático para la creación, ejecución y mantenimiento de casos de prueba automatizados. Utiliza localizadores dinámicos y aprende con cada ejecución. El resultado es una autoría súper rápida y pruebas estables que eliminan la necesidad de mantener continuamente las pruebas con cada cambio de código.
  • Diffblue: automatiza el proceso de escribir pruebas en Java. Escribe las pruebas en un formato legible por humanos y las mantiene automáticamente a medida que el código evoluciona.

Documentación del Código

  • Natural Docs: facilita la creación de documentación clara y comprensible para proyectos en múltiples lenguajes de programación.   Permite documentar código en 21 lenguajes de programación. La documentación generada es potente y visualmente agradable, con paneles independientes, menús dinámicos y resúmenes emergentes al pasar el cursor sobre los enlaces.
  • Doc2Vec: es un módulo de la biblioteca Gensim que implementa el modelo Doc2Vec para generar vectores de documentos. Doc2Vec representa cada documento como un vector, lo que es útil para tareas como búsqueda semántica o clasificación de documentos. A diferencia de Natural Docs, que se centra en la documentación, Doc2Vec se enfoca en la representación de documentos como vectores numéricos
  • CodeDocs: es una herramienta que genera y publica documentación para tu código utilizando Doxygen. CodeDocs se integra fácilmente con tus repositorios públicos de GitHub. CodeDocs está especialmente diseñado para proyectos en C++ y utiliza Doxygen para generar documentación legible y estructurada

Tras este análisis, ¿La IA sustituye al desarrollador? NO. Simplemente esta facilitando que el desarrollador cometa menos errores y dejando que perfiles menos "senior" avancen en responsabilidades quizá demasiado rápido,  con la perversa intención de reducir los costes.  ;)