“Si no usas IA en tus flujos diarios, estás en una tremenda desventaja”, es lo que le digo a la gente que trabaja conmigo. No es exagerado, hoy muchos modelos de Inteligencia Artificial ya han sido integrados en herramientas de uso diario.
Hoy les explico una de las muchas maneras que me ha afectado personalmente.
Antes de noviembre 2022, si quería programar alguna solución a un problema, esto era considerado buen flujo:
1) Diseño: me siento a pensar en el problema y hago un diseño; esto es básicamente un plan de ataque de cómo se va a desglosar el problema en partes pequeñas y los componentes que se tienen que crear para resolverlo. Normalmente esto consiste en un documento y/o diagrama de cómo se organizan estos componentes y cómo interactúan entre sí. Si el problema es algo complicado, siempre es buena idea investigar (e. g. “googlear”) qué avances han existido en esa área para no empezar con esquemas desactualizados.
2) Implementación: es la etapa de programación. Se trata de explicarle a la computadora cómo tiene que actuar en distintas situaciones. Esto se hace eligiendo un lenguaje de programación (e. g. Python, Javascript, C++, etc.) y describiendo muy detalladamente qué se tiene que hacer paso a paso. Si las instrucciones no son lo suficientemente explícitas, y/o los pasos están mal descritos, se introducen errores (conocidos como defectos o “bugs”).
3) Tests: los tests son programas adicionales que se escriben para verificar los resultados de cada componente. Consiste en simular distintas situaciones y asegurarse de recibir respuestas predecibles. Estos programas normalmente se ejecutan automáticamente cada vez que hay cualquier cambio en el código para asegurarse de que “nada se ha roto". Algunos programadores deciden escribir los tests durante la etapa de implementación; otros, al final del proceso. Lo importante es que existan.
4) Documentación: como no somos robots, es necesario describir en lenguaje de seres humanos (“lenguaje natural”), que es lo que está sucediendo en distintos componentes. A veces, los comentarios pueden ser hasta para uno mismo. Sin documentación apropiada, es común tener que modificar algo que uno escribió hace unos años y no entender qué está pasando. Existen miles de memes sobre esta premisa.
En el último año han salido herramientas para modificar agresivamente todo este proceso.
Durante la etapa de (1) Diseño podemos conversar con una chatbot acerca de lo que queremos hacer e intercambiar información sobre distintas maneras de resolver el problema. Es posible hacer dibujos con papel y lápiz, tomarle una foto y cargar el archivo al chatbot para darle más contexto de lo que queremos hacer. Para problemas simples, esto es lo único que el chatbot necesita para generar el esqueleto de los componentes y un prototipo.
La (2) Implementación, hoy, es un proceso interactivo. Así como estamos acostumbrados a usar el autocorrector cuando escribimos algo, los componentes de IA leen el contexto de lo que estamos programando y terminan la implementación. Funciona de manera similar, pero es aún más impactante. Imagínate ponerle un título a una subsección del documento y que el autocorrector te escriba la sección completa tal cual la ibas a escribir. Así como en documentos comunes tenemos un estilo de prosa personal, también existe un estilo personal de cómo programamos; el modelo de IA utiliza el resto del código que has escrito como contexto y se adapta a tu estilo de programación. Lo imita.
En ciertas herramientas, se le puede describir -en lenguaje natural- qué cambios quieres que haga directamente en tu código fuente, y el modelo de IA elige con delicadeza las líneas adecuadas que tienen que ser modificadas y hace los cambios quirúrgicamente.
Está de más decir que también puede generar (3) Tests y (4) Documentación de la misma manera.
Lo importante aquí es recalcar que, por lo menos en mi experiencia personal, el 30% de las veces se equivoca en lo que produce. En estos casos, con tal de que uno entienda lo que la IA está intentando producir, se puede interactuar sucesivamente con el chatbot y dar indicaciones más detalladas de cómo arreglar esos errores, o simplemente uno puede hacer las modificaciones directamente. El punto es que este flujo de programación con Inteligencia Artificial ya no es un acto individual, es un proceso colaborativo e iterativo.
Entendiendo que desde este mes tenemos Gemini (el modelo de Inteligencia Artificial de Google que se llamaba Bard) integrado a Google Docs (GMail/Slides/GSheets/etc.) y que Microsoft Copilot a Office 365 (Word/Excel/PowerPoint/etc.), la pregunta que uno se tiene que hacer es ¿cómo han cambiado mis flujos de trabajo? Si usas estas herramientas seguido y tus flujos no han cambiado, créeme que va a ser un problema que te va a dejar en una desventaja brutal. Advertidos estamos.