If you're interested, I recommend checking out Kiro from Amazon.
Every time I've tried Copilot or Cursor, it's happily gone off and written or rewritten code into a state it seemed very proud of, and which didn't even work, let alone solve the problem I put to it.
Meanwhile, Kiro:
1. Created a requirements document, with user stories and acceptance criteria, so that we could be on the same page about the goals
2. Once I signed off on that, it then created a design document, with code examples, error handling cases, and an architecture diagram, for me to review
3. After that looked good, it set about creating an itemized task list for each step of the implementation, broken down into specific tasks and sub-tasks and including which of the acceptance criteria from step 1 that task addressed
4. I could go through the document task by task, ask it to work on it, and then review the results
At one point, it noticed that the compiler had reported a minor issue with the code it had written, but correctly identified that resolving that issue would involve implementing something that was slated for a future task, so it opted to ignore the issue until the appropriate time.
For once, I found myself using an AI tool that handled the part of the job I hate the most, and am the worst at: planning, diagramming, and breaking down tasks. Even if it hadn't been able to write any working code at all, it already created something useful for me that I could have built off of, but it did end up writing something that worked great.
Note that I'm not really familiar with Rust (as most of the code will demonstrate), so it would probably have been far faster for an experienced Rust programmer to implement this. In my case, though, I just let it do its thing in the background and checked in occasionally to validate it was doing what I expected.
What you are describing is effectively my work flow with any LLM tooling, it's just not formalized by the tooling itself. Sounds interesting, I will take it for a spin.
Every time I've tried Copilot or Cursor, it's happily gone off and written or rewritten code into a state it seemed very proud of, and which didn't even work, let alone solve the problem I put to it.
Meanwhile, Kiro:
1. Created a requirements document, with user stories and acceptance criteria, so that we could be on the same page about the goals
2. Once I signed off on that, it then created a design document, with code examples, error handling cases, and an architecture diagram, for me to review
3. After that looked good, it set about creating an itemized task list for each step of the implementation, broken down into specific tasks and sub-tasks and including which of the acceptance criteria from step 1 that task addressed
4. I could go through the document task by task, ask it to work on it, and then review the results
At one point, it noticed that the compiler had reported a minor issue with the code it had written, but correctly identified that resolving that issue would involve implementing something that was slated for a future task, so it opted to ignore the issue until the appropriate time.
For once, I found myself using an AI tool that handled the part of the job I hate the most, and am the worst at: planning, diagramming, and breaking down tasks. Even if it hadn't been able to write any working code at all, it already created something useful for me that I could have built off of, but it did end up writing something that worked great.
In case anyone is curious about the files it created, you can see them here: https://github.com/danudey/rust-downloader/pull/4
Note that I'm not really familiar with Rust (as most of the code will demonstrate), so it would probably have been far faster for an experienced Rust programmer to implement this. In my case, though, I just let it do its thing in the background and checked in occasionally to validate it was doing what I expected.