Velocidad sin dirección

En el actual auge la inteligencia artificial, han sido constantes declaraciones como “los desarrolladores dejaran de ser necesarios”, a consecuencia del impacto que genera la facilidad y gran capacidad de producir código de estas tecnologías, cientos de miles de líneas de código con un prompt y una aplicación lista para ejecutarse, esto es una evidencia de lo que denomino “El espejismo de la productividad”, pensar que contar con herramientas que aceleran significativamente la escritura de código impactará directamente en la productividad de la construcción de software, parece una conclusión lógica, pero en realidad siempre fue un error desde hace décadas medir la productividad en base a la cantidad de líneas de código, solo que esta vez el código lo escribe un agente de IA. En realidad la productividad siempre debe ser en última instancia una función del valor o los “outcomes” que facilita conseguir una solución digital.

Tenemos en un extremo la idea del “vibe coding”, que sostiene que cualquier persona sin conocimientos profesionales, solo necesita hablarle al computador para construir software productivo real, va en la misma línea de reducir la ingeniería de software a la mera escritura de código, otra premisa falsa; como toda ingeniería, se necesita un conjunto consistente de métodos y técnicas para diseñar, construir y desplegar soluciones que puedan funcionar en el mundo real.

Por otro lado dentro el ámbito profesional tenemos bastante evidencia que se esta produciendo código nuevo a una velocidad sin precedentes, y a la misma velocidad se están introduciendo de forma masiva errores y problemas de seguridad, la deuda técnica le esta pasando factura a la industria. La realidad es que el verdadero problema del desarrollo de software no ha cambiado y esta claro que no es escribir código más rápido, es entender un problema y construir la solución tecnológica más eficiente maximizando el valor producido, por tanto estas nuevas tecnologías, sin desmerecer su aporte, no están atacando el problema de raíz.

SDD: un paso en la dirección correcta, pero no suficiente

Ante esta situación muchos expertos están trabajando en encontrar métodos o marcos de trabajos para lidiar con la naturaleza no determinista de la inteligencia artificial especialmente de los LLM, proveyendo una estructura ordenada predecible que reduzca los problemas de simplemente esperar que la “IA escriba todo el código, limitándonos a solo ejecutarlo”, una de las metodologías que esta ganando aceptación y ha surgido en respuesta al vibecoding es SDD Spec-Driven Development (Desarrollo Basado en Especificaciones), donde la especificación técnica, detallada y formal (creada por humanos o refinada por IA) precede y guía la generación de código, convirtiéndose en la «fuente de verdad» que utilizan los agentes de IA para crear el producto funcional.

Esta metodología busca dar un enfoque formal y riguroso al proceso de construir software con asistencia de IA maximizando el potencial de estas herramientas, pero sin dejar que los agentes guíen el proceso, si no más bien dandole mayor control al desarrollador, no obstante después de haber revisado sus planteamientos y sus fundamentos es necesario tener una visión crítica porque como mencioné anteriormente todas las metodologías, técnicas, prácticas y recomendaciones disponibles deben en última instancia ayudar a resolver el problema de fondo y creo que SDD tiene debilidades en sus planteamientos.

SDD parte de una especificación a veces vaga que luego se va afinando dentro del ciclo de desarrollo asistido por IA para luego producir código probado y funcional que debe satisfacer la necesidad del usuario, pero el alcance de dicha especificación no esta claro y muchas veces es demasiado amplio, esto eleva el riesgo ya que el conocimiento de la solución pertinente a un problema es progresivo e incremental desde el punto de vista de los usuarios y más aun de los desarrolladores, por tanto se incrementa el riesgo de producir el software incorrecto, solo que ahora más rápido.

Entonces el núcleo de la crítica al SDD es el tamaño de la especificación, y es la diferencia entre rigidez y adaptación al cambio, entre presumir y escuchar, entre imponer y aprender, incluso entre ir sin saberlo en la dirección de las metodologías tipo cascada o descubrir la solución más eficiente desde una perspectiva agile/lean, aunque esté revestido de la tecnología más disruptiva, fallar en los principios seguramente llevará a fallar en los resultados. En respuesta a ello propongo Micro SDD como una revisión que busca dar claridad y simplicidad a este nuevo paradigma de desarrollo asistido por IA.

Micro SDD

Logo Micro SDD

Declaración de Propósito

Micro SDD existe para mejorar la vida de las personas, evolucionando hacia la solución correcta paso a paso, sin desperdiciar esfuerzo ni asumir riesgos innecesarios.

Principios

Principio 0 — El Feedback como Combustible

El aprendizaje es el bien más valioso. Recopilar, medir y asimilar feedback constante y frecuentemente es el combustible de la generación de valor, siempre en la dirección del outcome — un objetivo y un insumo a la vez. Su fuente y su fin son las personas alrededor.

Principio 1 — Definición del Spec

Un spec es tan pequeño que pueda revisarse fácilmente, y tan grande como para producir valor verificable en producción.

Principio 2 — Validación del Spec

Todo spec se valida con pruebas automatizadas, y su diseño emerge a través de una disciplinada aplicación de TDD.

Principio 3 — Tamaño del Spec

El spec es pequeño porque la mejor solución se descubre, no se presume, tampoco necesita ser estimado. Cada spec revela información que mejora el siguiente.

Principio 4 — Comprensión Humana Obligatoria

Todo spec debe ser revisado y comprendido por humanos. Una caja negra solo conduce a la oscuridad — la agilidad y longevidad de la solución dependen de entenderla al mismo nivel que haberla construido.


Micro SDD es una respuesta que nace de una mentalidad lean/agile pragmática estoy convencido de que, bien entendida, es de vital importancia para la industria y por eso es “micro” porque una pequeña diferencia en el ángulo inicial puede desviar completamente a una nave, en cambio, el aprendizaje constante, sí puede guiarte en un mundo de incertidumbre. La velocidad no garantiza el destino.