Загрузка видео...

Не удалось загрузить видео

На главную

Why did spec-driven development never take off - the workflow tools like Amazon’s Kiro or GitHub Workspaces encouraged? dex, founder of HumanLayer: “These projects have a really interesting idea: you maintain a set of specifications for your software, and then you maintain the code itself, and the dream is...

170,120 просмотров • 2 месяцев назад •via X (Twitter)

Комментарии: 24

Фото профиля The Pragmatic Engineer
The Pragmatic Engineer2 месяцев назад

Learn more about context engineering, loop engineering and how Dex Horthy’s approach to AI-assisted software has evolved, on The Pragmatic Engineer podcast • YouTube: • Spotify: • Apple: • Summary and transcript:

Фото профиля AiDevGuy
AiDevGuy2 месяцев назад

Excellent point here @dexhorthy . Where I think spec driven works is if you view SDD like jira or linear. feature => story with a tech design doc targetted for a feature. Feature is your functional spec. Tech Design is your program design and Story/Issue is your plan for constructing and verifying. You don't attempt to keep your features and story/issues in sync with your app. No one expects that. Jettison the spec as source code idea, and embrace it as a way of generating better features and issues that are streamlined for execution. But you still let them roll off naturally. This approach is the one that is most likely to get traction with enterprise teams filled with people who aren't on the cutting edge AI train. This is how I'm getting my enterprise teams with good but not cutting edge ai programmers and ba's and po's to get acceleration across the team

Фото профиля Nikolay Konovalov
Nikolay Konovalov2 месяцев назад

I solved this problem. But you are not gonna like the answer. You have to read the code. What is different about my research project is that I know why failed and I'm not gonna repeat this mistake. You can't generate code from specs because English semantics are very different from Code semantics. It's like trying to describe 3D model using words. You can easily describe sphere, cube, pyramid. But try describing a human or a car engine. That quickly becomes a nightmare. So I understand these are two separate semantic graphs, and I am deliberately separating them, but also connecting. How? Simple. We just make specs granular enough: states + state transitions: - Entity exists with these attributes: a=x, b=y, c=z. - Entity transitions from state A to state B. And then single acceptance criteria is just one state transition or one state measurement. And so that means one test. It can be contract, integration, unit, e2e test. We link it. BAM. Product spec exists, you read it, you understand it, you built mental model in your head. Go read the test now. Does it do same thing as product spec does? That's tricky to verify, because you need to launch the test and see what changed on every single step: DB record, component input, HTTP request, and so on. If you verified this and it works as expected, then this spec is valid, and you can forget about it, until code that is connected to it changes. How do we know when spec is stale? Simple. SCIP graph connects test file to your models, classes, services, even cross-repo. Something changes in other repository that connects to this test -> BAM, GO READ SPEC YOU JUST TOUCHED. This is hard research project. I've been doing this all by myself. No funding. And my next step is to visualize mental model when you write the intent graph. The bottleneck is understanding. When you create spec, you have to load mental model in your head. That's exhausting and unproductive if you don't read code. So my solution is to pull the minimal code you have to read, and minimal context you need to understand the feature you are working on. Here's example: ALSA driver / USB / microphone / application vertical slice. This is much easier to understand than reading a manual or even reading code. Yet you see that these structures is literally code, just rendered as HTML components, and you can play with them. That's how I plan to reduce cognitive bottleneck when writing software and understanding what it does. And it can be used outside of Software too. Biology, Laws, Physics, Science. Anything.

Фото профиля Gilfoyle
Gilfoyle2 месяцев назад

@dexhorthy You have to define spec-driven development. I believe everyone is using some kind of specs with AI coding. Specs go out of sync with code, sure, that is a problem to solve, but how else do you communicate with agents if not through specs?

Фото профиля segov
segov2 месяцев назад

@dexhorthy The funniest part about this is that Amazon hard mandates this bs when using tools other than Kiro too

