My team has been struggling to understand whether or not we should do "spec-driven" development or not. It makes a lot of sense to me to have one developer iterate with the model/harness to generate a markddown document that is a high-level of what will be implemented, and then have the team PR review it before and agent attempts to do the actual implementation work. Do you think this is a good practice?
I believe spec driven design is a good way to go. But that means keeping all your specs either in the repo (if you want the agent to be able to edit them) or available via for example MCP (if you think only humans should be able to edit them and you got some type of external documentation system keeping specs).
But given that running an agent us cheaper than the cost of waiting for a slot to assemble the team to talk about a change (isn’t it always?), why wait with running the agent?
I propose updating the spec then do the implementation. This will most likely show that a few assumptions were wrong forcing some major or minor updates to the spec. Work through those and then let your team review the spec change together with testing the next iteration of what what’s build.
I have found it doesn't see me any direct time. I either iterate ruthlessly on the spec or on the implementation.
I find that the code is generally in a better place proportionate to the amount of SDD I actually do. But it's just a matter of where and when I want to spend my time.
I specifically work in tooling now, so this probably applies more to that domain than some others, but I find 'very up-front spec-driven development' unappealing for that kind of work.
I'm experimenting just like everyone else, but this is my process right now:
- Quick prototype
- Figure out the language of your app (what terms you want to use for things, what your UI design language will be, etc) and spec that, so you can use words consistently with the agent. You need to be able to describe the things you want well and consistently.
- Keep prototyping. Let the agent write unit tests along the way. Lock down behaviour you like, keep track of those things in a document.
- At some point your idea of the real architecture comes into focus, from actual use cases -- avoids the over-abstracting right away trap.
- Refactoring is cheap with tests, so start refactoring into the architecture you want.
- Your architecture won't necessarily be what would be best for a human, but it will be pretty close.
- Keep relentlessly iterating on small work.
- Things that were expensive before aren't that expensive now -- integrating a library, changing from one library to another, trying out a few architectural refactors, trying out different performance optimizations, etc. That stuff is all 'throw it there and see what sticks' now, so don't be afraid to try stuff which felt big before.
I feel like 'front loading' too much is just the wrong approach. You might feel like you're sitting there 'babysitting the agent'; but that's just what the hard part of the work (hard as in 'zjust slogging through it', not as in 'conceptually complex') looks like now. Your code is much more like clay.
Atleast that's how I'm thinking about it so far, but I'm not working on large sprawling systems that I imagine would need more pre-planning.
This is so true. After 20 years in the tech business I have so rarely seen perfect execution. It's mostly scrambling and chaos and a miracle anything works in the first place.
They are saying OpenClaw/friends are hard to get setup and keep running without technical knowledge. Saying "Think of how hard it would be to setup OpenClaw without technical support"
Sad! I really enjoyed going to the Kusama exhibit with my (now) wife years ago, and my daughter had a Kusama phase when she was about 5 years old and dressed up like her with a hot pink wig and polka dot outbit.
It would be very cool to have an Obsidian viewer or something.
On many occasions I have compiled notes, sometimes manually created sometimes LLM curated, and put them into a .epub file to send to my kindle so I can read as I am out walking.
It would be cool to skip a few steps there, and have "live" documents at the ready, particularly in markdown if possible, without having to sync/publish etc
I'm absoltutely not defending the environmental decision, but these datacenter projects seem to be funded mostly by free cash flow (not borrowed money), from the hyperscaler profit margins.
Time to get a Personalized Pico Pal(tm), your own Power Pal in orbit, solar power microwaved to your mower, from now on it's batteries included, thanks to Blazbro!
I definitely wish I could use something like this. I am not a great note-taker, and am often distracted during meetings with actual work items, or side pings.
Many of us can't just arbitrarily record things though. I work in a highly regulated part of the industry with major data compliance standards.
Interesting... How a tool would need to look like for you to use in your industry? Have you looked for note-taking apps before? If yes, why you didn't stick w them?
same problem for me, i tried obsidian and notetakers on calls and other apps too...but i stopped using them after few weeks and just forgot about them. This automatisation should probably help the problem. next thing is to connect to agent and start using it.
Makes sense. Connecting to an agent is something that already works. The memory is plain SQLite and media files in a local folder on your Mac, so you can point any agent straight at it. I am also shipping an MCP as suggested above in the discussion.
reply