As developers, much of the joy in our work comes from building things and solving complex problems. There’s a unique satisfaction in applying our hard-won knowledge to fix a tricky bug or bring a new idea to life. But with AI-assisted coding, that gratification can feel more elusive. It often feels less like we’re creating and more like we’re instructing – handing our intent to an AI and hoping for the best. The small wins, the little “dopamine hits” that make programming so rewarding, can start to fade.
For many of us who’ve integrated AI coding assistants into our workflows, this disconnect comes from a simple realization: vague prompts don’t get you very far. Large Language Models (LLMs) are incredibly capable pattern-completion engines, but they’re not mind readers. Their non-deterministic nature means the same prompt can produce different results, especially when there’s room for interpretation. Ambiguous directions inevitably lead to inconsistent or incorrect code.
This practical finding – that vague prompts yield inconsistent results – is what sets the truly AI-native engineer apart. We recognize that while many teams use AI for coding, maximizing value requires a deep commitment to mastering the process for high-quality, reliable output. Our bottom-up experience confirms that the quality of the input is what ultimately defines the quality of the code.

The Rise of Spec-Driven Development
Over time, many developers have come to the same conclusion: to get high-quality results from AI, we need high-quality inputs. That means shifting from “prompting” to planning – providing rich, detailed specifications before we ever ask the AI to write code.
Some tools are starting to formalize this idea. For example, Cursor recently introduced a plan mode that helps developers define goals and constraints before generating code. We’ve started referring to this broader approach as Spec-Driven Development (SDD).
In SDD, the spec becomes the shared source of truth that guides both the human developer and the AI assistant. It reduces ambiguity, improves reliability, and transforms coding with AI from a guessing game into a more predictable, repeatable workflow. This is why SDD is critical: it enables the engineer to move beyond coding line-by-line to architecting the clear intent, allowing the AI to function as a predictable, high-performing extension of our senior team. By being intentional about how we describe what we want, we’re not just getting better output from AI – we’re reshaping how we build software.
Applying SDD in Practice: Building a Scrum Planning Poker App
So how does Spec-Driven Development actually work in practice?
A recent experiment with building an internal Scrum planning poker app provides a concrete example. The goal was ambitious: to see whether a detailed enough spec could allow an AI to "one-shot" the initial build of the entire application.
The process started with a high-level specification focusing on user flows – defining what was being built before worrying about how. From there, an iterative back-and-forth with the AI produced a more detailed server specification that covered API endpoints, response formats, and the technical stack.
That back-and-forth was revealing: the more time invested in refining the spec, the better the results. A well-defined specification became a living blueprint – something both human and AI could rely on.
The payoff was immediate. The backend code generated by the AI worked almost perfectly, requiring only one small manual fix. The frontend, on the other hand, was more challenging. Unlike APIs, UI behavior and real-time flows are inherently harder to specify precisely, and the AI struggled with the WebSocket logic. It took a couple of hours of debugging to get everything right.
.png)
Still, the outcome was a fully functional app – and an invaluable learning experience. It highlighted both the power and current limitations of AI-driven development. More importantly, it reframed the developer's role: from coding line by line to steering the process with a clear, evolving roadmap.
But the process itself was largely improvised. The structure of the spec, the level of detail chosen, even the format used – these were all ad-hoc decisions based on intuition rather than established practice. While this works for a small project, there are already more formalized approaches to Spec-Driven Development that have emerged in the open-source community.
.png)
Formalizing the Process: Open Source SDD Frameworks
Several approaches have emerged to formalize this workflow, including the BMAD-METHOD and OpenSpec, each offering their own take on structuring specifications for AI-assisted development.
While these alternatives provide valuable frameworks, Spec Kit serves as a particularly interesting case study for this exploration. As a well-backed GitHub project with strong community support, Spec Kit has sparked considerable interest across the developer landscape.
Spec Kit provides a structured way to write and organize specifications – typically in Markdown – progressing from high-level goals to detailed, task-level descriptions. The benefits of this structure go beyond the code it helps generate: by forcing clearer thinking upfront, it exposes blind spots early and encourages collaboration around shared intent rather than ad-hoc instructions.
Of course, there are still open questions. How does this approach scale to refactoring or large monorepos? How do we manage the inevitable documentation sprawl? And how can we ensure AI tools fully respect detailed instructions when LLMs themselves are inherently imprecise?
These are open challenges, but the underlying shift toward clearer specifications represents a meaningful evolution from casual "vibe-coding" to a more structured approach to working with AI tools.
The Road Ahead
Spec-Driven Development doesn’t make software engineers obsolete – it elevates the role. Instead of focusing on writing every line of code, we’re focusing on clarifying intent, designing systems, and guiding the AI. That requires deep technical understanding, thoughtful architecture, and a sharp eye for detail. This deep technical discipline is what allows us to deliver faster, more robust results for our clients.
Ultimately, while frameworks like Spec Kit provide a promising path forward, it's clear that we are still in the early days. We, as a community, will have to experiment and discover what works best. But the underlying approach of providing clear, detailed specifications to guide our AI tools is undoubtedly a powerful step in the right direction.