Фото профиля foxriverdevops
foxriverdevops2 месяцев назад

@dexhorthy good addition here:

Фото профиля Nick Venturi
Nick Venturi2 месяцев назад

@dexhorthy turns out writing perfect specs is harder than actually writing the damn code 🤷‍♂️

Фото профиля Ici Dab
Ici Dab2 месяцев назад

@dexhorthy @dexhorthy so you just don’t have docs of the projects? Not even ADR? (Didn’t listen to the podcast)

Фото профиля Nash
Nash2 месяцев назад

@dexhorthy If you have no written specs and if the coding agent doesn’t use the spec as system functionality, then nothing stops it from changing any rule and policy and there’s no real way to limit the code output.

Фото профиля Dev Agrawal
Dev Agrawal1 месяц назад

@dexhorthy Curious to hear @dexhorthy’s thoughts on

Фото профиля Khushal Singh
Khushal Singh2 месяцев назад

@dexhorthy the spec the spec the spec the fucking spec which it kinda forgets to follow? I was fast, by the time i write the spec i would have finished whole poc, i was using AI and enhanced my speed as well, then fall for this spec driven development bullshit

Фото профиля Hari
Hari2 месяцев назад

@dexhorthy hell yeah

Фото профиля sunil shaw
sunil shaw2 месяцев назад

@dexhorthy Our tools that can help to save the time for the journey of content creators.we call it's an Ai powered time saving time tools. I don't have traction and not too much followers on X. If u like it then u please use and feature it on X.

Фото профиля Stanislav Rumega
Stanislav Rumega1 месяц назад

@dexhorthy Spec drift is real, but tactical plans and durable obligations are different. Plans can be discarded. Requirements, invariants, guarantees, and architecture boundaries can't be reliably recovered from code. Keep that authoritative layer machine-checkable.

Фото профиля TechGray CA
TechGray CA2 месяцев назад

@dexhorthy Specs are just docs that pretend they'll stay current

Фото профиля Lindsay Rex
Lindsay Rex2 месяцев назад

@dexhorthy Precommit hooke are easy enough to trigger documentation writers.

Фото профиля Sebastian Buzdugan
Sebastian Buzdugan1 месяц назад

@dexhorthy i dropped spec driven workflows when specs drifted faster than code reviews caught them

Фото профиля gary IH fung
gary IH fung2 месяцев назад

@dexhorthy Ya. Detailed initial definition of what to build is important but don’t be dogmatic about specs Amazon being overly dogmatic and wrong about this is so onbrand

Фото профиля Michael Bushe 💙🧘‍♂️🌎⚾
Michael Bushe 💙🧘‍♂️🌎⚾2 месяцев назад

@dexhorthy Missing the obvious: 1. You rev your spec and command - now update the code to do this spec change. 2. If your code drifts, you have no idea if the code drifted correctly or incorrectly. 3. Top down specs give the agent the skills to understand the broader context.

Фото профиля Oglethorpe
Oglethorpe2 месяцев назад

@dexhorthy "Because tokens are cheap" I do agree with the other part, though.

Фото профиля Ricardo
Ricardo2 месяцев назад

@dexhorthy The problem described above is more about the full SDLC and not about SDD. What's missing from SDD here is getting past build time verification alone to where you can enforce behavior into your CI system so it acts as enforcement going forward. There's a similar need at runtime

Фото профиля Gaetan Semet
Gaetan Semet1 месяц назад

@dexhorthy I argue we can (as I do) non-drifting spec if we clearly distinguish short term « ChangeSpec » and long term « ReqSpec »

Фото профиля Cat Wearing a Hat
Cat Wearing a Hat2 месяцев назад

@dexhorthy Because most specs are designed to make it easier for a human to implement and manage, and llms don't have that same hang up.

Фото профиля Qadeer Ahmad Shaikh
Qadeer Ahmad Shaikh2 месяцев назад

