Ahora, en esta era, tenemos acceso a varias herramientas impulsadas por IA para facilitar nuestra vida cuando necesitamos establecer una experiencia de desarrollo transformadora. La importancia de automatizar tareas mundanas como refactorizar partes de nuestro código para cumplir con los estándares de codificación; ayudar a obtener sugerencias de código para implementar funciones más simples como el acceso a la base de datos, enviar un mensaje a una cola o escribir pruebas unitarias, entre otras; agiliza significativamente nuestro flujo de trabajo de desarrollo.
Otra ventaja es que podemos integrar la IA para mejorar la depuración e implementar mejores prácticas como pruebas de seguridad automatizadas, verificaciones de cumplimiento y controles de acceso, minimizando las vulnerabilidades y reduciendo el riesgo de brechas, aumentando la calidad del código con solo unos pocos comandos.
Este tipo de herramientas no son solo para desarrolladores, otros roles de TI pueden beneficiarse; por ejemplo, los ingenieros de TI pueden aprovechar las recomendaciones para mantener la infraestructura utilizando IaC (Infraestructura como Código), los científicos de datos pueden acelerar su productividad escribiendo sus modelos de aprendizaje automático, los administradores de bases de datos pueden optimizar sus DMLs y crear procedimientos almacenados y artefactos relacionados con las mejores prácticas, los ingenieros de DevOps pueden acelerar su esfuerzo para automatizar el proceso de CI-CD.
En resumen, podemos mejorar la experiencia del desarrollador con los siguientes beneficios:
- Ser más productivos: Los desarrolladores son un 42% más productivos cuando entienden la base de código.
- Ser más innovadores: Los desarrolladores son un 50% más innovadores cuando sus herramientas y procesos son intuitivos.
- Reducir la deuda técnica: Los equipos tienen un 50% menos de deuda técnica cuando las preguntas se responden rápidamente.
Pero te estarás preguntando, ¿realmente recibiré estos beneficios? ¿Mi organización podrá medir estos beneficios? ¿Mis ingenieros podrán maximizar su productividad con estas herramientas? ¿Requieren capacitación técnica?
Hablemos de algunas consideraciones:
- Estándares de Desarrollo
Necesitamos saber qué esperar de las herramientas; si no conocemos al menos lo básico en términos de estándares de desarrollo de código, recibiremos recomendaciones, confiando en que la herramienta está recomendando “la mejor práctica”. Por eso es tan importante tener una definición de cómo usar los marcos de pruebas unitarias, cuándo y cómo usar las pruebas de carga, las mejores prácticas para mantener nuestro código seguro, mantenible, con un rendimiento confiable, patrones de diseño para resolver problemas técnicos.
Esto nos ayudará a tener esta base técnica y trabajar en comandos que incluyan esas definiciones y estándares, exponer estos estándares de desarrollo de código en un sitio wiki en tu organización con algunos ejemplos de comandos, esto aumentará las posibilidades de que estas herramientas recomienden mejores soluciones, de lo contrario, terminaremos aceptando lo que estas herramientas recomienden.
- Estándares de Seguridad en el Desarrollo
Conocer los principales estándares de vulnerabilidades como OWASP o CVE y tener una definición de qué estándares podrían aplicarse a tus soluciones es un activo valioso para tus equipos de desarrollo. Ejecutar análisis de amenazas en tus soluciones puede darte una idea de qué considerar para pedir a estas herramientas de IA en tus comandos para recibir mejores recomendaciones; y te ayudará a definir qué estándares necesitas validar en tu proceso de desarrollo.
Herramientas como “GitHub Advanced Security” con “Copilot Autofix” pueden ser especialmente útiles y prácticas, pero a veces no todas las amenazas y estándares que se utilizaron para entrenar estas herramientas se aplican a tus soluciones y terminarás aceptando lo que la herramienta recomiende nuevamente.
Asegúrate de tener esta definición antes de adoptar estas herramientas en tu proceso de desarrollo, esto te ayudará a crear comandos más efectivos cuando estés construyendo tus aplicaciones y establecer los estándares de seguridad adecuados para validar en tu análisis estático de seguridad en tu flujo de trabajo de CI-CD.
- Capacitación Técnica
Estas herramientas de codificación con IA requieren capacitación técnica, y no solo para usarlas, considera también proporcionar capacitación en ingeniería de comandos; crea comunidades internas para compartir contenido que explique cómo usar las nuevas características de la herramienta y comandos útiles que se apliquen a tus soluciones, crea desafíos internos que incentiven el uso de estas herramientas.
Con esta recomendación, puedes maximizar la adopción de las herramientas y tener una mejor aceptación por parte de los desarrolladores de tu organización.
- Medición de Métricas de Productividad del Desarrollador
“Lo que es medible se puede mejorar”, tener al menos una base básica para medir la productividad es un punto clave para ver si este tipo de herramientas están impactando en la productividad del desarrollador. Considera no usar los KPIs tradicionales, adopta marcos como DORA o SPACE que te den una combinación de perspectivas (encuestas, métricas generadas por herramientas ALM como GitHub); si estás comenzando a adoptar estos marcos de medición de productividad, mantenlo simple, usa 2 o 3 métricas en cada categoría, y más tarde, si es útil para tu equipo, agrega más factores y métricas.
Con esta información, podrás medir el ROI y cómo está impactando el uso de estas herramientas en tu organización.
- Requisitos de la Cadena de Herramientas
Tener estas herramientas integradas en tu IDE, herramienta ALM y controles de CI-CD te ayudará a tener una experiencia unificada; herramientas como GitHub proporcionan estas integraciones en IDEs como Visual Studio Code, en su portal, aplicación móvil, revisión de solicitudes de extracción y análisis de seguridad en GitHub Advanced Security.
Tomar en cuenta estas consideraciones te ayudará a establecer una base sólida para realmente beneficiarte de las herramientas de codificación con IA en tu proceso de desarrollo.