Llou's website
Página web de Jorge Monforte González
Artículos de Informática

Programación por Especificaciones

01/10/2025 IA Programación

Es común ya la idea de que la inteligencia artificial es una tecnología disruptiva que va a cambiar la manera de la que muchos vivimos y trabajamos, este post trata sobre la spec programming o programación por especificaciones una tecnología desarrollada por la gente de Microsoft y Github que va a poner, muy probablemente, patas arriba el mundo de la programación.

La formas de programación de ordenadores han evolucionado mucho con el paso del tiempo, esta evolución siempre ha sido parecida, se desarrolla un tipo de sistema nuevo y mejor, la tecnología se vuelve más compleja y se desarrolla una capa de abstracción que automatiza la forma de trabajo anterior para dar lugar a un nuevo paradigma. Pasó cuando se pasó del código máquina al ensamblador, del ensamblador a los lenguajes de programación modernos y ahora toca sustituir los lenguajes de programación por el lenguaje humano.

También han evolucionado las metodologías con las que se organizaba el trabajo de desarrollo de software, cuando se empezaron a desarrollar los primeros programas complejos que requerían de grupos de trabajo coordinados se implantó el waterfall, esto duró hasta que en la era de internet la tecnología aceleró su desarrollo y se impuso la programación ágil, ahora con la irrupción de las máquinas pensantes parece ser que aparece un nuevo paradigma la programación por especificaciones.

Una cuestión muy interesante es que esta nueva forma de programar la posibilidad de integrar el desarrollo de software como una parte más de los proyectos de otras disciplinas de ingeniería al posibilitar la especificación de todos los detalles relevantes al desarrollo de forma extensiva y textual.

Metodología

La clave para que la IA cree un programa está en generar un contexto muy rico para que a la hora de generar el código se deje el menor espacio posible para la imaginación del modelo.

El trabajo de desarrollo lo lleva a cabo un agente de inteligencia artificial que corra uno o más modelos guiados por un supervisor, normalmente un ingeniero de software. Lo ideal es utilizar un modelo de lenguaje especializado en escritura como ChatGPT5 o afín y luego la parte de desarrollo que la lleve acabo una IA de programación como Claude.

Configuración del Entorno

A día de hoy la herramienta corre con todos los agentes más conocidos del mercado siendo recomendable aquellos que permitan usar otros modelos aparte de los propios como son Github Copilot, Cursor, Windsurf... por lo que hay que tenerlos configurados para trabajar con los modelos de lenguaje elegidos.

A continuación invocamos el comando de configuración que nos inicia un asistente donde se nos solicita el agente a utilizar y sobre que entorno trabajar, Unix o Windows. Con estos datos crea la carpeta plantilla con todos los scripts y parámetros para poder trabajar.

Desarrollo

Con el entorno configurado iniciamos el agente especificado asignamos el modelo que más convenga y empezamos:

  1. Redacción de la constitución. Donde se especifican los principios básicos de la arquitectura, si se hacen tests y si estos van antes o después y otras cuestiones afines sin entrar en detalles de implementación. Como suelen ser todas muy parecidas se puede dejar a la IA y luego hacer modificaciones. (Comando /constitution)
  2. Redacción de las especificaciones. Este es el trabajo inicial del operador donde se le indica lo que se quiere y porqué se quiere en un documento que puede ser completado por la IA. En esta parte no se incluye detalles técnicos si no arquitectónicos. (Comando /spec)
  3. Clarifciación. En este paso se analizan las especificaciones y se eliminan los riesgos que pudieran ser perjudiciales en el plan. (Comando /clarify)
  4. Redacción del plan. Aquí ya se entra en materia tecnológica indicando lenguajes, librerías, reglas específicas y demás. También la IA puede ser de ayuda generando una plantilla inicial a partir de las ideas propuestas por los operadores. (Comando /plan)
  5. Generación de las tareas. A partir de las especificaciones y de acuerdo al contexto proporcionado por la gente de Github y los operadores se genera el documento de tareas. Que ha de indicar de forma muy pormenorizada como se implementa todas y cada una de las partes. (Comando /tasks)
  6. Análisis del proyecto. Es de buen proceder invocar un análisis previo para encontrar incongruencias que pudieran afectar al generador de código. (Comando /analyze)
  7. Implementación. El agente escogido para llevar a cabo la implementación de las tareas lleva a cabo su trabajo dando al final un producto prácticamente terminado en teoría.(Comando /implement)