@dexhorthy What stands out to me is that documentation doesn't fail because it's written. It fails when it becomes a second version of reality. Trust usually comes from having one source of truth, not two.

Похожие видео

Three skills I use every day in Claude Code and Codex to solve my hardest problems: 1️⃣ /agent-watchdog When I have one agent like Codex working on a task and I don't fully trust it's going to do everything right, I'll open up another one like Claude Code and tell it to watchdog the Codex thread. You can copy the Codex deep link into Claude Code and it'll look at the prompt you sent, watch the Codex thread until it's done, then compare the Codex solution to how it was planning to solve it and automatically fix anything that Codex missed. It can also test the work of the other agent end-to-end. Similar to the idea of OpenRouter's new Fusion feature, I've definitely found that two models thinking through a problem and checking each other's work can be wildly more impactful than just one. 2️⃣ /plan-arbiter Similar ideas as /agent-watchdog - but with this one you have both make plans, compare plans, negotiate the differences, and make a final plan to execute. I find Claude Code is better at writing plans, but Codex is faster and cheaper to execute on them. Then I usually have Claude Code watchdog the Codex work and fix anything that was missed. 3️⃣ /read-the-damn-docs One thing that drives me crazy with coding agents is they're so reluctant to look up docs. They'll just guess and guess and guess at the right API surface for things, or the right solution to an integration of two things. Once I explicitly tell it to look up the docs, it says "Oh, I see the answer," and it fixes the problem. So I made the /read-the-damn-docs skill. Add it and your agents will know when and how to do efficient web searches to look up docs for the types of problems you really should look up docs for. All of these are totally open source over on my GitHub. If you try them, let me know your feedback. Will link to them below:

Steve (Builder.io)

43,089 просмотров • 3 месяцев назад

AI is changing the software engineering craft. Anders Hejlsberg (Anders Hejlsberg) - creator of C#, TypeScript and industry legend - on why code review needs to get more enjoyable in response: #1 - AI is shifting the craft from writing code, to reviewing code: "In a sense, we're all turning into project managers. We can have an army of junior programmers, called agents, that will just spit out reams of code but someone's got to have the big picture and review all of that. And so, increasingly, our craft is going from one of writing the code, to one of reviewing the code and building the architecture of the code and overseeing the work. It's a different kind of craft. It's a different kind of enjoyment. I've always liked writing the code. To me that was the fulfilling part, seeing it work. In a way, AI robs a little bit of that, because I am less interested in reviewing code." #2 - The code review experience should be improved: "I think we could also make the process of reviewing code much more interesting than it is today. I mean, today, you see a list of diffs in alphabetical order and now it's up to you to make heads or tails of it. There are more pedagogical ways of presenting that. And you could have commentary generated by the AI that tells you what the changes are and whatever, and then tries to guide you along. So that symbiotic relationship, I think we need to work on that more and to keep the enjoyment in there."

The Pragmatic Engineer

39,073 просмотров • 4 месяцев назад

There's so much focus on "how can AI do my work for me?" I think the more important question is "what work can I now do with AI that I would have never attempted before?" Earlier this year I wrote freestiler, a vector tiling engine for R and Python, with the help of Claude and Codex. I knew what the ideal engine looked like and how it would work at a high level. I didn't know how to put it together, and I don't know Rust, the language I wanted under the hood. Previously I would never have attempted this project as the ROI wasn't there. It would have taken me a year or more to learn the internals of a vector tiling engine and enough Rust to implement one. With Opus-level models, I could take it on. freestiler now powers all my vector tiling pipelines, including the map below rendering 143 million jobs from LODES, and it has 114 GitHub stars. Building this way has required a different set of skills. I don't review the code line by line. I set up adversarial agents to do that and write the test suites. What I review is the architecture, the behavior, and the results. Agent teams surface findings and explain their reasoning; I evaluate and critique. My job isn't to stress over code formatting, but instead to focus on questions like whether the engine is designed right, whether the output is correct, and if the UX makes sense. This means that I haven't "replaced my work." I've taken on entirely new work, with the help of agents, that I would have never done otherwise. It has taken some getting used to shipping code I haven't personally typed. In the old way of working, I built understanding through writing that code. Now I build understanding through managing the project - writing a spec, reviewing structure, evaluating UX. And that's helped me think a whole lot bigger in terms of what I can now do.

