@NathanMcNulty 100%
I recommend one better.
EVERY app in your tenant should require user assignment and only the users who are authorised should use the app.
My heuristic is that any diff an agent generates over ~1500 lines is too big and is indicative that the problem needs to be decomposed. This is my general pattern now for feature work:
1. Try to implement the whole feature, loosely guided. I call this the "draw the owl" prompt in reference to the meme. Expect garbage, you're going to get garbage.
2. If the diff is less than 1500 lines, review it and iterate normally. If the diff is more than 1500 lines, prompt the agent to decompose the problem into atomic, incremental, reviewable tasks. Simultaneously, do this yourself.
3. Agents will very often make these tasks way too specific to the shape they solved. You need to massage it into the right general shape. Do that.
4. Kick off new agents to work on those incremental things (as parallelized as possible). Apply the same rules.
5. At a certain, point, repeat the "draw the owl" prompt. At some point, you will get beneath your review-ability threshold.
This has been producing consistently high quality, maintainable, reviewable chunks of code that have a good handoff to either merge as-is or human refinement.
And with the latest frontier models at xhigh thinking, these are all slow enough that you can usually have multiple going concurrently while you are actively reviewing others or working on your own tasks.
HITL (human-in-the-loop) agents are still super important, especially for feature work. Features touch the human boundary in terms of UI, API, etc. And net new stuff can introduce pathologies in the architecture that violate desired invariants (these should be represented in specs or tests but we aren't perfect!).
I know a lot of the leading edge agentic discourse is about "loops" and agents driving agents continuously. I do some of that (will report on that later). But, in terms of raw daily get-shit-done type of work, this is my most rewarding pattern at the moment.
Welp, that happened faster than I predicted. Thought it would be end of 2027, then early 2027, but agentic traffic growing so fast that bots have now passed human traffic online for the first time in the Internet's history. https://t.co/2zX5bHdhsa
@cgillum Adopting durable functions was arguably one of the best career moves I've ever made. 2+ years later I've seen hundreds of millions of executions and there's still no better way to handle long running jobs reliably and at a low cost IMO
One of the principles I'm learning with AI is that you need a stronger foundation. In order to move "fast" we need solid patterns, less stylistic flair and more, "it just works." Golang is a good example of this. It's a boring language, it doesn't have much variability, and AI rocks with it. So I see this great need for better frameworks. If you vibe code all your dependencies you are just building a shaky foundation. But obviously there's a lot of node.js dependencies that don't need to exist and I suspect rust is similar because it was birthed from a similar culture.
@awakecoding I'm prepping for a month long re-evaluation of other platforms for my internal development and scrambling to finish a decent RAG pipeline to use Azure Foundry for customer site model fine tuning. ISV Sponsorship coming in handy!
@awakecoding My go-to has been the azure sign tool, but for mostly .NET projects that needed a windows pipeline agent anyways. Moving from linux to windows just for code signing for a project recently made me a little sad so this is cool to see