I haven't written actual code, manually in almost two years. I don't mind it. It's a net positive. But I do think I iterate on bad and broken ideas longer than I did the old fashioned way. The trial and error process of doing it by hand, the troubleshooting of it all.
Doing it the new way presents one fairly serious problem: an agent either doesn't know, or won't mention when your ideas are broken. You may catch it early, you may not.
But without the trial and errors of human process, you do run a much higher risk of reaching architectural problems that can't be solved without scrapping large sections of your app, because your assumptions were wrong at the beginning.
One common complaint about agentic coding is that "an agent can get you 80% of the way there. And then it takes forever to get it right."
Incidentally, that's why that happens.
TDD does help.
But the process has changed enough to create these new classes of problem.
One thing I will say, is that estimating projects is a lot more challenging than it used to be. In the old days, I had a pretty good instinct about what my own velocity was. And I knew that multiplying my own instinct by 1.241 would usually get me within about three hours of my estimates.
Today, my velocity ranges, because the agents make big mistakes. And I never know where they're going to happen.
Take today, for example. I'm building out a new ticket system. There's a dependency that we mapped out at the beginning of the project. It depends on Java 25, which was a problem, because my system only had the Java 21 toolkit installed on it.
Good to know.
New problem: My agents did notice that. And rather than bringing it to my attention at the beginning of the project, they decided to code around the problem by creating redundant infra that I now need to go in and consolidate against the original requirement.
This happened, even though I explicitly prompted and instructed the agents not to do things like this.
Was it my fault?
Yes, 100%, I should know better.
Most things like this are actually user error of one shade or another.
But I do feel like there should have been a mention of it.
"Hey, we started coding around this because you gave us a system that can't compile the requirement."
Would have been nice.
It would have saved me hours on the back of this thing.
Sometimes, I feel like I'm using my QA skills harder and more often than I did in the old system.
But yeah. Since you never know when or where chaos will strike, simple estimates based on your own current velocity don't really hold the way they used to.
I have yet to work out a solution for this.