Kyle Walker

13,867 просмотров • 2 месяцев назад

Introducing /visual-plan - a skill to generate rich, visual plans for Claude Code and Codex. Plan mode in Claude Code is incredible. But I always find my eyes glazing over when it gives me this huge markdown essay in my terminal. I found I can make much better visual plans with reusable components. So I made a skill called `/visual-plan`. It generates plans as MDX with visual, interactive components. Diagrams, interactive API specs, schema design changes, annotated code, and even pan and zoomable wireframes. So for any UI work, you can look at a wireframe first, comment on it, iterate, and then have the agent work. I’ve found this to be a much more intuitive interface for reasoning about what the agent is doing. It’s somewhat inspired by that popular post about how HTML is better than Markdown. But HTML can be slow and verbose to write. And it doesn’t look good checked into a repo. This has really made me feel like humans and engineering are entering a new abstraction phase, where we reason about things at the plan level. As long as the plan is good, agents are getting more and more reliable at executing on it. Almost to the degree that we trust the C compiler to compile to assembly reliably. Plans are the new intermediate representation. I also made a skill for the reverse of this, called `/visual-recap`. After the agent works, it gives you a recap of everything it did. Same idea: wireframes, interactive API specs and diffs, schemas, annotated code, etc. So now when you’re reviewing what the agent did for you, or looking at a pull request of somebody else’s code, you can see a visual recap instead of just reading a wall of text. It’s all free and open source. You can find it on my GitHub. Will link to it in the reply because we all know how dumb these algorithms are with links.

Steve (Builder.io)

126,165 просмотров • 3 месяцев назад

Before software engineers even begin writing code, they have to set the stage of the entire development process. This process requires engineers to make complex tradeoffs between requirements, system design, and implementations details. Current IDEs that rely on AI features, like chat and inline coding, can help engineers get the job done quickly on small development tasks. Still, engineers spend much more time on larger projects—even after the initial code is generated—by conducting rigorous testing and creating documentation. This is where today’s AI IDEs can do more to accelerate the development lifecycle—and this is why we built Kiro. Kiro is an AI IDE that helps you go from prototype to production with spec-driven development and agent hooks. From simple to complex tasks, Kiro works alongside you to turn prompts into detailed specs, then into working code, docs, and test so what you build is exactly what you want and ready to share with your team. After a developer builds the code with Kiro, Kiro’s agent hooks help engineers solve challenging problems and automate tasks like generating documentation and unit tests. Kiro brings structure and mature engineering practices to AI coding, so you can go from concept to application while being in the driver’s seat every step of the way. Kiro is free during preview, and supports Mac, Windows, and Linux, and most popular programming languages. We're excited for you to try it out and let us know what you think ➡️

Swami Sivasubramanian

154,343 просмотров • 1 год назад

