pAIr coding y AId coding frente a vibe coding
Una reflexión sobre el desarrollo asistido por IA, los agentes inteligentes y la ética
En el pAIr coding la IA es el driver y el humano es el navegador. El navegador humano se centra en el diseño arquitectónico, la estructura modular, la dirección estratégica, la anticipación de problemas, los casos límite y los tests sistemáticos. Y a menudo frenar el ansia de programación del IA driver que quiere ponerse a generar código a toda velocidad. El objetivo del AI driver es programar a toda velocidad, detectar los errores que le señala el navegador humano y seguir sus instrucciones.
La velocidad del pAIr coding puede ser x50 respecto al pair programming humano y a diferencia de este en el pAIr coding no hay intercambio de roles. Una velocidad de x50 en el pAIr coding humano es agotador para el cerebro humano pues el AI driver genera código a una velocidad vertiginosa. Por eso conviene que el navegador humano mezcle el proyecto de pAIr coding con otras actividades diferentes. Mis medidas del x50 de velocidad ya incluyen los retrasos por esta mezcla recomendada para el navigator humano, si no se cansara el navigator humano la velocidad podría ser x100.
El vibe coding puede ser más relajante para el humano al principio, pero puede llevar a la desesperación al final. Por eso se usa vibe coding para software pequeño o de un solo uso, y pAIr coding para software grande e importante.
Pero si se carece de experiencia en el desarrollo de código entonces el vibe coding es la única alternativa pues no se puede ejercer de navigator.
El vibe coding es codificación sprint-and-stall, muy rápido al principio y la velocidad decrece con el tamaño, como programar en Excel: rapidísimo para proyectos pequeños y una pesadilla con la hoja de cálculo dos años después. Y a diferencia del vaporware, la codificación sprint-and-stall sí deja algo: veinte hojas Excel todas conectadas que nadie se atreve a tocar, solo tocando celdas a ver si sigue funcionando.
El pAIr coding es steady coding, más lento que el vibe coding sprint-and-stall la primera semana, pero más rápido en los meses siguientes, con la diferencia de velocidad creciendo cada mes.
Usa vibe coding o pAIr coding dependiendo del tamaño y criticidad del proyecto. A menor tamaño y criticidad, más vibe coding. A mayor tamaño y criticidad, más pAIr coding. Pero si no tienes ni experiencia ni conocimientos técnicos para ejercer bien tu rol de navigator humano entonces usa vibe coding.
Por ejemplo, cuando se está desarrollando código para realizar pruebas en computing forensics, código corto y rápido para tests que lo más probable es que no conduzcan a ningún sitio, usa vibe coding. Pero cuando uno de esos tests da resultados entonces conmuta al pAIr coding para que el código resultante sea claro, preciso, objetivo y pueda entregarse a las partes para que realicen las comprobaciones que procedan.
En el vibe coding puedes tener resultados al primer prompt. En el pAIr coding puedes pasarte el primer día o los dos primeros días en interacción con la IA definiendo el enfoque inicial, los requerimientos, especificaciones, definiciones, módulos, organización del código, selección del lenguaje, muestras de estilo de programación, la forma en que la IA ha de escribir los comentarios, y cómo la propia IA ha de escribir código auditable para que el navigator humano pueda verificar que la IA está haciendo exactamente lo que se le ha pedido.
Y durante todo ese tiempo la IA te preguntará con ansia cada dos por tres si ya se puede poner a programar.
Hay una tercera vía: el AId coding. El humano hace la mayor parte del trabajo, diseña, programa, comenta y prueba, pero utiliza la IA para programar aquellas piezas de especial dificultad, no tanto por su complejidad algorítmica sino por sus requerimientos técnicos. Una expresión regular, una llamada específica a una API, una rutina criptográfica, un caso límite de parsing. Los roles están intercambiados respecto al pAIr coding: aquí el humano es el desarrollador y la IA es el guru. El humano ensambla el resultado final.
Un ejemplo claro es cualquier desarrollo entregado a un cliente que va a revisar y auditar cada línea de código. El desarrollador humano es dueño del código completo y responsable de él. Pero cuando una pieza concreta requiere una experiencia técnica profunda fuera de su zona de confort, ya sea un handshaking criptográfico, una expresión regular compleja, una llamada de bajo nivel al sistema o la implementación de un protocolo específico, el AId de una IA puede salvar el desarrollo entero.
Finalmente hay una idea que merece su propio artículo. El caso extremo del vibe coding es construir agentes inteligentes que invocan a la IA en tiempo de ejecución para cada decisión. El enfoque pAIr coding es el contrario: usar la IA para construir agentes inteligentes cuya lógica ya está hardcodeada, programada, cableada en el código. Cuando el agente se equivoca puedes ir a buscar la razón y reprogramarlo. Sin alucinaciones, sin cambios de modelo, sin sorpresas preocupantes a las 3 de la mañana. Curiosamente he sido incapaz de programar agentes inteligentes de la primera forma. Siempre me salen de la segunda. Puede que sea cuestión de prudencia, capacidad explicativa, supervisión y corrección de errores. Y cuando la actividad del agente afecta a personas, de ética.
