Del vibe coding a la programación asistida por Inteligencia Artificial
En el artículo anterior describimos las desventuras de un experto en Inteligencia Artificial que intentó hacer una aplicación sin tener conocimientos de programación. De acuerdo a lo prometido, en este abordaremos la transición del vibe coding a la programación asistida por Inteligencia Artificial.
No quiero engañarte, este también es un artículo teórico que habla de generalidades. Insisto con eso porque es absolutamente necesario para disipar el humo de los vendedores de cursos de vibe coding. En el que viene ya hablaremos de herramientas específicas y su instalación en Linux.
Los problemas del vibe coding
Programar va mucho más allá de la tarea de escribir código. Se trata de entender el problema que se quiere resolver, de cómo una aplicación puede resolverlos y cuáles de todas las tecnologías disponibles son las más adecuadas.
Entre los factores a tener en cuenta está el tema de la seguridad de los datos. SI una aplicación va a ser usada por muchas personas y requiere datos sensibles cómo información sobre tarjetas de crédito es necesario tomar medidas para evitar filtraciones y para que los servicios brindados no se interrumpan.
No estamos hablando de riesgos hipotéticos si no de incidentes reportados. La plataforma de servicios en la nube de Aamazon (AWS), en diciembre del año pasado subfrió una interrumpción del servicio durante 13 horas. La causa de la interrupción fue el agente de Inteligencia Artificial Kiro que decidió eliminar y volver a crear una parte de su entorno.
La gravedad de este tipo de incidentes está en que AWS es la plataforma preferida para gran parte de Internet.
Según expertos en seguridad informática, los agentes de IA suelen implementarse en entornos con limitaciones y para tareas específicas y no son capaces de comprender que puede pasar cuando, por ejemplo, se reinicia un sistema o se borra una base de datos.
También el año pasado, la empresa Replit puso en marcha un agente de IA para crear aplicaciones. En lugar de hacerlo, borró completamente la base de datos de la empresa y, no conforme con esto falsificó reportes y mintió sobre lo que había hecho.
En Inteligencia Artificial un agente es una entidad (Software o sistema) que es conciente de su entorno y toma decisiones sobre cómo actual sobre él para el cumplimiento de la meta que se le indicó. El LLM usa al agente para entender el contexto y ejecutar acciones para responder de la mejor forma para lograr el resultado previsto.
Del vibe coding a la programación asistida por Inteligencia Artificial
Si el problema que describimos en el artículo anterior era el desconocimiento que el “vibe codeador” tenía de las tecnologías disponibles para crear su aplicación. en los dos casos que citamos todos los problemas tienen su origen en la falta de fijación de barreras claras. No se dieron instrucciones concretas al agente sobre los límites que no podía pasar ni se establecieron salvaguardas mediante un sistema de permisos para evitar que accediera a partes del sistema con las que no tenía nada que hacer.
Los problemas de falta de establecimientos de límites claros lo experimentaron varios usuarios demésticos con OpenClaw, un agente dirigido al público en general que puede ser alojado localmente y conectarse a modelos de Inteligencia Artifical. Ellos reportaron desde el borrado completo de archivos a un gasto excesivo en tokens.
Pasos para creación de aplicaciones asistida por Inteligencia Artificial.
Definir el resultado
Este tema es el talón de Aquíles del vibe coding Una definición vaga no tiene demasiadoas consecuencias si lo que buscas es un temporizador pomodoro. Pero si está tratando de crear un portal de comercio electrónico que se adapte a las necesidades de tu negocio, pueden aparecer los problemas.
Recuerda el caso que contamos en el articulo anterior. Andrej quería una aplicación que le mostrara una imagen del plato listado en el menú de un restaurant. Él cometio el error de no hacerse las siguientes preguntas.
¿Qué necesidad concreta tiene el usuario de la aplicación?
La necesidad concreta del usuario es saber cuáles son los componentes de un plato listado en el menú (Sin preguntarle al camarero)
¿Quíen es el usuario?
Evidentemente el desarrollador pensó en un usuario sin conocimientos profundos de gastronomía, familiarizado con el uso de telefonía móvil y con plata para gastar (Planeaba vender créditos para usar la aplicación)
¿Qué alternativas existen hoy?
Como dije en el artículo anterior, la alternativa es preguntarle a Siri o Gemini (El reemplazo del asistente de Google en Android) que contiene el plato y pedirle que te muestre la foto. Si igual quieres crear una aplicación, hay bases de datos de comidas con APIs públicas que te muestran fotos.
Los siguientes temas tienen que ver con las decisiones técnicas
Tipo de interfaz
Tratándose de usuarios de Linux, crear una aplicación sin interfaz gráfica es una buena decisión si lo que buscas es simplificar el desarrollo y consumir menos recursos. Por otro lado, el uso de una interfaz gráfica la hace más fácil y más atractiva de utilizar. El tipo de interfaz elegida dependerá del lenguaje de programación y el escritorio.
Lenguaje de programación.
LInux es compatible con los lenguajes de programación más populares. Aunque, la habilidad de los modelos de Inteligencia Artificial para utilizarlos dependerá de la cantidad de documentación y ejemplos alojados en su base de conocimientos. Es un tema que profundizarémos en los próximos articulos.
Manejo y seguridad de los datos
Otro punto a definir es si la aplicación va a almacenar datos y de que forma los va a almacenar. Es un tema muy importante si trabaja con información sensible como contraseñas o datos de tarjetas de crédito e interactúa con servicios de terceros. Si es así, hay que incorporar mecanismos de seguridad.
También es importante asignar permisos estrictos para que la aplicación solo acceda a aquellas funciones y partes del sistema operativo a las que necesita acceder.
Distribución
Estamos hablando de Linux. Tienes para elegir entre los formatos de paquetes nativos de cada distribución sumados a los universales Snap, Flatpak y Appimage. Además, deberás decidir si la aplicación tendrá una interfaz gráfica independiente o se integrará con alguno de los escritorios. Y, por supuesto, si quieres que la comunidad contribuya a tu proyecto tendrás que decidir que plataforma de trabajo colaborativo subirlo.
Prometo que este es el último artículo teórico, en el que sigue ya vamos a hablar especificamente de LInux.