This might be the best "AI Engineer" I've tried so far. ​ I'm an old school developer who started 30 years ago. I feel very uncomfortable letting AI take control of my code, but for the sake of science, I spent two hours building an application that took me weeks to build a couple of years ago. ​ I used Pythagora, a brand new tool backed by Y Combinator. They just released to the public. ​ Keep in mind that I use AI every day to write code, but Pythagora is something different: it's a tool that leads, and uses you—the human—as the copilot. ​ I go into more details in the video, but here is the TLDR; ​ 1. Holy molly! We've made a ton of progress on this front! This is way better than Devin when I tested it a few months back. ​ 2. Love the approach of generating a plan with sub-tasks before writing any code. ​ 3. The tools never tries to do too much: it tackles every small task one at a time, and gives you instructions so you test everything. ​ 4. It does exactly what you'd do when it gets stuck: writes a bunch of logs and uses those to correct itself. Pretty neat! ​ 5. It's fast. It runs locally. It's an extension to Visual Studio Code. ​ I'm impressed, but I don't think this tool is for me. ​ I'm not the type of developer who's ready to relinquish control. I felt I had no connection with the code because I didn't write it. It was not my code. ​ I know many people who don't care about this. I know many people who will get tremendous value out of Pythagora. I hope they keep pushing the limits, providing feedback, and helping this get to a point where old folks like me feel more comfortable using it. ​ Don't take my word for it. The best thing you can do is to give it a try and see how you feel using it. ​ Thanks to the team who built this, for all of the explanations and support, and especially, for sitting and listening to my dumb questions for 2 hours while I tested this.

Santiago

212,056 просмотров • 2 лет назад

Ever seen a fresh (20x) Claude Max account's 5-hour usage allowance get drained in ~14 minutes? Feast your eyes on my bizarre life now with this screen recording of a recent live work session, something I've gotten at least 100 requests for over the past month. Maybe you can understand now why I need so many accounts and how I can work on so many different projects. You can also see the truth of what I was saying recently about how, once your plan is done and the beads made and polished, it's mostly just machine-tending the swarm that doesn't require much thought. Lots of just telling it to get the next bead and work on it, to review code, to re-read AGENTS dot md after a compaction, etc. And you can see how I use gemini-cli for code review. I give Google a lot of crap for the harness being broken and the capacity overloads, but when it works, it's actually really good for this code review use case. I don't usually let it write new code, though, because I think Opus and 5.2 do a better job. Also, sorry the recording is a bit blurry; I have a 5K resolution monitor and screen recordings usually are hard to watch from it. And btw, this really wasn't that normal of a session for me, it was more frenetic than usual, because I don't want to dox myself or my clients by accident. Hence all the ceaseless terminal tab swirling. I usually do more planning work while this stuff is going on, but I wanted to minimize the chances of leaking important information. That's also why I didn't refresh the Gemini login in the WezTerm window, which killed me, trust me. It's the reason I hate doing these screen recordings in the first place; it kills my productivity. Anyway, hope you liked it. I will also post to YouTube, see reply for link. Thanks for watching.

Jeffrey Emanuel

86,071 просмотров • 8 месяцев назад

Pi was built when there were already agent harnesses around. Here’s why Mario Zechner(Mario Zechner), found them suboptimal and built Pi, a minimalist self-modifying agent: #1 - Mario initially was a believer in Claude Code: "I was a believer in Claude code because they were the first that packaged agentic search up in a really compelling package. And at the time that fit my workflow really well. Everything around the LLM was kind of nice and tidy and easy to understand. I was super happy. I was proselytising Claude code." #2 - Reverse engineering Claude Code highlighted the degradation that Mario felt as a user: "I personally like simple tools that are stable and that I can rely on. Even if they have non-deterministic parts, all the deterministic parts should be as stable as possible. That was just not the experience with Claude Code around summer 2025. They would take away your control of the context. They would inject stuff behind your back, which is bad. Then, your workflows stopped working because there's now a system reminder that you don't even see in the UI that would modify the behaviour of the model. They would also do this to the system prompt. I built a little service where I can track the progression or evolution of the system, prompt and tool definitions and, with every release, it was messing with stuff. That just messed with my workflows and I don't appreciate that." #3 - PI was built with an appreciation for simple and reliable tools: "If I commit to a development tool, I want it to be a stable, reliable thing like a hammer. I don't want my hammer to break a different spot every day. That's terrible. We need somebody who goes the full velocity kind of way. But I don't want to work with a tool like that."

The Pragmatic Engineer

63,020 просмотров • 4 месяцев назад