
When I first encountered Kiro I was intrigued by its promise of structured, spec-driven development workflows. Unlike traditional AI coding assistants that operate in a more reactive mode, Kiro emphasizes upfront planning and systematic task breakdown. After putting it through its paces on a weird animals quiz app project, I discovered both the potential and pitfalls of this approach—and why I ultimately turned to GitHub Copilot to get the job done..
The Kiro Experiment: Structure vs. Reality
Kiro’s methodology follows a clear progression: requirements gathering → design specification → task breakdown → implementation. For my test project—a React-based quiz application featuring unusual animals—this structured approach generated comprehensive documentation including:
- Requirements specification: Clear user stories and acceptance criteria
- Design documentation: UI definitions and component architecture
- Implementation tasks: Granular, step-by-step development plan
The appeal was immediate. As software engineers, we know that rushing into implementation without proper planning can lead to technical debt and architectural issues. Kiro seemed to address this by enforcing discipline upfront.
However, the execution fell short of the promise. Despite methodically completing each generated task, the final React application wouldn’t start. The disconnect between Kiro’s structured planning and practical implementation became apparent—having great specs doesn’t guarantee working code.
Enter GitHub Copilot: Pragmatic Problem-Solving
Frustrated but determined to validate the approach, I decided to implement the same task breakdown using GitHub Copilot.
Working with Copilot, I could iterate quickly, test frequently, and adapt the implementation based on real-time feedback. When something didn’t work, I could immediately course-correct rather than discovering issues only after completing the entire task sequence.
From time to time I had to test and start the app via command line to check if the app works as expected. That wasn’t always the case. That’s partially my fault. I just used the tasks as Kiro created them. One learning for future spec driven approaches is: create a task template that contains a health check: in this case that would have been:
## Task Completion Checklist
- [ ] Implement feature according to specification
- [ ] Run automated tests
- [ ] Start application locally
- [ ] Perform smoke tests on implemented functionality
- [ ] Verify integration with existing components
The weird animals app prototype (8x speed video):
Link to repository: https://codeberg.org/lotharschulz/spec-driven-kiro-project
Conclusion: Tools Serve Process, Not Vice Versa
This experiment reinforced a fundamental truth:
tools should serve our development process, not dictate it.
Kiro’s structured approach has merit for complex projects requiring careful planning, while Copilot and other related approaches like Google Gemini and Claude Sonnet 4 excel at rapid prototyping and iterative development, which is one of their strengths.
The real value lies in understanding when to apply each approach. For greenfield projects with unclear requirements, rapid prototyping’s flexibility shines. For enterprise applications with strict architectural constraints, Kiro’s systematic approach may prove invaluable—provided we build in adequate validation and feedback mechanisms.
As AI-assisted development continues to evolve, the winners won’t be the tools that replace human judgment, but those that amplify our ability to make informed decisions throughout the development lifecycle.
Leave a Reply