However, I'm still split. Because this could mean that we see a jump in code quality, due to bad coders getting someone better to code for them. But we could see a decrease in code quality, due to less people "caring".
However, I'm still split. Because this could mean that we see a jump in code quality, due to bad coders getting someone better to code for them. But we could see a decrease in code quality, due to less people "caring".
I envy you.
I believe that anyone who holds this position has been extremely lucky/fortunate to work with only top-tier developers. And does not read or work with open source projects.
Last year’s models are producing code better than _at least_ 50% of the developers I’ve worked with. Today’s frontier models are better than probably 75%. If the code that humans have been generating has been “good” (on average) or at least good enough, then the models that exist today are producing “good” code.
And the bar is already raised because every single one of those engineers now has access to the same models. So you need to be in the top 1% of the engineers armed with LLMs. You can't just rely on LLMs getting better. AI is not the great equalizer, it is, in fact the opposite.
This is very much not my experience.
I’m probably the best coder in my org, which doesn’t really say much, but at least allows me to judge about the room temperature. It is solved. I don’t say that’s you, but the only people who say it isn’t “that good” are the same people who used to yak shave, rename and move things 10 times until it “feels right”.
Between Opus 5.5 + GPT-6.1 Sol reviewer, most issues and unhandled edge cases are caught during implementation.
Then you QA test and provide the feedback.
I guarantee that this is enough to produce not only a working product, but is well capable of building apps much better than what is out there, without ever looking at the code.
Depending on your product and risk tolerance you may disagree. I believe that for the vast majority of use cases the approach I described, combined with extensive manual testing, is entirely adequate.
It's worth noting that I also have a lot of guardrails and custom tooling around my own process to check code quality, QA functionality, limit blast radius of bugs, add observability, make deployments and rollbacks quick and low risk, etc.
If you want to provide a good, secure, user-empowering, performant product, you cannot delegate everything agents, I assure you. And, building your foundation on un-reviewed mess of code will come back to bite you (partly depending on how big you grow), the same way it does with humans, which management always think is not an issue until it becomes one.
Now, you don't have to take my word for. Think of this: why is every change to Claude Code making it worse now? It is not almost unusable for me after many regressions over past hew years in its UX. Is it because of a lack of AI being used in its development?
Because by my estimation we did build our products in such a way and have that experience, while you presumably did not.
As for Claude Code, they recently delivered a significant upgrade to the desktop app where some commented that it felt like they upgraded Opus 5.5 to 5.6.
It's in fact working great, and the days where it was buggy are in my view in the past.
As for the rest, I assure you that the product is much more performant, secure, and delivers far, far more value to my users than I ever could have done prior to AI-assisted coding. And I'm a staff level engineer with 25 years of coding experience across all kinds of organizations. I'm not the best coder, but I'm at least decent. AI has been a massive force multiplier for me, even as I agree that it's not perfect.
Unpacking a little more, I think the area you might be running into issues with is the idea that because I rarely open my IDE, I'm "delegating everything to agents". I'm really not. I review PRs (just not in my IDE), I steer higher-level abstractions in the broader system. To me, automated coding with a frontier model is definitely good enough that it's utterly pointless of me to read the internals of 99% of functions, even classes. Assuming the inputs are correct, the agents will get those details correct. And for the tiny fraction of the time when that's not the case, that's why we have adversarial review, guardrails, tests, o11y, quick rollbacks, etc, etc. Working at the level of how the broader building blocks of the system fit together, bisecting the software into low / medium / high risk areas so I can direct more of my scarcest resource (my attention) towards the highest ROI portions, and building the infrastructure (the "software factory") that the agents work within building and improving the product is where I can add the most value in November 2026.
Have you ever worked in a bigger tech company with tens of millions of lines of code and senior staff / principal engineers? In my experience, sure they're reading and writing code here and there, but that's not the value they provide. The value they provide is the broader architectural view of the systems and how they fit together. It's no different with AI.
We may differ in the level of review and steering we do a bit. I have worked in codebases approaching a 1 million LOC, and I am now working on a suite of products and libraries in a monorepo that would be the flagship products of my own small company.
I have defined a strong architecture, guardrails, and a way of working that the agents keep to. I approve almost every single edit they do in the terminal, but most of the time I do not have to read each line, because they are good enough. Every now and then, I catch them doing something egregious, and I correct or redirect them. Other times, they stop to ask me for direction. Still, I am faster and do more work with the help of the agents.
So, no I'm not saying the agents do not provide value; they help with a lot of grunt work, and they can write most code basically correctly. Where I am firmly still in the driver's seat is with architecture, UX, quality control, product invariants and standards, and the occasional tweak to lower level implementation details. These remain a lot of work, unless you are simply building CRUD forms.
This does not sound like "coding is solved". If coding is solved, then I can one-shot a complex software product into being, which is never going to be the case.
I'm not sure if this means we will see smaller and smaller firms as a sort of market darwinism rewards good AI use by solopreneurs, and as large organizations tear themselves apart, or if we see the way big firms hold people accountable for their work change dramatically.
I also wonder what happens to these solo-businesses as they need to hire their second employee. What goes from a personal workflow will need to become a business process. I bet a lot of solo operators will resist employee #2 at nearly every cost!
I think what people are missing is that people often become craftsman because we want to be able to keep the code adaptive and performant so we can provide business value quickly and efficiently.
The change is with models, the benefit dynamics of immaculately structured code changes dramitically. Now the real area you need to focus on is correctness and performance. Structure doesn't really matter unless it serves those two purposes, at least from the business value side.
As with eliminating other forms of abstraction, there's not much gain from doing so. Writing source code and then compiling it offers many useful checks, and greatly simplifies making changes. It's just something that may no longer be necessary at some point.
Nearly everyone I’ve worked with that would say this ended up being the in the bottom quartile of those shipping features and their code was often the most complex. At least in small, “fast”-moving companies.
A few people I have worked with have nailed it, but they were the ones to balance present and future weighted towards present.
Spec was good, all tests green, app worked. If I didn't actually go in and try to understand the code I would have shipped it like this.
So here is my question to people saying it's solved : do you actually know that it is or does it simply appear so because all the tests are green?
First of all, it sounds unlikely to me that such an implementation was made with Opus 5.5 while it never mentioned the workaround.
Secondly, if the performance was indeed inadequate, that's something I would have caught during QA testing and simply have had the agent fix it.
When I looked at a benchmark, it suggested Sonnet 5.5 wasn't much cheaper than Opus 5.5 at Low to Medium effort for similar performance. That might not be representative of real world use though.
Optimizing performance is one of the tasks best suited to AI, since the outcome is measurable.
I can't comment on complex algorithms specifically, but it's not at all the case that this works only for basic apps or cannot handle complex, performance critical work.
First, you question the model. I have reams and reams of conversations with Opus 5.5 that shows it makes architectural messes all the time
And then you are saying you needed to have performance tests (which many devs don't even bother with) to catch bad architecture?? lol
So what if the architectural problem is not one that would be caught with a performance test? It seems you lack imagination to think of all the ton of issues that that would be very complicated to catch with tests.
I don't think I commented on performance tests at all.
Maybe I lack imagination here, yes, but generally I go by experience rather than talking about imagined issues. That is precisely what many here seem to do when it comes to explaining why AI couldn't work for them, and why reviewing the code remains necessary.
Me: Why this:
> I'm adding a lookup to persistEphemeralVFolder so that a repeated search reuses the user's root vFolder with the same query instead of hitting the unique index.
Claude Opus 5.5: A search stores its query as an ephemeral root vFolder. The new unique index on (user, parent query, query) now rejects a second root vFolder with the same query. As written, persistEphemeralVFolder always inserts, so repeating a search would fail its insert, the retry with a fresh short code would fail too, and the search would return an error. The Ephemeral VFolder paragraph we rewrote in the SPECS also says a search reuses the existing vFolder with its query, so the user gets the same short code back.
The lookup I proposed would also copy the query-then-create logic already in the PUT /vfolders handler. A cleaner option is one shared engine function that finds or creates a vFolder by query, called by both the handler and persistEphemeralVFolder. Shall I do that, or keep the local lookup?
Churned for 6s · done 1:10 PM
Me: I mean, is it not cleaner to fix this: "persistEphemeralVFolder always insert"
And generally, we want the db and its indexes to do their work, not duplicating that in application code with pre-lookups and stuff
Claude Opus 5.5: You're right. Both persistEphemeralVFolder and the lookup I put in the PUT /vfolders handler should be replaced by a save with conflict keys (user, parent query, query), so the unique index decides whether a row is created or updated.
if the cost of writing code collapses, what are the barriers to including these kind of tests?
It seems like the flow and work when using LLMs has to change, spend longer on the plan, spend more time on defensive testing, have more comprehensive tests (input validation, cybersecurity, performance, data hygine) and less time on functionality
if you want to write code the old way where the architecture is human readable and the tests are an after thought, then thats on you if you then ignore the part where the human has to read it.
TLDR: either go full agent, or actually learn the code being produced, but not both.
… Yes? Of course recognizing the flaws in the code correlates with having high standards. That doesn't mean the flaws aren't there.
Product quality is an emergent property of high standards (aka code quality).
Refactoring and clearing up tech debt is faster now than it's ever been, and assuming it'll be even better in the near future, why should anyone care about what is "good" right now?
(This is a devil's advocate kind of remark by the way, I'm very much in favor of good / quality code, but also realistic enough that nobody has or gets time to finetune code nearly as much as they should)
There is still questions about if that jira ticket should have been written but from ticket to mergable PR it's better than me.
I can virtually guarantee the bar for code can go so much lower as we rapidly deskill programmers.
We actually have a fabulous opportunity to generate much higher quality code products with AI.
And even in your case, with the eager AI student -- AI code education is much better than reading docs and struggling with tools. Students can now focus on the important software topics.
I remember my intro C++ classes and how many students stumbled on pointless & transient tooling , that was completely orthogonal to their proper engineering skills.
Now students can focus on their area of expertise and produce the highest quality possible without any resource restrictions.