What would you wish for?
It’s hard right. You soon realise the more you wish for the harder it is to adequately describe.
Let’s keep it simple. Let’s say you wished for an elephant. Well what size of elephant? What colour should it be? (I mean the exact colour all over). How big should its ears be? How long should its trunk be? Even with a ‘simple’ elephant there are many details to consider.
This is what I am realising about Spec Driven Development. In theory it sounds great, just like being granted a magical wish, but in reality its doesn’t work out quite how you would expect.
What Is Spec Driven Development?
If you check out: https://github.com/github/spec-kit you can see the sales pitch:
I’ve seen the discourse online about Spec Driven Development. It seems to divide opinions pretty strongly. I’m definitely falling into the camp of “It sounds good on paper but in reality it’s a patchy approach at best”.
The lovers (usually not Software developers)
The skeptics (usually Software developers)
If you believe the hype then you write out a spec, point the AI to the repo and task board and then go away to the beach for the weekend and come back Monday morning and everything is done.
If you don’t believe the hype then you realise that software evolves over time, you can’t possibly write specs for all the scenarios and edge cases you will encounter in the wild and AI cannot be trusted for one task, let along a whole development cycle.
What’s The Issue?
The biggest issue is you have to declare what you want up front before anything gets built. It’s remarkably difficult, if not impossible, to envision and specify what you’re going to create in the very beginning. Just like describing your magical wish.
The level of detail and the level of edge cases that the app will encounter in the real world is mind-boggling.
I’ve been spending the last three years working on a few production apps, and the state the apps are in now versus what was envisioned in the beginning is light years apart.
On top of that is also the product lifecycle. Most Software Developers aren’t working on greenfield projects. They are working on existing projects within teams with some kind of project manager or project owner.
Personally I’ve spent the last six months fixing a whole bunch of bugs and very small edge cases on existing apps. These have only become apparent as the app has been used more and more in the wild. Specifying everything up front is impossible.
The majority of my time in a week is taken up with small bug fixes and incremental improvements that no person on earth could have predicted in the initial specifications.
This really begs the question: Is Spec-driven development the way forward for Software Development?
Is Spec Driven Development The Future?
Short answer — No.
Longer answer — It can be a useful approach in the right (very restrictive) circumstances and there are definitely some good practices to take from it.
I can theoretically understand the appeal of the Spec Driven Development approach. You write down clear instructions, you break it into small, digestible pieces, and then set to work. Whether thats you or AI is irrelevant. The point is everything is specced out so it’s crystal clear what needs to be done.
For a developer, that sounds really attractive. It’s a simple, straightforward approach. Everything is thought through and planned ahead of time before any implementation, which is usually a good thing in software and it allows one to take advantage of the benefits of AI.
However, having said that even with all the upfront work and guard rails in place there will still be things going wrong. Working in an existing codebase is never clean. AI may pick up bad habits from the existing code. Edge cases are likely to be missed. Changing one thing in one place could break some existing behaviour.
If used incrementally on small subsets of the codebase, then Spec Driven Development can be useful. I would even prefer it in some circumstances as it will force you to think things through carefully ahead of implementation time.
But it won’t solve everything. Even on small pieces of work things will be missed so as a developer you don’t want to come to rely on the spec. It will become a crutch and will limit you. As a developer you need to remain agile and alert.
Conclusion
As soon as I see anyone really pushing a development approach or practice, I always get suspicious. Anyone that is so hard-lined has probably not thought through the entire consequence of whatever they’re promoting.
Spec Driven Development is the same. It’s like anything, it certainly has it’s use cases, it brings some interesting ideas to the table and certain people will be more drawn to it than others.
I personally see it one more step towards completely sucking out the joy of coding. I don’t know one developer who is in the game so they can write more documentation. Don’t get me wrong, documentation is important but it’s not something someone jumps out of bed to write in the morning. Not any sane person anyway.
Is Spec Driven Development the future? I don’t personally think so. In anything more complex than a very simple CRUD app, holes start appearing in this approach and it ends up not being a very suitable tool for the job.

