Cuando empezamos a construir la AFP quisimos darle a la IA un papel central en el proceso de desarrollo de software.
Cada uno de los devs ya había experimentado con IA en los otros proyectos de Fintual, usándola como apoyo en el proceso. En la AFP queríamos ir más allá: necesitamos construir un software grande en un tiempo acotado. La IA no puede ser solo un apoyo; hay que darle cierto nivel de autonomía.
En un inicio no teníamos claro cuánta autonomía darle, porque no conocíamos bien qué podíamos lograr con IA. Dimos libertad para que cada dev experimentara y definiera el nivel de autonomía con su propio criterio.
Pero ahora que hemos experimentado lo suficiente y el equipo está creciendo, creemos que es tiempo de acordar cómo trabajar con IA.
Esto aprendimos usando IA en desarrollo de software
Podemos simplificar el proceso de desarrollo de software en tres principales etapas:
- Definir el problema y diseñar una solución
- Escribir el código que implementa la solución
- Revisar el output de las 2 anteriores
A partir de nuestros experimentos, llegamos a estas conclusiones sobre cada etapa:
- Diseñar y documentar: los desarrolladores de Fintual diseñan mejores soluciones que la IA, por ahora.
- Escribir código: la IA es muy buena escribiendo código. Es mucho más rápida que un humano, pero con la desventaja de que tiende a introducir más desorden y errores. Por eso, para que resulte un buen código necesitamos iteraciones pequeñas y contar con guías y restricciones para los LLMs.
- Revisión: la IA es muy buena revisando código, incluso mejor que un humano, ya que tiene más contexto (puede ver cómo encaja el código de un cambio en todo el sistema). En la revisión de diseños, en cambio, nos sirve como apoyo.
Con ese contexto, podemos concentrar nuestros esfuerzos donde –por ahora– los humanos somos mejores que la IA: en el diseño y documentación. Esto nos lleva a definir un principio fundamental que guiará nuestro trabajo:
“La documentación es un first-class citizen. Le damos la misma importancia que antes le dábamos al código y es donde enfocamos nuestros esfuerzos”.
Estamos apostando a que la capa de abstracción de los devs ya no es el código: es la documentación en markdown.
De este principio fundamental se desprenden ciertos principios básicos:
- Todo desarrollo de software parte por entender el problema, diseñar una solución y documentarla. Cualquier cambio en el código parte de un cambio en la documentación.
- La documentación la produce un humano. La IA es un apoyo: ayuda a investigar, genera diagramas y ejemplos. La IA no diseña soluciones.
- La documentación sigue una estructura similar a como estructuramos el código. Un humano debe ser capaz de mantener la documentación en su stack mental. No nos sirven archivos de documentación de miles de líneas.
- La documentación debe ser lo suficientemente completa y clara para que cuando una IA escriba el código a partir de ella - con guía humana - no genere ambigüedades en el resultado (los detalles de implementación son irrelevantes).
- El dev que genere código usando IA es el revisor principal del código y es responsable de él. Queda a su criterio qué tan profunda debe ser la revisión según cuánto confía en el código generado por la IA.
El último punto es interesante y es similar a cómo un dev hace review de otro dev: si no lo conoce, hace una revisión muy profunda, línea por línea. A medida que va revisando más y lo va conociendo, sabe cuáles son los puntos débiles y así puede enfocar su revisión en partes más específicas. Queremos desarrollar ese mismo criterio al revisar el código generado por IA.
Nuestro siguiente paso es definir una estructura común para la documentación: qué vamos a documentar y cómo lo haremos. La idea es que sea estándar para todos los devs y nos permita acercarnos a la regla número cuatro.
Si quieres compartir tu experiencia usando IA en el proceso de desarrollo de software o tienes preguntas sobre esta entrada, escríbenos a proyectoafp@fintual.com.