DEV Community

Muhamad Sulaiman
Muhamad Sulaiman

Posted on

SDD is now my go-to when developing a Website / Software

vibe-coding-vs-sdd

Recently, I ran an experiment across several of the projects I’ve been building. The focus of that experiment was simple: how could I consistently get better results and higher-quality responses from the AI models I use, while also reducing the time it takes to arrive at a solid outcome?

Previously, my workflow leaned more toward Vibe Coding Prompting, or VCP. My usual approach was to build things first, then ask the AI to review what I might have overlooked, especially around caching strategy and SQL performance.

The problem, however, was that VCP often gave me responses that did not meet the standard I was aiming for. Hallucinations were quite common, and the issue became even more obvious when the context grew longer and more complex.
Because of that, I changed the way I use AI in my daily workflow. I moved from VCP toward SDD, or Spec-Driven Development. From my experience so far, SDD gives me significantly better responses than VCP.


That said, I have not abandoned VCP entirely. It is still useful when I want the AI agent to handle repetitive tasks for me, so I can stay focused on work that requires more attention and deeper thinking.

The first time I used SDD, I stuck with it almost immediately because it felt like working with a highly capable Project Manager. That said, SDD does take more time at the beginning. You need clear stakeholder requirements first. Then you need the AI to align properly with the spec before execution begins. This is different from VCP, where you can often jump straight into getting an output. The trade-off is that the output may not be as strong or as reliable as what SDD produces.

The slower start is normal. That has always been true in software development. Even before AI became part of our workflow, we still needed time to analyze requirements and think things through properly. The difference is that, over the long run, SDD has accelerated my workflow by more than 30%. The quality of the output is better, and the number of bugs is lower. As a result, I spend far less time debugging.


At the moment, this is how I work with AI. You may want to adopt parts of this workflow, or perhaps share your own with me. I am always open to learning from how others approach their process. For now, this is the workflow that works best for me:

  1. I manually initialize all Laravel, Symfony, Nuxt, Next, or Express projects.

  2. I set up the initial routes that I know the project will need.

  3. I create the necessary SKILLS to ensure my AI agent can follow SDD, read related specs correctly, and understand my preferred code patterns.

  4. Once those first three steps are in place, I create a specs/ folder, along with the relevant subfolders for the specs I want the AI to work on. For example, I recently needed a shell script for a data pipeline process, so I created specs/shell/.

  5. Before asking the AI to generate the basic files for SDD, I write the readme.md for that spec myself. This document contains the full stakeholder requirements, including the WHY behind the spec.

  6. I then run a prompt that instructs the AI to read and analyze that readme.md.

  7. Based on its analysis, I ask the AI to raise any questions it may have before completing the development plan for that spec.

  8. Once I answer those questions and it generates the development plan, I review that plan carefully, step by step. If anything feels off, I correct it manually until I am fully satisfied, and only then do I ask the AI to execute the plan.

I am not claiming that this is the best workflow. It is simply the workflow that fits the way I work today. I still think critically, and I still write code manually. What SDD gives me is a more structured path, fewer bugs, and a faster development cycle overall. That also allows me to spend more time on the things that matter most, such as design patterns, architecture, and other higher-level engineering decisions.

Top comments (0)