El resultado puede ser variable en calidad, mis experiencias con esta técnica me dicen que no es oro todo lo que reluce pero es sin duda un paso importante frente al vive-coding, donde la creatividad y las alucinaciones del algoritmo pesan mucho en el desarrollo lo que redundaba en unas pequeñas mejoras frente al desarrollo hecho por programadores.

Conclusiones

Esta es una tecnología que viene para quedarse, hay mucho espacio para la mejora pero sin duda es una herramienta que hay que conocer si te toca desarrollar software ocasionalmente y sin duda dominarla en caso de que te dedique profesionalmente a ello.

Ventajas

  • Se puede generar código para cualquier plataforma.
  • Se implementa a gran velocidad desde el punto de vista del proyecto
  • Permite programación iterativa
  • Permite integrar la informática en el cuerpo de otros proyectos de ingeniería.

Inconvenientes

  • Requiere conocimientos de ingeniería de software
  • Cuesta dinero
  • Es lento desde el punto de vista humano
  • Impacto negativo en la demanda de programadores

Master en Ciberseguridad

07/01/2024 Ciberseguridad

En el pasado año complete el Master en Ciberseguridad de la Escuela de Negocios OBS y la Universidad de Barcelona. En este Master buscaba completar mis conocimientos de informática en lo referente a esta especialización para poder optar a puestos DevSecOps en proyectos tecnológicos, pero como es lógico y para mi sorpresa, este master estaba mucho más enfocado a la gestión que la tecnología.

Esto que pudiera verse como un contratiempo se acabó transformado en una experiencia muy enriquecedora ya que me puse al día en las últimas tendencias de gestión empresarial (ITIL 4 y COBIT 2019) y como integrar la ciberseguridad empleándolas y lo mejor fue darme cuenta que los sistemas de gestion de seguridad en la información (SGSI) se certificaban empleando las normas ISO/UNE 27001, normativa que se alinea perfectamente con sus correspondientes de calidad, medio ambiente y seguridad en el trabajo, vertientes en las que me especialice hace años en el master del Colegio de Ingenieros de Minas del Noroeste de España.

Y si a esto le sumamos con el trabajo que estoy haciendo con sistemas de gestión de contenidos web me ha quedado un curriculum muy adecuado para asistir en el desarrollo y despliegue de sistemas de gestión, lo que puede suponer otro campo en el que desarrollarme profesionalmente y aplicar mis conocimientos tecnológicos.

La Digitalización

20/10/2022 Reflexión

Según yo lo veo la introducción de los ordenadores en nuestras vidas se ha producido en dos etapas muy diferenciadas una es la fase de la informatización y la otra es la fase de la digitalización.

La Fase de la Informatización

La primera gran revolución de los ordenadores fue la de los PCs, una revolución liderada por Microsoft que ofrecía una clara estructuración de los sistemas informáticos en la empresa alrededor de su Directorio Activo, las distintas máquinas compartían datos y recursos (impresoras). La clave de esta informatización fué que las máquinas se adaptaron a los flujos de trabajo tradicionales en la empresa.

Con esto quiero decir que el ordenador se convirtió en una máquina de escribir mejor que la máquina de escribir, en un libro de cuentas mejor que el libro de cuentas, en un fichero mejor que el fichero, un papel (pdf) mejor que el papel, la web mejor que la prensa y el correo electrónico sustituyó el correo convencional, apareciendo un nuevo personaje, el informático que hacía que toda aquella infraestructura funcionase, pero sin trastocar las estructuras organizacionales.

La Fase de la Digitalización

La cuestión es que este modelo está quedando desfasado y todo principalmente por la irrupción de una nueva tecnología, el teléfono inteligente que está convirtiendo lo que era una herramienta para hacer negocios en el medio en el que se llevan a cabo estos. La tecnología como servicio está permitiendo a proyectos empresariales disrumpir modelos tradicionales de negocio, liberando al empresario de cargas como la gestión logística o la gestión del personal, por poner un ejemplo entre los centenares de iniciativas empresariales.

Estos nuevos proyectos, asistidos con tecnologías del espectro de la inteligencia artificial, altamente conectados mediante nuevas tecnologías como las cadenas de bloques, requieren de una miriada de profesiones que van mucho más allá del técnico IT, y que continuamente se van actualizando y diversificando en una evolución que no parece que vaya a detenerse, al menos durante unos cuantos años.

A diferencia con la informatización, con la digitalización es la empresa la que tiene que buscar adaptarse a los sucesivos avances tecnológicos, lo que supone un reto tanto a directivos como profesionales que tienen que estar continuamente actualizandose.