//Vibe coding
Programar siguiendo tus vibras, a lo loco
Es lo más parecido al 'voy a tener suerte' del viejo Google. Confiar ciegamente en el algoritmo (en este caso la IA) y programar sin preocupaciones. Pero, ¿qué pasa si no funciona? |Si no vives debajo de la gran pirámide de Giza, estarás al tanto del vibe coding o programación por vibras. Incluso la Wikipedia ya tiene un artículo sobre Vibe Coding. Porque como buen neologismo, da una precisa definición de una novedosa forma de programar, que además genera posiciones pasionales enfrentadas. ¿Qué más se necesita para convertirse en una tendencia viral?
Pero, ¿es tan malo?, ¿puede resultar útil? o ¿quizá sea más dañino que un ERP en JavaScript? Ya sé, demasiadas preguntas. ¿Por qué no empezamos por darle un poco de sentidiño a este concepto?
¿Qué es el Vibe Coding después de todo?
El Vibe Coding es una forma de programar que se basa en la confianza ciega en el trabajo de tu amado modelo de IA. Es programar sin preocupaciones. Es no sentir fear of the bug. Es codificar como si no hubiera un mañana. Solos tú y la IA en una conversación larga y profunda…
Buff, para, para. Hasta yo mismo he recibido una descarga de vibraciones. Pero esto es en esencia lo que hace el Vibe Coding. Sería llevar al extremo la técnica del Chat Oriented Programming, ya tratada en este blog. Una técnica, por otro lado, imprescindible para el desarrollo con la IA en estos momentos.
Programar con IA consiste en pedir a un LLM a través de un chat que te escriba el código: una funcionalidad, una corrección, un test, una mejora. Todo se puede pedir a través de una serie de prompts. En este sentido, el Vibe Coding es una técnica más de AI-Driven Development.
Entonces, ¿qué es lo que tiene de especial y peligroso el Vibe Coding? Pues… sus usuarios. Tanto novatos como tecnófilos no profesionales se ven atraídos por el hype indisimulado de la industria y los influencers.
En el extremismo de su definición, estos, pretenden obviar completamente el código generado por la IA, y solicitarle de vuelta cuantas correcciones o mejoras se perciban como necesarias para usar el producto final. Atractivo, ¿no?
Riesgos del Vibe Coding
Y claro, esto tiene un límite. A día de hoy, los modelos de IA distan mucho de ser infalibles. Por tanto, te ves obligado a validar el trabajo de tus agentes sí o sí. Esa validación, puede hacerse de forma manual… pero tiene las patas muy cortas. Cualquier producto, incluso el más simple, tiene una cantidad de validaciones que no son fáciles de hacer sin una batería de pruebas.
Además, los incentivos de cualquier modelo son satisfacer la petición con el menor coste posible, sin importar demasiado la implementación. Y ¿a quién le importa la implementación mientras funcione? Pues al que lo tenga que mantener, claro. ¿Y si es otro agente? Pues que el dios Turing se apiade de su alma electrónica. Una aplicación realista o mínimamente exitosa requiere de un mantenimiento que sin una buena base o estructura se hace inviable.
Pero por si fuera poco, la capacidad de comprensión de tu asistente está, literalmente, limitada por el contexto de la conversación. Y, por supuesto, eso puede dejar fuera pequeños matices que realmente son importantes pero muy difíciles de especificar en un chat en tiempo real.
Termino de darle cera hablando de las especificaciones no funcionales. ¿Se han mantenido unos mínimos de seguridad? ¿Se han hecho pruebas de rendimiento y escalabilidad? No digo que sea imposible, pero, ciertamente es un reto contemplar todos esos detalles en un chat fluido para proyectos reales.
Y todo esto, suponiendo que el humano al cargo sepa siquiera que estos detalles existen e importan.
Antes que el Vibe Coding ya estaba el No Code
Porque, el Vibe Coding atrae más que nada a quienes no saben programar o aún no tienen la experiencia suficiente para entender las implicaciones de lo que están haciendo.
Para los primeros, los no programadores, creo que les da una falsa sensación de autosuficiencia que les puede atrapar en un callejón sin salida. No me entiendas mal; si tu eres uno de ellos, te digo con franqueza que no tengo ninguna posición elitista ni corporativista sobre esta profesión. Simplemente, creo que el estado actual de la tecnología ofrece soluciones mejores para ti. Como el No-Code.
¿Es tan distinto del Vibe Coding? A día de hoy sí, mucho. El No-Code es un uso inteligente de potentes y bien diseñadas herramientas para resolver problemas de negocio muy concretos. La seguridad, la arquitectura, cierta escalabilidad y el feedback inmediato, vienen de serie.
Con sus limitaciones, obtiene lo mejor de una situación de partida que hace unos años requería un desarrollo profesional, o el archivo en el servidor de los sueños.
No hay atajos para la experiencia
El otro grupo de riesgo son los programadores novatos. Estos, sabiendo programar, quizá se sienten más cómodos confiando en la IA para generar el código. Y un poco de ayuda no es que esté mal, es que al no tener la experiencia suficiente para entender las implicaciones de lo que están haciendo, se quedan cortos o puede dejar pasar detalles importantes. Y no hay atajos en esto de adquirir experiencia.
Si eres junior, te recomiendo que escojas un proyecto pequeño pero usable y lo hagas sin IA. Sí, algo más allá de un trabajo universitario o de Bootcamp. Intenta llevarlo a sus últimas consecuencias. Publícalo. Pídele a tus amigos y familiares que lo usen. Créeme, un proyecto real es la mejor forma de aprender. Y no te olvides de los tests.
Después, incorpora poco a poco la asistencia de la IA. Verás que cuanto mejor escrito esté tu código más te va a ayudar. Los patrones de diseño, las arquitecturas, las buenas prácticas, etc, están ahí por algo. Los modelos de lenguaje son excelentes replicantes de buenas o malas prácticas. Tú decides con qué los alimentas.
¿Qué es lo que se puede hacer con el Vibe Coding?
Si algo he aprendido en mis décadas de experiencia en proyectos de gran tamaño, con equipos de desarrollo numerosos, evolucionando durante años, se resume en la Ley de Murphy: “Si algo puede salir mal, saldrá mal”.
Así que más vale tomar conciencia y validar el código generado por la IA. La metodología AIDD aboga por el uso de agentes, faltaría más. Pero, con la constante supervisión del humano. Esto requiere de un esfuerzo por tu parte para dividir el problema en partes manejables. Y después fasear su implementación en tareas verificables.
Como ves, esto ya no da tan buen rollo. Pero, al menos, reduce considerablemente el esfuerzo necesario para alcanzar la misma fiabilidad y calidad que los tiempos pre-IA. Y, de cuando en cuando, puedes dejarte llevar y tener alguna sesión de Vibe Coding.
¿Qué nos depara el futuro?
Ni idea. Puede que unos años toda esta discusión sea objeto de meme. Y que los modelos de IA sean capaces de generar soluciones completas y correctas a partir de una conversación.
Puede que corrijan cualquier desmán creado por sus actuales progenitores artificiales. Puede que programen mejor que tú y que yo.
🌿 Conclusión
Pero, por ahora, no. Así que antes de relajarte escuchando a los Beach Boys tienes que documentar, verificar y corregir a tu asistente. Para ello te propongo que aprendas la metodología AIDD y la apliques a tus proyectos.
Paz, chill y buenas vibras.