Mostrando entradas con la etiqueta Vive coding. Mostrar todas las entradas
Mostrando entradas con la etiqueta Vive coding. Mostrar todas las entradas

lunes, 15 de septiembre de 2025

Exactitud vs. flexibilidad en modelos de inteligencia artificial (III): ingeniería software y 'vibe coding'

Cuando comencé esta serie de posts sobre la tensión entre la exactitud que nos proporcionan las tecnologías y algoritmias más tradicionales, incluyendo incluso la inteligencia artificial discriminativa y los modelos de machine learning más longevos, pensaba que la serie estuviese compuesta por tres posts: uno dedicado a analítica, otro a automatización y un tercero que adoptase una visión más de negocio y, de paso, revisitase el caso de la robótica humanoide. 

Ya hemos tratado los dos primeros puntos en posts anteriores. Sin embargo, por el camino, se me 'ha aparecido' otro tema que, aunque con particularidades que lo distinguen del resto, también presenta hasta cierto punto esa tensión entre la exactitud de los modelos más tradicionales frente a la potencia y flexibilidad que nos ofrecen los modelos generativos. Hablo del caso del desarrollo software, de la confrontación entre la ingeniería software más tradicional con la nueva forma de hacer código asistido por inteligencia artificial y, sobre todo, la alternativa más radical que ofrece el 'vibe coding'


Vibe coding


No voy a profundizar mucho, porque a 'vibe coding' dedicaré en breve algún post en este mismo blog, pero para aquellos lectores que no estén familiarizados, sólo anticipar que se denomina 'vibe coding' a la generación de código (creación de programas y aplicaciones, por entendernos) mediante inteligencia artificial y en concreto mediante modelos de lenguaje.

En 'vibe coding', el desarrollador ya no se ocupa de generar el código fuente, como ha hecho cualquier desarrollador 'toda la vida', sino que, simplemente, le expresa en lenguaje natural a un gran modelo de lenguaje, lo que quiere que haga la aplicación y es el modelo de lenguaje quien general el código.

En su modo extremo, es posible construir una aplicación completa 'sólo' diciendo en lenguaje natural lo que se espera de ella. 

La forma anterior de expresarlo simplifica un poco las cosas, pero capta la esencia y me basta para el objeto del presente post. Ya volveremos a ello para conocerlo mejor en otros artículos.  


La ingeniería de software tradicional

  

Podríamos decir que la ingeniería de software es una disciplina que se ocupa de definir los procesos, prácticas y herramientas más adecuadas para la gestión de todo el ciclo de vida del software, quizá con más foco en el desarrollo pero incluyendo también la implantación, la explotación y el mantenimiento.

Dentro de esta disciplina caben resultados tan conocidos como el ciclo en cascada ('waterfall') y todos los enfoques 'agile' aplicados al software.

Es cierto que, a pesar de su aspiración a convertirse en una disciplina ingenieril, la ingeniería de software, al contrario que otras formas de ingeniería, siempre se ha enfrentado a una cierta informalidad, a una dificultad de encerrar el proceso de producción de software en los límites estrechos y controlados que puede tener, por ejemplo, la producción industrial.

Aún así, la ingeniería de software, especialmente con enfoques modernos avanzados, y asistidos por soluciones técnicas de automatización como ocurre por ejemplo en DevOps, consiguen dotar a la actividad de desarrollo y operación del software de una razonable disciplina, control y productividad.


Inteligencia artificial generativa en desarrollo software


Es bien conocido que los modelos de lenguaje generativos también son capaces de crear software, y que lo hacen bastante bien y cada vez mejor.

En el fondo no es sorprendente ya que el código fuente se expresa en un lenguaje de programación y un lenguaje de programación es eso, un lenguaje, y un lenguaje además mucho más acotado, formal y riguroso que el lenguaje natural humano. No es raro pues, repito, que un gran modelo de lenguaje, adecuadamente entrenado, sea capaz de generar código o traducir un mismo programa entre diferentes lenguajes de programación. De hecho, cada vez los modelos se entrenan más y más con código fuente para que sean capaces de 'programar' bien. Así ha ocurrido, sin ir más lejos, con GPT5.


De nuevo: la tensión exactitud vs. flexibilidad


Cuando usamos, como se puede hacer ya desde hace un par de años o así, los modelos de lenguaje como un mero ayudante del desarrollador, a priori no nos estamos saliendo, o no tenemos por qué hacerlo, de la ingeniería software.

Pero si ahora generamos aplicaciones enteras o grandes porciones de la misma, sin supervisión o con escasa supervisión por parte de un desarrollador, estamos hablando de otra cosa. 

Que la inteligencia artificial sea capaz de crear una aplicación completa con sólo unas indicaciones en lenguaje natural es espectacular. Supone un salto cualitativo en cuanto a productividad en la creación de software. Supone también, en teoría, poner la creación de software al alcance de cualquiera. 

Veremos sin embargo, en otros artículos, ya fuera de esta serie, que 'no es oro todo lo que reluce' y que el 'vibe coding', al menos en sus estado actual, tiene importantes limitaciones para esa creación casi mágica de aplicaciones completas.

Lo detallaremos en otros artículos, insisto, pero ya podemos imaginar que, al igual que en otros ámbitos, en el caso de la generación de código fuente los modelos generativos pueden también 'alucinar' y hacer cosas incorrectas. También podemos imaginar que la calidad y adecuación de la aplicación generada dependerá de la habilidad y rigor del desarrollador para expresar em prompts lo que tiene que hacer la aplicación.

Tenemos, pues, otra forma, un poco especial en esta ocasión, de tensión entre la relativa exactitud fiabilidad de la ingeniería de software tradicional frente a la flexibilidad, potencia y productividad, pero a costa de menor exactitud y fiabilidad, de los modelos generativos.


Conclusiones


La aparición del concepto de 'vibe coding', la capacidad de generar código e incluso aplicaciones completas a partir de indicaciones en lenguaje natural, traslada al ámbito de la ingeniería de software la tensión que ya vimos en analítica y automatización entre unos modelos tradicionales mucho mas exactos y fiables que ofrecen tecnologías tradicionales o formas discriminativas de inteligencia artificial, frente a propuestas mucho más flexibles, potentes y productivas, pero menos fiables al menos ahora mismo, que ofrecen los modelos generativos.

En el próximo post, que espero que ahora sí sea el último de esta serie, revisaremos el caso delos robots humanoides y haré un razonamiento de carácter más económico y de negocio.


Artículos de este blog relacionados