Esto es realmente importante más tarde. También te mostré esto en las diapositivas anteriores. También me gusta combinar spec-driven con behavior-driven y test-driven. Entonces, cuando usas agentes de IA y les dices que tienes una función existente, por ejemplo, y les dices, por favor escríbeme pruebas unitarias, normalmente escribirán pruebas evocreen. Entonces, esas pruebas están escritas para ajustarse a tu código existente. Así que, esas pruebas unitarias nunca te dirán que hay un error dentro de tu código existente. Por eso el desarrollo impulsado por pruebas funciona muy bien cuando se trata de código generado por IA. Entonces, en esta constitución, le digo a los agentes, está bien, cuando escribas o implementes más tarde una tarea, deberías escribir la prueba primero e implementar después de eso. Entonces, escribes una prueba sólida, el agente genera código, la prueba se ejecutará, y luego puedes ver, está bien, ¿la prueba pasa sí o no? Y es divertido ver, porque uso mucho spec-driven en mis proyectos, puedes ver a menudo que la implementación falla en el primer intento. Así que, es un patrón realmente bueno. Usa el desarrollo impulsado por pruebas en tu constitución.
Y, por supuesto, está realmente condensado. Hay más reglas que puedes agregar a este archivo. Depende de tus preferencias. Y, por supuesto, siempre puedes usar IA para pedirle a tu LLM favorito que tal vez mejore tu constitución. Y después de eso, finalmente es hora de comenzar con la primera fase, la parte de especificación. Y este es el único archivo que realmente escribes a mano, porque es el fundamento del desarrollo impulsado por especificaciones, porque este es el nombre. De aquí proviene el nombre, la especificación. Y la especificación trata sobre el qué y el por qué, y no sobre el cómo. Y así, es para definir todo, lo que te gustaría lograr y cómo lograrlo, pero no con qué tipo de tecnología te gustaría lograr tus objetivos. Así que, no escribes algo sobre, quiero construir un backend usando NextJS, y el frontend también debería usar NextJS, por ejemplo. Ahora, escribes lo que te gustaría lograr y por qué te gustaría lograrlo. Y luego, puedes ver aquí, algunas salidas son un poco inestables. Puedes ver que Copilot, en este caso, creó cinco historias de usuario, pero las nombró P1, P1, P2, P2, y P3. Así que, a veces es solo una salida rota, porque así es como funcionan los LLMs.
Pero en este caso, Copilot creó cinco escenarios de usuario basados en mi especificación para crear un backend de autenticación. Y también podemos ver que esta especificación también se desglosa en requisitos funcionales, entidades, criterios de éxito, y eso es realmente importante, casos límite. También siempre deberías pensar en casos límite, por ejemplo, cuando se trata de autenticación, cómo debería manejar más tarde el backend un token que ya no es válido, o el refresco falló, algo así. Es realmente importante pensar en casos límite. Luego, está esta fase de planificación.
Comments