today with frontier models it's not really necessary anymore. each agent works in its own worktree, on its own branch, so if it goes in the wrong direction it's just a branch to discard.
what matters now is the context you give the agent. I use skills a lot, and with a very good model, giving it direction through a skill changes everything.
As for me, yes, I clearly understand my codebase less. I'm sure of it, I've noticed it lately. What I tell myself is that my value is less there now, and more in my ability to organize the whole thing, on the human side as much as the machines and tools. So I focused on what actually brings value to my company or my role, and it's true that code counts for less there.
I completely understand people who feel lost. A lot of developers chose this job because they were comfortable with code, not to do marketing or sales. And the job that's taking shape asks them to code less and organize more, that's the real tragedy of this shift. Unfortunately that's how the world works: adapt or die. Let's be clear, a lot of people won't make the jump. They'll see their job as dead and may end up leaving it. That's normal, and a shame.
But on the other hand, I think believing you can do without AI is limiting yourself, even a bit illogical. As imperfect as it is, refusing to use it is a bit like refusing the printing press when it was invented. Lots of jobs died, that's a certainty: everyone who wrote texts by hand. Honestly, I see AI exactly like the invention of the printing press. It deeply changes how we produce content, and we know we're going to produce a lot of it.
With the printing press, as with AI, we produce a lot of imperfect stuff, maybe even pointless texts. We already see it: AI often produces code that isn't secure and leaves holes. But flip the question: what valid reason would we have today to abolish the printing press? It produced millions of mediocre books, and yet nobody wants to go back to scribes, because it put the written word in everyone's hands. I think it'll be the same for AI. The real question isn't that it produces bad code, it's what we'd be willing to lose by refusing to use it.
The point is to be in control and in the loop. The current state of AI is that it is myopic. It doesn't see the bigger picture.
Not using or resisting AI is definitely stupid. The goal is to understand things so that you know what questions to ask.
Most of time I dont really care about the internal AI rationalazations, they are fun to read from time to time. But all in all i just care about the result.
Now I just look at the change log on git and try to keep up with the changes there. I would rather ask why a particular change was done from a side agent.
I also stopped all pleasantries, and now i am more into territory of (caveman/idot) when it comes to prmpting. I do positive reinforcement if I like a particular style of solution or feature.
The overhead of stupid decisions from managers with questionable knowledge is way to big for AI mistakes to even matter when it comes to the code.
I have given up technical discussions with C suits a long time ago because, they will want their bad ideas implemented regardless.
Sadly we as programmers want to believe that someone cares about the code, the reality of the industry is that we are closer to a "Cirque de Soleil" production style, than actual engineering. Its all just a show....
Instead of having that hands-on approach to agents, I have set up mechanisms to enforce safety in all regards - hooks blocking destructive commands, all changes landing in their own worktree or branch, and lots and lots of testing. For anything major - deploys, flashing hardware - explicitly requires my written approval.
Mostly paying attention to final reports, test results, claims, and competitor benchmarking when appropriate.
How do you even keep track of what's happening where? And won't you end up spending almost as much time verifying that what you intended was actually built as you would have spent building it yourself one after the other?