The Closing Window
Las slices finas evitan que /sdd-flow desborde mi capacidad image
Photo by Nadine E on Unsplash

Las slices finas evitan que /sdd-flow desborde mi capacidad

AI Insights

TL;DR

Hacer one-shot de features con /sdd-flow funciona hasta que te vuelves ambicioso con proyectos complicados y malabareas dos o tres en paralelo. La solución es frenar para entregar slices más delgadas y mantener las revisiones y lo que se entrega bajo tu control. El nuevo modo de entrega por slice ya está disponible en el plugin.

Una Gran Pila de Mierda

Pensé que había dominado el desarrollo guiado por especificaciones con Claude Code, y más fundamentalmente, que me había convertido en un superhéroe del coding agéntico. Eso fue hasta que mis ambiciones superaron mi capacidad. El coding agéntico se ha vuelto enormemente poderoso, pero sigue requiriendo que el desarrollador mantenga una supervisión estrecha, especialmente en escenarios más complicados.

Hace unos seis meses construí este plugin de flujo de desarrollo SDD para aplicar un ciclo de investigación-planificación-implementación a proyectos de software. Aprendiendo de mi experiencia usándolo, seguí ajustándolo y agregué fases y pasos de revisión adicionales que autocorregían imperfecciones. Funcionó tan bien que pensé que podía automatizar el proceso más completamente, lo que me llevó a crear el skill /sdd-flow. Esto me permitió simplemente hacer one-shot de features (uso "one-shot" de manera flexible porque hay pasos de clarificación y revisión involucrados). Eso funcionó bien hasta que mis proyectos se complicaron y hacer one-shot significaba manejar demasiados requisitos y expectativas a la vez. En pocas palabras, me había bebido el Kool-Aid y creído que la IA podía entregar.

El hecho de que estaba desarrollando varios proyectos en paralelo solo amplificó el desastre en el que me encontré. Me abrumé un poco, y eso me llevó a ignorar prácticas sensatas y volverme impaciente y descuidado. Honestamente solo quería llegar a un estado final. Me enganché irracionalmente con entregar. Y definitivamente entregué. Después de tres semanas de desarrollo y una semana tratando de depurar y encarrilar el proyecto, entregué una lección importante. Redescubrí los límites del coding agéntico y las capacidades de los modelos de IA, junto con mis propias limitaciones humanas.

Slices Más Finas

Así que di un par de pasos atrás y evalué mi proceso de desarrollo, tanto las partes que yo guiaba personalmente como las que el agente ejecutaba.

Lo primero que había que arreglar era cómo los agentes de coding típicamente construyen una aplicación multicapa. Conjuran toda una capa antes de pasar a la siguiente. Toma una aplicación con frontend y backend. El agente entrega todo el frontend, normalmente una amplia franja de funcionalidad, luego pasa al backend. Pueden pasar varios ciclos antes de que cualquier parte sea testeable de extremo a extremo.

El siguiente problema, irónicamente, era que obtenía peores resultados aunque tenía la aplicación completamente probada con tests unitarios y de extremo a extremo. Al apoyarme demasiado en esto como garantía de calidad y completitud, me estaba saltando la revisión personal. Bajo presión, tomé el camino fácil y simplemente ingresé el siguiente prompt, tiré los dados y seguí apostando. Eso fue una estupidez.

En busca de una solución para influir mejor en cómo un agente de coding entrega y para corregir el comportamiento en que había caído, pensé en cómo normalmente desarrollaría un proyecto así si estuviera haciendo el trabajo "a la antigua", pre-GenAI. Si tuvieras una aplicación rica en features o incluso una feature complicada, te enfocarías en tener éxito con una slice muy específica. La desarrollarías de punta a punta, conectando todas las distintas capas desde el backend hasta el frontend, para que hubiera algo que un usuario humano pudiera testear lo antes posible.

Este enfoque de desarrollo en slices verticales, cuando se aplica a agentes de coding, haría lo siguiente:

  1. Forzar al agente a enfocarse más precisamente.
  2. Facilitar que yo pueda testear y revisar lo que se está entregando.
  3. Ayudarme a rastrear mejor lo que se entrega y corregir desviaciones más rápidamente.

Ese último punto importa porque vuelve a otro comportamiento que necesitaba abordar. Estaba tan enfocado en la velocidad y tan alentado por éxitos previos que estaba desarrollando demasiado, demasiado rápido. Necesitaba frenar.

Desarrollar en slices me facilita digerir el trabajo y mantener revisiones más exhaustivas. En lugar de un ciclo de investigación → especificación → implementación por feature, la feature se descompone en slices verticales desde el principio. Conservas el beneficio de velocidad dentro de un ciclo (sin traspasos manuales entre fases) pero recuperas el beneficio de supervisión. Estás revisando algo lo suficientemente pequeño para entenderlo de verdad y dedicarle tiempo. Esto encaja mucho mejor para desarrollar múltiples proyectos en paralelo con agentes de coding.

El desarrollo de software es personal. Esto es lo que se alinea con mi estilo, mis limitaciones y mi experiencia.

En Control Nuevamente

Así que dos de los tres proyectos que estaba desarrollando en paralelo realmente llegaron a producción. El tercero, el más complicado, el que causó toda esta reconsideración, lo tiré al inodoro. Era tal desastre y tenía tan poca confianza en él que empezar de cero era más sensato. Además, esto me permitió empezar a poner en práctica todo lo que he discutido aquí.

He quedado muy satisfecho con los resultados, tanto en cómo se comporta ahora el agente como en cómo me veo obligado a comportarme yo. La aplicación ahora tiene un conjunto más enfocado de features iniciales. Tengo una mejor comprensión de lo que estoy haciendo y de cómo seguir haciéndola crecer.

Esta sensación de control me ha permitido retomar el trabajo en otros dos proyectos en paralelo. Tres parece ser mi número mágico. Pero ahora los ejecuto con un ritmo más sano y más sensato.

Zoom Out — Implicación Mayor

Los agentes de coding no son productos terminados que simplemente consumes. Pueden funcionar de manera estándar para muchos escenarios, pero al mismo tiempo, para muchos escenarios más complicados, necesitan ser ajustados y personalizados según cómo tú desarrollas. Tienes que llegar a un punto donde entiendes cómo fluyen las cosas para ti y para un agente durante un ciclo de desarrollo.

Hay personas muy vocales compartiendo lo que les funciona, yo mismo incluido. Es importante considerar una variedad de puntos de vista y experiencias. Ayuda a alimentar tus propias pruebas personales, pero al final se trata de que tú sintetices toda esta información y descubras qué funciona para ti, qué encaja con tu estilo y se alinea con tus procesos. Esto requiere inversión y experimentación.

Este proceso de buscar la alineación correcta incluye un poco de evaluaciones informales de "vibra". Para sacarle el máximo a estas herramientas y ejercer el mayor apalancamiento, necesitas algo más científico. Afortunadamente, han salido algunos lanzamientos recientes que facilitan hacer evaluaciones apropiadas y capturar trazabilidad completa para identificar dónde está fallando tu agente de coding y dónde puede mejorar. Más sobre esto en un próximo artículo.

Mientras tanto, recuerda que una herramienta de coding agéntico empieza siendo un mazo. Personaliza el mango para que se adapte a tus manos. Conviértela en un destornillador cuando el trabajo requiere precisión. Sigue moldeando esta tecnología maravillosa y aterradora hacia tus propios objetivos.

Usa el Modo Slice

El skill requiere un flag para invocar el desarrollo en slices verticales: /sdd-flow delivery_mode: per-slice

Este skill pertenece al plugin agent-engineering.

Powered by Buttondown.