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:
- 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
)
- 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
)
- Clarifciación. En este paso se analizan las especificaciones y se
eliminan los riesgos que pudieran ser perjudiciales en el plan.
(Comando
/clarify
)
- 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
)
- 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
)
- 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
)
- 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
Ya llevo años dándole vueltas a una idea que considero clave para el futuro
desarrollo de la labor minera y otras actividades humanas de riesgo donde
sustituir la labor personal por una máquina no solo es económica si no que es
necesaria desde la óptica de la seguridad y la salud en el trabajo, esta idea
es la del control autónomo.
La clave para entender este nuevo sistema de control y que diferencia hay con
el control automático es la diferenciación entre los datos estructurados y los
datos no estructurados.
Los datos estructurados son aquellos que tienen un formato predefinido, es
decir son valores simples o agrupados cuyo significado se entiende en cada
momento, pueden ser por ejemplo, valores de tensión eléctrica, presión,
temperatura o una agrupación de estos en el tiempo o en el espacio.
Los datos no estructurados se caracterizan por carecer de un significado a
priori más allá de una lectura dada de un sensor dado, son datos no
estructurados el audio, la fotografía, el video y todas sus variantes.
Para el proceso de datos no estructurados se utilizan eminentemente las
redes neuronales que son un algoritmo del campo del aprendizaje automático
que es una disciplina del área de la inteligencia artificial.
Yo entiendo por control autónomo como aquel proceso de automatización de las
labores industriales y mineras que utiliza el proceso de datos no estructurados
para automatizar las labores productivas y que se lleva a cabo empleando
principalmente redes neuronales.
Se contrapone con el control automático que utiliza eminentemente datos
estructurados y se caracteriza por emplear algoritmos de control como el PID.
La diferencia clave entre los sistemas de control automático y los sistemas de
control autónomo es que los segundos requieren normalmente sistemas de
computación de alta capacidad y rendimiento para poder procesar grandes
volúmentes de información empleando modelos de aprendizaje automático que
pueden llegar a ser muy grandes y requerir por ello muchos recursos.
Tal como lo veo yo, haciendo un paralelismo con las funciones cerebrales es que
el control automático es equivalente al tronco encefálico que controla por ejemplo
los latidos del corazón y por otra parte el control autónomo sería el equivalente
a la corteza cerebral responsable de los sentidos del oido y de la vista.
La cualidad de estas tecnologías es que permiten la robotización de la
maquinaria minera y a diferencia de la robotización automática, la robotización
autónoma se caracteriza porque las máqinas se programan para ser conscientes de
aquello que acontece en su entorno pudiendo escapar de las jaulas y ponerse a
trabajar mano a mano con los operarios de carne y hueso.
Así pues ya llevo unos cuantos años trabajando sobre estas ideas y con estas
tecnologías para poder hacer del control autónomo una realidad tecnológica que
mejore las condiciones de trabajo y la productividad de las labores mineras e
industriales. Por lo que quedo a vuestra disposición para todo lo relativo a
estos nuevos despliegues tecnológicos.
Como ingeniero de minas me enseñaron a que cuando uno tiene que investigar un
recurso hay que entender su origen y evolución, nuestro dinero de hoy tiene su
origen en Breton Woods donde representantes de las grandes naciones vencedoras
de la Segunda Guerra Mundial determinaron que el dolar sería la moneda de
referencia y que esta tenía que mantener su precio estable frente al oro, lo
que se denomina patrón oro.
Este patrón encorseta la actividad bancaria al poner una fuerte limitación a
la concesión de crédito ya que no se puede prestar más dinero del que haya en
circulación bajo el riesgo de devaluar la moneda frente al metal. De todas
formas este sistema no duró mucho ya que por un exceso en el gasto público de
la administración norteamericana, principalmente debido a la guerra de Vietnam,
se abandonó el patrón oro a principio de la década de 1970 dando lugar a un
nuevo patrón que con el paso de los años acabaría llamandose petro-dolar.
El petro dolar quiere decir que el dolar es la única moneda para comprar y
vender petróleo y este privilegio está respaldado por la mayor fuerza militar
del planeta. Esto genera unas dinámicas retroalimentadas como son el privilegio
exorbitante que permiten a EEUU endeudarse de forma prácticamente indefinida lo
que le permite seguir proyectando fuerza militar alrededor del glovo para
mantenerse en su trono.
En este nuevo sistema los bancos comerciales al no tener más límite para dar
crédito que el coeficiente de caja, proporcion entre lo que tienen que dejar en
reserva frente a lo que prestan a sus clientes, un exiguo valor que les exigen
los bancos centrales y que a día de hoy es prácticamente nulo, se han
convertido en implacables impresoras de dinero por el proceso que se conoce
como multiplicador bancario.
Podríamos decir que este sistema es el menos malo de los posibles ya que la
banca anticipaba el crecimiento económico, mientras este fuera más o menos
constante y proporcionaba la suficiente liquidez para que operaran los
distintos mercados, aunque esta mecánica no estaba libre de fallos y ha dado
lugar a grandes crisis financieras por exceso de optimismo en la labor
prestataria.
Una cuestión clave para entender las dinámicas monetarias de principios de este
siglo es que el crédito al principio fluía por todos los niveles de la sociedad
más o menos igual esto hizo que la crisis bancaria de 2008 fuera precedida de
una crisis inflacionaria, debido a una fuerte demanda global impulsada por una
expansión del crédito excesiva, que subió los precios de las materias primas
dejando a muchos negocios en la ruina reventando así las espectativas de
crecimiento y desfondando los mercados de crédito.
A mi entender la crisis de 2008 fue la colisión de un optimismo excesivo con
unos límites físicos de la oferta de materias primas ya que por mucho dinero
que imprimas la capacidad de producción del planeta es la que es.
La consecuencia de esta crisis fue un sistema bancario mantenido a flote por
los bancos centrales que abrieron ventanillas para que las entidades
financieras pudieran intercambiar deuda basura por liquidez contante y sonante.
Esto mantuvo al sistema financiero operativo pero no sirvió de correctivo para
la banca que pudo seguir operando de la misma manera sin ningún tipo de
corrección ni límite.
Este dislate sería el que llevaría a un tal Satoshi Nakamoto a crear Bitcoin
una moneda digital que operara a través de Internet sin intermediación ninguna
más que una comunidad internacional de personas que la mantuviera funcionando.
Con la irrupción del fraking y otras tecnologías de estracción de hidrocarburos
mantuvieron alejados las limitaciones físicas del crecimiento económico dando
un balón de aire a los mercados financieros al proveer de energía barata a EEUU
y las grandes economías mundiales dando alas de nuevo al petro-dolar, aunque es
de esperar que este efecto sea de corto recorrido por la naturaleza propia
de la técnica extractiva.
En los años posteriores a 2008 los banqueros aprendieron a alejarse de los
límites físicos del crecimiento y a limitar el crédito fácil a los círculos más
adinerados que podían hacer uso de esa liquidez para especular en todo tipo de
mercados especialmente en el bursatil dejando fuera a quienes no tuvieran un
patrimonio lo suficientemente elevado para respaldar sus demandas de crédito.
Este efecto es clave para entender las dinámicas sociales de principios de siglo
donde una élite corporativa y financiera si tuvo acceso al dinero dando lugar
a una represa de liquidez en las clases altas que no fluyeron al resto de la
sociedad, contradiciendo las tesis del trickle down econommics, inflacionando
aquellos activos de interés para estas clases sociales como son la vivienda y
los bienes de lujo mientras que el resto de la sociedad vive con grandes
restricciones monetarias.
Esta dinámica parece que está llegando a su final porque parece que estos
grandes capitales están invirtiendo otra vez en vivienda buscando fijar sus
grandes patrimonios monetarios en activos físicos que se revaloricen ante una
hipotética crisis inflacionaria.
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.
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.
Bueno, retomo la labor bloguera sin mirar atras con la intención de aportar
contenidos de valor en áreas que no tengan que ver directamente con la extensa
área tecnológica del blog de Monforte
Technologies.