My usual workflow (not counting throwaway code) is to use agents as virtual pair programmers, which gives me a good balance of quality and velocity.
Each interaction with the agent remains individually comprehensible and makes progress towards one of the following goals:
- Understanding the problem/solution space.
- Implementing a solution.
- Understanding the solution, especially any agent-written parts and interaction with existing code.
- Evaluating the solution (tests, code analysis, what-if scenarios, consider edge cases).
This does not just involve the model generating code, but also explaining or analyzing it as needed.
This process allows me to retain a mental model in lockstep with developing the written code and have some assurance both of its functionality and non-functional requirements. It also fits in nicely with most existing team-level workflows.
But it's also something that I can do with pretty much any of the modern models.