Maybe we're getting it backwards.
Most organisations know that good software engineering looks something like this:
- Break work into independently valuable (and verifiable) chunks
- Don't start something new if you can meaningfully finish something in progress instead
- Invest time in developing a shared understanding before starting
- Embrace "throw-away" effort in order to understand the right solution
- Write tests - externalise and automate your definition of done
- Automate risky or tedious activities (like deployment)
- Fix issues as they come up (refactor in place)
- Prefer a small and well-understood set of "boring" tools and technologies
But the reality is that doing this is hard. Humans locally optimise in the face of deadline pressure. They get attached to one particular idea or implementation, get distracted by the latest shiny technologies, and fall for traps like "next quarter we'll get a chance to stop and fix things".
If only there was a technology that blindly does what you tell it, then we could load up the definition of what good looks like and get it to puppet our weak and feeble flesh toward victory... oh wait.
Instead of giving humans agent harnesses, maybe we should give agents human harnesses. Or in more prosaic terms, maybe we should build more affordances into agents to help humans work well (and not just quickly).
What would this look like? Ideally, the "human harness" gives the agent the tools to nudge me toward healthier engineering decisions without burning me out through constant prompts and decision-making. This suggests a need to prioritise decision points and buffer less critical ones until a sensible check-in point (probably commit time).
We probably also want a notion of gates - don't let me start work if there are critical unknowns or if I'm being lazy and outsourcing too many critical decisions to the agent.
Finally, some sort of "take a break" feature seems healthy, both for the driver and the project. You've just shipped five new features, maybe go for a walk and see what breaks in production before piling on more changes.
Right now, while we're still building the tooling around AI, we have a chance to build the tools we want.