La nueva estructura de los equipos de software que usan AI - Ronald Escalona

Clase 18 de 33Platzi Conf Bogotá 2024

Resumen

¿Cómo transformar el desarrollo de software usando AI?

El uso de la inteligencia artificial (AI) en el desarrollo de software ha revolucionado la manera en que creamos productos y gestionamos equipos. Herramientas como GitHub Copilot, Cloud Sonnet y Code Rabbit están impulsando cambios significativos. Sin embargo, para maximizar su efectividad, es esencial enfocarse en el problema que se busca solucionar y no solo en la tecnología. Aquí te contamos todo sobre cómo crear y gestionar equipos de desarrollo para lograrlo.

¿Por qué enamorarse del problema es crucial?

La clave del éxito en el desarrollo de productos con AI no es solamente dominar la tecnología, sino entender a fondo el problema que se quiere resolver. Esto significa:

  • Identificar los "pains" o problemas actuales de los usuarios.
  • Proponer soluciones que realmente generen valor.
  • Evitar la sobreingeniería en las etapas iniciales.

El AI Engineer es el encargado de liderar este enfoque, asegurándose de que la implementación de la tecnología resuelva el problema central sin complicaciones técnicas innecesarias.

¿Cuál es la importancia de construir buenas bases?

Una vez que el producto comienza a entregar valor, el siguiente paso es fortalecer su estructura:

  • Considerar aspectos de seguridad y operaciones, como la protección contra inyecciones de prompt y la preparación para posibles caídas de servicios como OpenAI o AWS Bedrock.
  • Crear sistemas robustos que optimicen la experiencia del usuario.

Aquí, entran en juego equipos multidisciplinarios, incluidos los de Platform e Infra, que trabajan juntos para mejorar las plataformas y garantizar la seguridad extendida del producto.

¿Cómo lograr la optimización del sistema de inteligencia artificial?

Finalmente, se enfoca en la optimización continua del sistema de AI para asegurar su rendimiento y precisión:

  • Tanto el Machine Learning Engineer como el AI Engineer colaboran en la evaluación y reentrenamiento de los modelos, usando herramientas como Fine Tuning y métodos de validación.
  • Mejoras constantes en tiempo de respuesta, precisión de las recomendaciones y consultas fuera del ecosistema ampliado.

Estos roles requieren un entendimiento integral de cómo funcionan los sistemas y cómo sacar el máximo provecho de las capacidades de AI y machine learning.

¿Cómo gestionar la carga cognitiva del equipo?

Gestionar la carga cognitiva es esencial para mantener la eficiencia de un equipo:

  • Carga cognitiva intrínseca: Necesaria para el trabajo diario.
  • Carga cognitiva foránea: No forma parte del núcleo del trabajo pero requiere atención.
  • Carga cognitiva germane: Enfocada en el impacto y creación de conceptos más complejos o proyectos desafiantes.

Una estrategia efectiva es minimizar la carga cognitiva innecesaria utilizando herramientas y recursos formativos para que los equipos puedan centrarse en su potencial creativo.

¿Qué estructura deben tener los equipos de desarrollo?

Al organizar equipos que trabajen en proyectos de AI, es fundamental ser flexible y orientarse a los dominios:

  • Apoyarse en la metodología de Domain Driven Design y Team Topologies para asignar roles y responsabilidades.
  • Crear equipos de Streamlines para desarrollar funcionalidades de usuario y de Complicated Subsystem para trabajos internos más complejos.

Esta dinámica promueve la eficiencia sin comprometer la innovación ni la agilidad organizacional.

Implementar AI en el desarrollo de software no solo implica tener las herramientas adecuadas, sino entender cómo constituyen nuevas oportunidades. Cada miembro del equipo juega un papel crucial en asegurar que el producto final sea efectivo, seguro y eficiente. ¡Sigamos avanzando con motivación y un enfoque claro hacia soluciones centradas en los problemas!