Why Software Factories Fail (or: harness engineering is not enough)
Posted by dhorthy 1 day ago
Comments
Comment by sathish316 1 day ago
Software factories can implement anything given a one-liner requirement. That one-liner requirement can be a complete app/product, epic, feature, bug, design change or refactoring. But these one liner requirements are requirements coming from a human who has an intent or requirement or direction for the product to evolve in mind. Can Software factories manufacture intent that reflects the exact requirements of the person using it or their vision of how the product or software should evolve?
Implementation in any language is as easy as generating a summary for an LLM. If coding is only math and there is only one way to translate a requirement into an implementation, the problem boils down to just providing or verifying generated intent. But, there is definitely more than one way to implement a thing and one of the ways leads to a design and architecture that is coherent with rest of the system, design and architecture that is extensible and evolves, code that you can keep in your head when you want to change things next time or tomorrow, software that can serve millions of users and securely guarantee millions of dollars of revenue. There is a combinatorial explosion of ways and the one right way is also subjective of the person and the problem. Software factories can of course improve Quality by generating more unit tests, more integration tests, fix code violations, generate Proof of work as videos, screenshots etc, but there is no feedback loop or test suite to verify and correct the other subjective notions of Quality.
Comment by canpan 1 day ago
One or more of the following can be true:
- Customer really wants X
- Customer doesnt actually need X at all
- Customer wants Y not X but couldnt express himself
- Customer B and C do NOT want X at all
- Customer is just messing with you for no reasonComment by podocarp 20 hours ago
Comment by shermantanktop 19 hours ago
Comment by RugnirViking 14 hours ago
They will out-corporate you. Better to be friends with them, or failing that, move from under them
Comment by stevefan1999 14 hours ago
Comment by nfbdhdfbf 13 hours ago
There is almost nothing that can be generalized, and people who hold up their organization as an example to strive for are utterly clueless
Comment by stevefan1999 12 hours ago
Well, while I do agree it is an early mover (I believe Steam is not the first to do online game platform, but it should indeed be the first one to use a CDN for the solution), I'm sorry that you have Ubisoft Connect, EA Origin, Epic Games Store, itch.io, GOG, Humble Bundle.
So you do have a choice. That renders the statement of it being a monopoly impossible. It's simply because every other platforms sucks.
In other words, it's like Nvidia. You choose Nvidia because AMD and Intel sucks, not because you don't have a choice.
> engineering quality is mediocre
You should see how CS2's smoke system works: https://www.youtube.com/watch?v=ryB8hT5TMSg
tl;dw: it is a voxel ray marching plus flood fill with Mie scattering. I'd like to point this out that is not only a really good game design, but it also requires ingenious engineering quality. I tried to improve upon it by adding octrees (or in other word, making it sparse voxel octree) but it doesn't seems to add much.
Oh and plus their new bomb shock wave system. I tried to reverse engineer it with vector field, but I couldn't come up with the ODE equations to recreate it. I believe it has to be some kind of field, because in a high energy explosion, it scatter through air into fluid-like structure and hence we can use some aerodynamics for simluation
Comment by antonvs 6 hours ago
Comment by NamlchakKhandro 18 hours ago
Comment by clintonb 11 hours ago
Comment by copperx 19 hours ago
Comment by cjfd 18 hours ago
Comment by locallost 17 hours ago
Comment by fatata123 15 hours ago
Comment by sathish316 1 day ago
You can even take a stand that you’ll never look at the code and just ship. This is a perfect equilibrium for a Software factory, where the only input or feedback is a one-liner/specced requirement and the only output is outcome of whether the one-liner requirement worked or not.
For almost any other software that does not fit this criteria, software factories are yet to solve the Intent and Subjective Quality problem.
Comment by bandrami 21 hours ago
The 900 pound gorilla has for a while been "where is all the output of these LLMs?", and this seems to be the answer; the number of apps on the various app stores has skyrocketed over the past two quarters but installs overall are actually down a little bit. So it seems like we've had an explosion of software that one or two people use. Which is a cool situation to think about but is pretty bearish for the "AI as a profitable business" idea.
Comment by tmikaeld 21 hours ago
Comment by bandrami 21 hours ago
Comment by bandrami 20 hours ago
Comment by jambalaya8 20 hours ago
Comment by bandrami 20 hours ago
Comment by jambalaya8 8 hours ago
Comment by davidgl 18 hours ago
Comment by sarchertech 15 hours ago
And when I did a spot check, most new apps were just wrappers around LLM APIs.
Comment by aleph_minus_one 23 hours ago
I would rather claim that for my personal/hobby software, I apply a much higher quality standard than for the software that I write at work.
Believe me: I would love to apply the same high (or even higher) standard at work, too.
The problem rather is that it is a very common situation that bosses actively prohibit me from rocking the boat too much. If I make (I think typically good) suggestions, I often get very stern reactions.
At work, elegance is not celebrated - just implement the tasks of users who don't care about quality or elegance.
Comment by tonyedgecombe 17 hours ago
Comment by andrewljohnson 22 hours ago
Comment by taneq 22 hours ago
Doesn’t matter whether ‘the problem’ is the employer, the employee, both, or neither. They’re a bad fit for each other.
Comment by podocarp 20 hours ago
Comment by swiftcoder 18 hours ago
This really depends on whether they are paying you decently. The number of people I've met who found a nice corner in FAANG, and decided to keep their head down and collect a steady paycheque... One may find one can swallow a lot of engineering pride for a recurring six figures
Comment by yurishimo 17 hours ago
Especially in the current job market, “find a new job and quit” is going to cost you so much time and effort and for many people it will still be a lateral move in terms of company quality in regards to engineering practices. It’s hard to make these kinds of deep company discoveries until you’re in the thick of it but by then it’s too late.
Personally, I’m advocating for change where I can and not taking it personally when the manager says no. I put in enough effort not to get paged in the middle of the night which is generally plenty for management. It helps that I don’t work in a super strict business environment.
There’s more to life outside of work as well so if you can silo that bit of your life and enjoy things outside of working hours and you’re content, so be it.
Comment by eru 20 hours ago
Comment by preg_match 21 hours ago
Comment by dhorthy 21 hours ago
Comment by preg_match 20 hours ago
Comment by black_knight 18 hours ago
Since Claude (code) knows all about my system, it will also tailor solutions to it when I ask how to do something. Using it I can often find really neat solutions to whatever sys admin task I can imagine.
Comment by high_na_euv 17 hours ago
What??
It is definitely not true
Comment by sathish316 15 hours ago
Comment by songhonglei1985 23 hours ago
Comment by daniel-smid 19 hours ago
Comment by daniel-smid 19 hours ago
Comment by fishtoaster 1 day ago
> # We tried this > In July 2025 we went full lights-off
Isn't it pretty well-accepted at this point that the models underwent a step-change in usefulness around fall 2025 / spring 2026? I know that I was able to start handing agents whole features after that, but not before.
I feel like any perspective/experience on "what agents can/can't do" from before that period is... maybe less than relevant to the modern era. TFA calls it out a few sections later with "But surely the models have gotten better since then", but then just writes off any improvement. That does not match my experience.
Comment by 2001zhaozhao 1 day ago
For instance I think their post "long-context isn't the answer" on their website post straight-up isn't accurate, and gives me the impression they are just extrapolating previous performance to new models. In my experience, Opus 4.6 and newer have worked very reliably for long context to me (i don't perceive any intelligence drop at 700-900K tokens). Yeah it's extremely cost-inefficient, but it works.
Comment by chmod775 22 hours ago
I have countless examples of this for Fable 5 and Opus 4.8 at just half that many tokens. Sometimes they can't even remember the correct workflow even if they're merely an orchestrator and have been going through the same 5 step loop multiple times for pretty much their entire context window.
Wall of shame with an Opus and a Fable oopsie from just yesterday: https://i.imgur.com/znSJ3OE.png and https://i.imgur.com/DLOHQ1B.png
One of them is particularly egregious because it uses a CLI tool to step through the stages that literally tells it what to do next. How do you fuck this up? Needless to say that tool was revised to force the agents to acknowledge everything happened, but I'm sure it will find a way to eventually mess up anyhow.
And orchestration should be the easy part. It's pretty much just writing and adjusting workflow files. Don't get me started on code quality - but I realize that's subjective and my bar is unusually high. There's a reason I have them run adversarial verifiers along multiple axis before their output is even worth my attention.
Comment by hansvm 1 day ago
Comment by Terretta 12 hours ago
not for steps.
Comment by hansvm 5 hours ago
Comment by eru 20 hours ago
And competition is fixing that as we speak.
Comment by superfrank 19 hours ago
He's well aware of exactly how good the models are today and I'm sure that if he thought they were good enough now to make the dark factory idea work, they'd be trying again.
Comment by tcoff91 1 day ago
They still are far from perfect but they're massively helpful.
Comment by json_hero 1 day ago
Comment by RamblingCTO 19 hours ago
Comment by dhorthy 1 day ago
Comment by json_hero 1 day ago
Comment by dhorthy 1 day ago
Comment by fishtoaster 1 day ago
Comment by paulhebert 23 hours ago
This part of your comment is confusing.
The article talks about agents past this period. Yet it seems like you’re saying this article isn’t relevant because it doesn’t?
Comment by svara 19 hours ago
> just writes off any improvement
Is not what that section contains?
There's a more nuanced point about capabilities improving in some ways but not others (ability to one-shot apps vs. maintenance of existing code over time).
Comment by janalsncm 1 day ago
Claude can write the code for you but it can’t understand it for you. That part has to happen at human speeds.
There are cases where you don’t have to understand everything, but I think that’s a more nuanced question.
All of the above is true even if Claude writes perfect code.
Comment by swiftcoder 18 hours ago
Part of the problem is that Claude can go spelunking in a spaghetti codebase far faster than us humans. It doesn't necessarily help you understand the project, but if you farm that understanding out to Claude, you can keep working long after the codebase has become unusable for humans...
Comment by pydry 18 hours ago
Comment by archargelod 17 hours ago
Comment by pydry 16 hours ago
Comment by weatherlite 19 hours ago
It's an interesting point. We can also think about it perhaps as a non binary thing - you need X amount of understanding in a specific codebase to be effective. Even before LLMs in large codebases no one understood it all; but we at least mostly understood our own PRs and our own areas of expertise in the codebase.
Comment by nevertoolate 18 hours ago
Comment by pydry 18 hours ago
A lot of the time people flailed.
The one thing Ive never seen an LLM do well is shape clean, coherent abstractions. To be fair it's a rare human skill as well but in LLMs if they don't have a direct analog in their training data they flail.
Comment by dboreham 22 hours ago
Comment by iamwil 15 hours ago
I do spend a lot of time up front specifying what I want. My prompts aren't one-liners, but rather an interview process where we work through all the open questions and ambiguity.
I haven't hit the wall that the OP talked about (when agents just can't seem to make the right changes, and it's impossible for me to go in and change things manually). I used a lot of guardrails such as plan reviews, browser-based QA, adversarial reviews, unit tests, linters, typecheckers, post-commit hooks, and formal method traces. I also specified engineering principles that steers the code base to minimize state and side-effects: functional core; imperative shell, make impossible states impossible, use pure functional style, etc.
There are times, when I can feel a part of the code base is messy without looking at it, because the agent will make recurring mistakes in the same part of the code base over time. What I found the agent was doing over time is that it's been layering state variables as requirements were discovered. So what helps is to ask it to refactor all these state variables into a single sum type. And if the state machine for it is complicated, I'll ask it to write a formal model of the state in Quint. Then I'll generate traces that get run as unit tests, and ask it to write the code against that.
So while the code base isn't exactly Brownfield, it's over a year old now. As for the code base, there's a backend and a frontend. I think it helps that I established a clear pattern I wanted. You code are like memes: agents will just copy patterns they see in the code base. When it does have to create a new part of the system, I found Sonnet-level models tend to draw system boundaries in all the wrong places. Opus is better. I don't yet know about Fable.
Happy to answer any questions about my workflow.
Comment by adamtaylor_13 13 hours ago
More often than not you can "feel" when the quality has degraded. Many of these pieces leave you hanging on the assumption that once it's slopped up that's the game, it's over, you're cooked, straight to jail.
But I've yet to reach that position and be unable to pop the hood, identify the issue, and agentic-ly clean it up.
The post explicitly says it's not a skill issue, but I've yet to see any situation where an average engineer can't unslop their codebase.
Comment by eloisius 13 hours ago
Comment by chrisweekly 14 hours ago
Comment by rglynn 1 day ago
Yes, in an ideal world, PRs read well, are a joy to review, reflect what you discussed etc etc. We have to be real; there is only so much we can do to that end.
I'm not sure how the best teams do PR review, from my perspective it sucks. I'm talking specifically about the UX. I've always hated Github's PR page, so I typically reviewed by pulling down the branch and opening the diff with $EDITOR.
These days I think there's really no excuse for the awful UX. Linear (a company that isn't even in the domain of code review) put out a basic PR review feature[0] that is already better than what GH offers. It's simple: point a small model at the PR, group file changes together based on theme, add some commentary and sort by importance (schema changes > openapi spec).
Immediately, so much mental load has been reduced without the reviewer or the requester doing anything. This feature is pretty damn basic, and I think there are obvious next steps like generating visualisations which a dedicated product could find the time to implement.
Keen to hear others thoughts on why this is the wrong approach, or if there are tools in wide use that solve for this, or why this isnt the right problem to focus on.
Comment by onion2k 19 hours ago
They don't do them. They discuss the changes as the team are doing them (software design and architecture), they automate all the things that would be nitpicks (linting, formatting, etc), and they adhere to a strict 'Do not break the build' rule so merging in something can't be disastrous (with a lot of automated checks and tests to prove that's true). They also make sure there's a robust rollback process just in case.
Once you do all that the PR process is pointless. It never catches anything useful. The team can trust one another to merge without that gate.
Comment by kkapelon 18 hours ago
manual PR reviews can catch things that llms currently miss. Examples are duplicated code, lack of unit tests or introducing security issues. None of these really break the build. So just requiring "do not break the build" is a very low barrier.
Tests also are useless unless you have a smart system that runs the new test WITHOUT the changes and see it break. Most teams I see today have the LLM write a test along with the change, without a guarantee that the tests actually guard the feature.
Comment by onion2k 13 hours ago
I didn't say LLMs though. I'm talking about the sort of code quality tooling that's been in use for decades - Sonarqube, Codacy, CodeClimate, etc for code quality, eslint for AST-based code rule checking (easily picks up duplication for example), Istanbul for code coverage, Wiz or Github Advanced Security for security.
These are well known industry standards for knowing a code change is correct without giving it to an LLM to guess at. If you have them, and they're well configured, and you maintain the tooling properly, then PRs become unhelpful gates that don't find problems.
Comment by kkapelon 11 hours ago
They will not handle any architectural problems (i.e. this method is correct but doesn't belong on this package, or this method is called isX - but has side effects).
And I am pretty sure that none of them do what I am saying with the tests. i.e. run tests without the associated code change and see them fail. I am also pretty certain that none of them will understand problems with breaking backward compatibility (i.e., a fix that is correct that breaks the setup of all existing users).
In other words, it is possible today to create a PR that passes all checks, all security scans, all analysis tools, all test suite while still being wrong due to architecture, backwards compatibilty, wrong scope etc. So even before and even after LLMs a human is needed there.
PRs might become unhelpful as you say if in the future one of the two things we happen
1) LLMs have unlimited context so you can pass all source code plus all architectural designs them 2) We have a super smart analysis tool that is one level above what we have today (including llms)
We are not there yet.
Comment by spacebanana7 17 hours ago
I find the format of PRs to be better suited to discussion than slack/teams messages. Key developers need to actively sign off, code suggestions are much easier, and the CICD makes sure we're not wasting time discussing code that's not compliant with obvious standards.
Obviously some level of agreement is needed before creating a ticket at all, but implementation details around say creating a terraform module to share functionality between teams do need to be discussed somewhere - and it can be difficult for any individual dev to have all the low level context.
Comment by rglynn 16 hours ago
Comment by 4lx87 1 day ago
I think all these platforms chasing code review are doomed. My LLM doesn't need any of this tooling.
We should be reviewing the actual working software. Systems that make it easy and instant to demo any proposed change are what is needed. Code (and specs) are going to fade into obscurity. PR review has already shifted towards validating the product (working software) over the process (code).
The future of software production is more like Replit – not GitHub.
Comment by dmurvihill 1 day ago
Comment by satvikpendem 1 day ago
Comment by 20k 1 day ago
Comment by jeremyjh 1 day ago
This is not a certain fate but it sure looks likely and is a serious risk. Some software is so low stakes that you can get away with it I’m sure - there are always trade offs.
Comment by satvikpendem 1 day ago
Comment by dhorthy 1 day ago
Comment by satvikpendem 1 day ago
Comment by dhorthy 1 day ago
from the footnotes (sorry if this got a little buried)
> yes of course you can get gpt-5.5 xhigh to do BRILLIANT refactors. But you had to tell it to do that. And to tell it to do that you had to understand your codebase well enough to know it needed doing. We're here talking about why lights-off wont work
i suppose this would also be a good place to ask if you fall in the "high stakes production systems" camp
> If you love vibe coding, please, go on vibing. I still vibe code lots of things, I just also maintain lots of production software (and through HumanLayer, help 1000s of other engineers do the same), so the rest of this is aimed at folks solving hard problems in complex codebases.
Comment by satvikpendem 1 day ago
In other words you can make the AI act like a software engineer complete with fixing and improving code autonomously (Cursor gave a glimpse of this [0]). It is not a failure of the model to do this automatically but a failure of the human having the wrong instructions.
Comment by dhorthy 1 day ago
generic prompting like "review this code" or "make the architecture better" will raise the floor but cannot come close to human-quality code without humans understanding what code exists and what to ask for.
Obviously cursor and other labs have a stake in this going one direction, but I don't buy it, and I don't think you should either.
In fact, "Rebuild sqlite from spec" has all the problems with every other benchmark that I cited - model knows the whole problem up front and never has to iterate on the pile of slop it created cheating its way to a solution.
In any case, politely, I think we're mostly arguing vibes here and I'm not sure its going to get anywhere.
Comment by satvikpendem 12 hours ago
Comment by monkpit 22 hours ago
Comment by regularfry 19 hours ago
Comment by skydhash 15 hours ago
Comment by gabrieledarrigo 1 day ago
I'm always skeptical when I read absolute statements like this.
Especially about specs. They drive and document how the software should work, behave, and under which conditions. In the same moment you write a prompt in natural language, you are writing a spec.
Why should they disappear?
For the same reasoning, we could no longer need books or manuals or documents (is it valuable to keep around that doc about F-22 specs?).
Comment by abernard1 1 day ago
Without them, code drift is a guarantee.
Does anyone trust that a set of human sentences typed into a box is more reliable and precise than objectively exact descriptions of data?
This is not to diminish the utility of these code factories. But surely, if anything provides resistance to drift, it's codebase consistency, standards, and things which must objectively be true for the software to function.
Comment by 20k 1 day ago
This is also known as being a terrible engineer. If a company enforces human review and someone deliberately tries to circumvent this with an LLM, I'd fire that person in an instant
The reason for human code review is:
1. So *you* understand what's going on, not the LLM, and people can ask you questions about it
2. Because LLMs are not that good at code review
It seems weird to brag about literally not doing your job. It sounds like you could be replaced with a python script, what value do you bring?
Comment by dhorthy 1 day ago
Comment by 4lx87 1 day ago
I can't help but notice that this person is speaking as a programmer, not the person in charge of employing programmers. Is that what the business values code review for? In my experience, managers enforce code review as a quality control mechanism: the "Find Bugs" step in the article's pyramid. And LLMs are already better than human reviewers at the "Find Bugs" part. Design and alignment with PMs and sales can happen before and after software delivery. At least that's how my employer sees it (and I suspect most other businesses).
It's a rough time to be a programmer who cares about the code, who understands software is a creative process, who understands that designing the software is intertwined with the code, who cares about systems. The hyper-focus on delivery was already a lot to deal with before LLMs.
Comment by RamblingCTO 19 hours ago
What I care about with my department:
- alignment on new stuff being introduced into code bases (the bigger it is, the more important to consider promixity on things the teams are working on tho). also: maybe finding a more optimal solution together, implies a proper PR process (which I always created with my teams, it takes time and we plan for that)
- code quality assessment: maintainability, regression tests, taste, security etc. etc.
- code is improved by expecting a review in the end. if you know you're not reviewed, you might rush and push out suboptimal code. hurts the baseline
Maintainability, bugs, incidents, team understanding, complexity (all impacting future delivery, uptime, user retention, onboarding etc.) are all metrics I care about as they impact the software and the company as a whole directly. A lot of CTOs or other execs/managers might not care, but there are a lot of bullshitters out there. Or maybe I'm just used to complex software in regulated/hard fields, I don't know.
Comment by DaiPlusPlus 1 day ago
Nope.
To reduce it down to a single word, I'd say we do code-reviews to assess "taste".
-----
Code-review is one part of a larger process (the SDLC!), and while review does help with "finding bugs" it is not the singular reason why we do it; and other parts of the SDLC are concerned with finding bugs in the first place, namely the various Test and QA steps in the process; when your code is in the (peer) code-review step then there's an expectation that the author already identified and resolved actual bugs/defects (i.e. where actual-program-behaviour deviates from the spec[1]), so a PR for new functionality is expected to include unit and integration tests to demonstrate that.
Now Claude will gladly take a Jira ticket, write-up a plan/spec, write tests, implement the feature, verify the tests pass, address static-analysis issues, push branch, and submit the PR - and if-the-program-works then it's "correct" and so surely there's nothing really to review and so merging the changes should be a breeze... but I find myself rejecting these PRs all the time because these agents still "just don't get it"[2]. (But I'm sure they'll "get it" eventually; you can't stop progress). We can revisit this topic when we get there; but for now I'm going to reject an AI-authored PR that eschews it.
Good taste is important.
[1] I'm not going to pretend anyone actually writes any kind of spec (informal or otherwise) for the vast majority of software out there; but an unwritten-spec exists when you mentally combine a vague Jira ticket, platform-conventions and common-sense (and that's how Claude in an Agentic Loop works too, except it always has to write-out the Spec.md/Plan.md to disk first, whereas us humans keep things in our head).
[2] I cannot define "it".
Comment by jpollock 23 hours ago
SOX requires code review by a second party. If the reviews are automated, the development process isn't in compliance and that can get expensive in a hurry.
Comment by dboreham 22 hours ago
Comment by bandrami 20 hours ago
Sort of like how simply having a uniformed police officer on a street corner reduces street crime significantly even if the officer never interacts with anyone.
Comment by amannm 1 day ago
Comment by 20k 1 day ago
Nobody thinks its a good idea to fully automate PRs, at least not anyone with software engineering experience. It slows down your ability to solve problems if your code base is an absolute disaster
Again: If someone fully automates everything, what service do they provide? Why are they even there? Especially actively lying in the process when people are trying to force knowledge dissemination with human reviewed PRs
Comment by computably 1 day ago
Also, it's not just some subjective value put in human review. If a change causes a major outage and it turns out it's because 5 reviewers were all shirking the company-mandated responsibility of review, and it could trivially have been caught, I would 100% expect those people to get fired. It's not a process issue if people are intentionally circumventing the process.
Comment by satvikpendem 1 day ago
Comment by 0xblacklight 1 day ago
Comment by tripleee 1 day ago
QA?
Comment by roncesvalles 1 day ago
Software development is a continuous operational undertaking, like having a garden, and not a one-shot "task" like designing a logo. Systems need to be tended to and somebody needs to know how they work, especially if they're business-critical or (in the case of software companies), the business itself.
A corollary point is that many of the rules and policies of the business are solely embedded within the software itself. There is rarely a complete set of documents that says "this is how everything works" -- if you want to know how something works, you ask a software engineer, they take a look inside the codebase and then tell you how it works. In that sense, all software engineers are also product managers (or more accurately, product managers are just crude software engineers, but that's besides the point).
Comment by jdzikowski 1 day ago
Yes! That's sooo accurate. Tools you use change, the level of abstraction you operate changes, but the role remains.
Comment by 4lx87 1 day ago
Comment by necovek 1 day ago
* Share knowledge about a particular area of the codebase between multiple people
* Share overall engineering knowledge between the parties in the review
* Ensure maintainability of the codebase long-term
* Ensure readability of the code
* Catch architectural/directional omissions (yes, from the planning/architecture phase) before it's really too late and non-reversible change goes in (eg. large destructive DB schema change)
* Ensure changes are small, self-contained, and as often as possible, reversible
* Do some basic manual QA
* Do comprehensive integration testing with a fully built-out system
...
* And yes, catch bugs before they hit production.
A lot of the above could be fun and engaging, and especially knowledge sharing and ensuring maintainability/readability was a very motivating thing for me as a more experienced engineer having learned so much from getting good reviews when I was less experienced.Programmers care about style to ensure readability and thus maintainability of the code, but also to keep changes minimal — if every diff converted between tabs and spaces in the entire codebase, it'd be impossible to see what has really changed with the simple tooling we generally use (one could build diffing tools that ignore changes like these, and they even exist, but are not ubiquitous).
Comment by NateEag 21 hours ago
"Program testing can be used to show the presence of bugs, but never to show their absence!" -- Edsger W. Dijkstra
Comment by RamblingCTO 19 hours ago
Comment by layer8 1 day ago
You’re arguing for experiment over logical proof or reasoning. That’s qualitatively a very different thing, and the former is no adequate replacement for the latter.
Comment by latentsea 1 day ago
Comment by majormajor 1 day ago
Ok, sure, if your software can be easily exhaustively re-tested on every change.
But in that case, why were you ever doing PR's in the first place? Cargo cult?
Comment by tcoff91 1 day ago
Comment by viccis 19 hours ago
I firmly believe there's no reason to employ the latter group. I have several coworkers like this that I could replace with a Claude session or two every week and I'd still have to push back on work and review a lot, but I'd still wind up saving time because then I'd talk directly to Claude.
So I guess my point is that I dislike AI era code review because for some subset of it, I basically can't even assume a human has ever looked at it, and that by doing so, I'm doing the work for one of my coworkers who is probably doing his grocery shopping at 2PM as I read it.
Comment by sevenseacat 18 hours ago
I am currently ignoring them.
Comment by tcoff91 7 hours ago
Slop merchants get slop reviews. I just point my clanker at their PRs and ask them to critically review the PR and they typically find lots of issues.
Comment by dboreham 22 hours ago
Comment by xorcist 1 day ago
Isn't that what commits are? Or ... should be?
Comment by lozenge 1 day ago
Comment by xorcist 1 day ago
That's the most killer feature of git, that it's so easy to slice your commits any way you desire, and then redo again. The use case of taking a chunk and commit separately is so common it even got a special mode in the add command. That, and the super fast jumping between branches is what set it apart from contemporary version control systems.
The extra context provided by the review tool is gone when the review is done anyway. Review systems come and go, but the commit log is for eternity.
Comment by boron1006 1 day ago
I tried experimenting with what is ultimately a treesitter based approach - https://github.com/0x007BA7/codebook
And really liked it. Definitely nowhere near production ready but I think theres room for a player to come in and do something similar.
Comment by dhorthy 1 day ago
Comment by danpalmer 1 day ago
PR review of agent generated code sucks because agents are, in my experience, very poor at authoring for review. This makes sense because the review process is not represented in the resulting code artifact which is what they're trained on. Agents are always producing much larger changes than should be in a single step, and often touch unrelated code with poor judgement of whether it should be included or not.
Comment by preg_match 21 hours ago
This sounds good for review. Except… the comments are never intent or trade-offs, they’re always the “what”, which the code then duplicates right after. Comments should be short, concise “why”. Often I look at code and think “hm this is odd, I wouldn’t have done it this way, is there some constraint I don’t know about?”
The comment should explain that, not what the code is doing. If I wanted to know what the code is doing I’d read the code!
Comment by latentsea 1 day ago
Comment by danpalmer 22 hours ago
A good PR tells a story to the reader that leaves them confident in the result. That means knowing the reader and how they think, and that is something LLMs are very bad at.
Comment by latentsea 21 hours ago
If you leave it up to raw LLM outputs you're not going to get the results you're after. If you put on your engineering hat and think about your problem statement and what tools you can bring to bear on it you'll find you can likely craft a PR authoring skill and a set of evals for that skill that satisfies your requirements with a high enough degree of reliability.
Comment by danpalmer 20 hours ago
I'm sure we can improve things, I'm sure it will get better over time, but I'd say we're a small fraction of the way towards where we need to be, and trending in the wrong direction with long trajectory development creating bigger changes on average.
Comment by dhorthy 22 hours ago
Comment by dhorthy 1 day ago
Comment by sjh9714 14 hours ago
Comment by 2001zhaozhao 1 day ago
Comment by 0xblacklight 1 day ago
Comment by 2001zhaozhao 1 day ago
(more precisely the sub-tickets merge into a bigger feature branch, which in turn gets squash merged into the main branch at the end. i have a tool that automates this flow with a gui and ticket management.)
Comment by WorldMaker 1 day ago
When $EDITOR = VSCode there's a shortcut on the GitHub PR page: if you type a . it opens in github.dev in a VSCode instance.
Comment by claytonjy 1 day ago
Comment by stillpointlab 1 day ago
It reminds me of all the recent talk about "taste". Architecture "quality" may not be objective in a right/wrong sense, in the same way that fashion isn't right/wrong. It's like we are all going to have to relinquish reason/rationality to the machine and start to study up on aesthetics.
Even historically, my big struggles have usually been deciding between two nearly-equivalent options. I get this a lot now with LLMs because there is no break in-between these decisions that implementation used to force. I feel I'm constantly making "taste" calls between tradeoffs that have no clear objective criteria, and it is as exhausting as the code review this post (and my experience) suggests are still necessary, even with Fable/GPT-5.6 level models.
In many cases, I do what I've done with junior engineers whose code I reviewed pre-agent: make on-the-spot judgement calls. When I see a broken window, I call it out. But when I see minor issues, I sometimes just let it pass, note it in memory and tackle it wholesale once an accumulation of similar minor issues get to a certain size.
As a tangential aside, I consider two dev shops from pre-agent days. One decides to hire 7 extremely talented engineers and gets them to work closely together. The other decides to outsource to 100 decent engineers and tries to silo them into modules. I think we are facing a similar choice with agents. You can either work extremely closely with a handful of agents, collaborating on design, review, etc. Or you can spin up a fleet of sub-agents and YOLO, then try to separate the wheat from the chaff in some automated way. My taste is the former, small highly coordinated shop. But time will tell if I am right or wrong.
Comment by dhorthy 1 day ago
"you know a bad pattern when you see it because at some point you were up at 2am debugging it"
taste is the hard-earned intuition about every anti-pattern and landmine that has blown up in your face since you started doing software
Comment by stillpointlab 1 day ago
The hand-wringing on the 50-50 cases is almost always theoretical, in the sense that I am trying to reason instead of rely on memory/experience. But that is a double edge sword because sometimes memory/experience are closer to trauma and can lead one away from a solution that is correct now in some new environment.
It also reminds me of the phrase "use in anger". You don't really know about an approach/architecture until you've had to deal with something in an urgent or high-stakes moment (your 2am debugging). But to get that experience, you have to have shipped the thing first. It is a chicken-and-egg problem, you can't debug something at 2am unless it is live, and you can't know if it will cause you a problem until you've dealt with it.
AI (LLMs, agents, etc) is this giant alteration to the environment that shakes up everything. In some sense, I feel I have to throw out my taste and "use in anger" all over again. It is painful but may be the only way. And I have to accept the risk that going slowly (like this post suggests) may be the wrong way, and I may watch the young untraumatized new-comers blast by me riding their 100 agent orchestrations to massive success. What I mean here is, in the final scenario from my original comment (7 top guys vs 100 decent guys) - I know the result from experience. But am I just traumatized and it will be different with agents?
Comment by sgt101 17 hours ago
1) This guy has a track record (confessed) of making shit up, yapping on about it, and pushing it on the innocent. He's done a bunch of damage with his bullshit and now wants us to pay attention again. I mean - something something off fella.
2) There is NO EVIDENCE AT ALL that his ideas are good. He's just making stuff up.
Give me a reason. Also shouldn't he be ostracised and stripped of his wealth for his previous rubbish?
Comment by romanovcode 17 hours ago
Comment by gyulai 16 hours ago
It's funny how, when the hype is strong enough, the burden of proof around the need for EVIDENCE suddenly shifts.
Normally, the burden of proof is on $NEWFANGLED_THING to prove it's better than $TRIED_AND_TESTED.
Software dark factories where no one looks at code are that unproven newfangled thing and all he's really saying is that, in his experience/assessment, those don't work, so he's trying to find other modes of human-ai-collaboration that might actually work that capitalize better on the things (humans) that weren't broke and didn't need fixing when gen-ai coding came along; and then getting the word out about that.
Under normal circumstances there would be absolutely no ground for any controversy around such a stance. Instead, he's having to contend with reactions like: "But $HYPED_UP_THING, and how great that is is all that anyone is talking about! Don't listen to him, he's just trying to sell you something (other than what everyone else is trying to sell). ...naysayer probably thinks he's smarter than everyone."
Comment by sgt101 14 hours ago
The things that I know about, that he writes about, where I know he's got it a bit wrong.... I find myself questioning if he's right or not. Because he's a persuasive writer. But winning arguments doesn't make you right. This isn't a supported, balanced discussion it's a self aggrandising mismash of commonplace ideas and issues.
He's learned how to grab the mic, he believes he has the right to the mic, people are listening to him.. all three of these are wrong and until we call this out and put a stop to people like this shooting their mouths off damage is going to carry on being done.
Comment by firasd 1 day ago
If you think you can just assign Github tickets to AI agents and go drink daiquiris on the beach I think you'll find that you end up with more and more towers of abstraction and indirection. There are 'points of view' that emerge during coding I think. And at some point you as a human have to be like "wait... what if we use Redis here". "Wait.. the API is already returning the data we need". "Wait... let's not add customers to the report who have not been active in the past year". Stuff like that
Comment by claytonjy 1 day ago
I know it’s a bit cliche at this point, but this harkens to “programming as theory building”[0] which I agree is easy to lose out on when embracing agentic coding today.
Comment by dhorthy 1 day ago
Comment by _doctor_love 1 day ago
Comment by dhorthy 1 day ago
- claude code plan mode - mattpocock/skills - obra/superpowers - research/plan/implement
etc etc
Comment by dboreham 22 hours ago
My experience has been that current models are way beyond all but the most highly competent developers I've encountered in my several decades career.
Comment by AmericanOP 1 day ago
Rather than “lights off,” utilizing information theory, decision-making theory and creativity theory makes me better at asking for the right things.
Memory is not transcribed to weights like when humans sleep. Memory is notes handed to someone on groundhog’s day who can’t remember yesterday. We hope they believe us. Don’t be too surprised when a highly entropic system introduces entropy to a project over time.
Comment by TacticalCoder 1 day ago
To me that's a huge one. I witnessed this firsthand more than once and the fact that you make that comment too just shows there's a problem: I've seen top frontier models go wild, adding shitload of code to spout something that, eventually (after burning shitload of tokens), worked.
While it was basically a one-line change because the data was already there on the client-side.
The thing thought it noticed a pattern and went ballistic, mimicking some existing client-server communication, to "solve" my problem.
The worst is: all vibe-coded projects are full of such nonsense and the "prompt engineers" (such engineers, much wow btw!) who wrote their magical incantations have zero clue about it.
I use these tools daily, I love the time they save me. But sheesh...
Comment by _pdp_ 1 day ago
On one hand, our core product is just simply not fit for them at its scale. We've tried but the project is large enough to require human input for every change. But we have AI automations for light code refactoring, writing tests, UI changes etc. and they work.
On the other hand, I started a number of small experiments to see how far software factories can be pushed and while the code produced so far is nothing spectacular I could easily imagine how this can be extended in the near future. Perhaps if you start from the ground up with the idea that the code will be written that way then you can come up with strategies and architectures that accommodate it. At least this is my thinking right now.
Anyway, it is all open source and documented here https://relentless.works/ I am not sure for long I will keep this running. I provide zero direction to where this is going. I have no idea what it will happen next. It is a fun experiment.
I have another such experiment with a trading agent. I thought it will loose all of the money in short time. For a while it was stuck with no open positions after it lost a bit. I decided not to intervene and just observe the behaviour. Recently it opened new positions which was an interesting development. It is still loosing money (~ -3%) but it has not lost all of them and given the current market circumstances I would say this ain't bad at all. It just shows that perhaps we might be a bit impatient when it comes to AI.
So I think it is probably possible to build software factories but we need new concepts and a bit of change of mindset.
I hope this helps.
Comment by orsenthil 1 day ago
If we are going in the Dark Software Factory route, why aren't we calling the code units as bos (bunch of shit) yet.
Comment by dhorthy 1 day ago
Comment by reinitctxoffset 23 hours ago
It's an extreme form of any startup: you trade off capital for years of your life.
Comment by throw10920 1 hour ago
Comment by dboreham 22 hours ago
Comment by mrbnprck 1 day ago
It works quite well, as it puts your entire focus on writing (hopefully) unambiguous specifications vs. having to discuss unwanted changes with an LLM during code-review. One flaw is that this only works great if you know exactly what you want, which is not always the case.
Comment by Lindby 1 day ago
Code is just detailed specifications on how things should operate.
Comment by Balooga 1 day ago
The spec defines how things should operate. Code defines how things operate.
The problem being that if there is only code, then any change to system behaviour is always correct (including bugs). Because that's what the code says.
Relying on tests won't help without a spec to create tests from. So tests are generated from code. So if a test fails, it's the fault of the test, not the code.
Comment by mrbnprck 1 day ago
It turns out that there are now a few more people that want to get their hands on building software, that don't necessarily understand code, but do have a fundamental idea of system design / requirements.
As you said code has always been a much more explicit representation of those specs, yet arguably introduces lots of noise, necessary to make the program compilable.
Us devs already had the obligation of writing technical documentation for non-technical people, just not at an explicit depth. From an efficiency PoV making that documentation more explicit is much cheaper than manually writing the compilable code. Hurts to say but AI got pretty good with the latter.
Comment by dhorthy 1 day ago
Comment by mrbnprck 1 day ago
Historically I know that the majority maintenance problems occur from slow continuous evolution of a system that it initially was never designed for. And the only way to address this was continuous system design.
Comment by dhorthy 1 day ago
yes exactly - this is what I'm advocating for - that you can't skip the system design, and that actually good system design goes down to the typedefs and object graph at the code level, not just mermaid charts and db schemas and service contracts.
I will highlight what a few others have said along the lines of "a sufficiently detailed spec IS code" - that is, to make the spec guaranteed to produce the code you want, the spec will look a lot like code (and will be roughly the same effort to review as the code itself anyway, saving you no time)
what I'm proposing is "how can you maximized the odds that the code WILL be good or close enough to good that its easy to get there, with the LEAST amount of human effort/attention" - how can you move fast without skipping what matters
https://haskellforall.com/2026/03/a-sufficiently-detailed-sp...
Comment by human807 18 hours ago
I read your piece here and again I appreciate and agree with your main points. You have a section here titled “30 minutes of planning saves hours of review” — but I find it hard to believe that you are doing all this pre-work of creating specs (ai-assisted) at various levels, down to the level of function signatures and such, and this whole thing only takes you 30 minutes. Is that what you meant? Can you talk a bit about how long this process actually takes, or if it is really only 30 minutes, how you pull that off?
Comment by boredtofears 1 day ago
Comment by mrbnprck 15 hours ago
The LLM solely helps with research and retaining the normative document layout (RFC 7322).
Since the spec grounds the underlying implementation I have to fully understand it, writing the spec manually prevents infecting the spec with the typical LLM specification slop.
When writing the specs, the goal is to systematically keep the right balance between scope and depth:
- Scope takes the most effort because it's the only thing preventing the model from escaping an intended boundary, that includes things like stable constraints/interfaces/data models
- Depth is something where I can tolerate "non-normative" interpretations by the LLM. Unless I need a stable implementation, I can decide how much I manually invest into depth vs. letting the model figure the "good enough" solution.
Since the scope/boundaries are explicitly set, the internals are pretty encapsulated and the model comparing an implementation with the spec can identify the "non-normative" pieces and communicate those to me. Then I can decide between "good enough" or to refine these non-normative implementations and make them normative.
From my various experiments the spec vs. code ratio is roughly 1/8.
Comment by d_silin 1 day ago
Instead, use them in adversarial mode - run QA scenarios using LLM agent as a substitute for end user to do bug discovery.
Comment by arm32 1 day ago
Comment by antonvs 20 hours ago
This seems arbitrary. Why don’t you say the same thing about machine code? Developers use tools so they can avoid writing machine code. What is causing you to draw a line in the sand about use of tools?
The obvious answer is it’s just a function of the time period you grew up in, and a lack of willingness to adapt to change.
Comment by Archer6621 18 hours ago
I think there is some nuance though, but it's hard to articulate. I think that is because there are some long term effects that are currently invisible, but that can be anticipated. A lot of it is the human factor, and how changes to how people think and act may ripple through the organizations as well.
Things such as skill atrophy which may reduce not only immediate skills, but also adjacent skills that were maybe important for critical thinking and making good decisions. Or the fact that learning to use an LLM is a skill that is not truly grounded in reality and can therefore not translate well to other areas (you're essentially learning skills within the "reality" of the LLM, based on its weights). That is very different from machine code --> tools, where the tools make explicit assumptions that are based on the workings of the machine code (which is analytical in nature), and where you can, if you wish to, jump in to override those assumptions where needed without having to adapt to a mental model that operates in its own reality (i.e. the LLM's "thought process").
Comment by 0xblacklight 1 day ago
Comment by vanuatu 1 day ago
a lot of the model's constraints come down to how they are RLed. Discussions online would be a lot better if everyone understood how the labs train the models in a high level (or did a lil data labeling)
Comment by dhorthy 1 day ago
Comment by cadamsdotcom 1 day ago
And a benchmark to measure against!
Imagine a "MaintainabilityBench" that rewards models which detect code duplication while working on a task and perform some refactor instead of glibly duplicating; or that detect the need for a new architectural layer, or that hoist a type constraint so there's no need for dumb casts. You can keep on imagining scenarios.
There are probably a few hundred distinct elements to RL for. The books "Working With Legacy Code" and "Architecture of Open Source Applications" would be great fodder.
Sadly don't have time to build it, there's this mountain of reviews in front of me...
Comment by spion 16 hours ago
Comment by johnxianren 16 hours ago
So when you see that split coming, do you drop a quick warning, or just copy-paste and leave the mess for tomorrow?
Comment by spion 16 hours ago
Comment by dominotw 1 day ago
wouldnt that be part of original RL though. why would it be a seperate thing.
Comment by cadamsdotcom 1 day ago
Comment by 2001zhaozhao 1 day ago
The corollary of agents being bad at maintainability but good at coding is that you can vibecode all the parts where maintainability doesn't matter.
So if you build a (domain-specific) modular architecture for your software first you can then just let your software factories loose on building the modules.
Comment by throwatdem12311 1 day ago
“Oh just this one time”
Then an agent sees the pattern and assumes it’s a best practice. Then your beautiful architecture is ruined.
“Just this once” indeed.
Comment by dhorthy 1 day ago
Comment by dhorthy 1 day ago
the idea that if you have a solid core and decoupled modules, you can have "zones" in your codebase where you allow the model to run wild and do a little slop, because you know the blast radius is contained
Comment by layer8 1 day ago
Comment by softwaredoug 1 day ago
Comment by raincole 23 hours ago
> Xiaomi has an 860,000 square foot factory in Changping, Beijing capable of manufacturing 10 million smartphones a year across 11 fully automated production lines.
> ASE Group, a Taiwanese company that handles outsourced semiconductor packaging and testing have 56 lights out factories.
It has always been the goal to make factories go dark.
Comment by softwaredoug 14 hours ago
> By 2024, the company has established 56 lights-out factories, trained more than 700 automation engineers,
https://www.aseglobal.com/csr/sustainability-governance/smar...
Comment by ffsm8 23 hours ago
This statement seems to be factually untrue as the fully automated factories in China are indeed not illuminated for most of the time
In USA/Europe we just don't have that level of automation
Comment by softwaredoug 14 hours ago
They often have to stop the factory and investigate and troubleshoot.
Comment by dhorthy 23 hours ago
Comment by basketbla 1 day ago
Doesn’t this gloss over the fact that token subsidization is a thing? I assume the reason a lot of people switched from other harnesses to CC was all the weirdness around setup-token and whether third party harnesses would continue to work without api pricing.
Comment by dhorthy 1 day ago
Comment by jadar 1 day ago
I feel like the explanation does nothing to actually elucidate why models can't do it. Is it an inherent weakness of LLMs? Training processes? The typical "this is crap" that we constantly hear? It goes on to write about RL and how there's no penalty for bad design. But that sort of side-steps the question and makes you ask: "why not do RL and make a penalty for bad design?" Of course the models aren't good at it ... they're not good at anything until you've tuned them and put them in a harness that rewards good edits and throws away (improves) bad edits. That doesn't explain why "models can't do software maintainability." The real question is why harnesses can't do software maintainability, and how to build a system that can do it. (I suppose that's the purpose of the ad at the bottom of the page.)
Comment by rom1504 1 day ago
Maintainability means thinking what will happen to this code in the next year and possibly hundreds of changes and based on that selecting the right abstractions that will work in the long term.
LLMs currently cannot do long term planning and specifically cannot pick abstractions that will work in the long term.
I think that's the important problem to solve. Teaching LLMs how to pick the right abstractions.
Comment by satvikpendem 1 day ago
Comment by rom1504 1 day ago
As to whether they can today, it's pretty easy to figure out that they can't by observing the difference between asking for very high level things like "please make me a website that will be very successful" vs sending it a detailed plans on the goals and many of the specifics and then holding it accountable towards the planning.
Doing appropriate project structure and trying to optimize code quality are definitely good methods to try and increase the chance that the project will succeed long term but I would say they are only methods towards the long term goal and the LLM need to be thinking of the long term goal and how to plan towards that to achieve a much wider and subtile range of methods to achieve long term goals.
Comment by satvikpendem 12 hours ago
Comment by Fordec 1 day ago
Comment by Terr_ 1 day ago
Comment by jdlshore 1 day ago
Design skills take about 10 years to develop, in my experience, and a lot of smart engineers go through a phase where they make gawdawful messes in the name of “magically easy” designs around the 5 year mark.
Design requires wisdom born of experience, isn’t measurable, and requires forming a mental model of how the system hangs together as a whole. It’s just not stuff LLMs are good at.
Comment by jadar 1 day ago
But then you're back at the question from the OP of "why not?" Is it lack of good examples in the training data? Is there something of code "goodness" that goes beyond phenomenon that are measurable? Is it that LLMs lack in the ability to organize and think abstractly?
Comment by jdlshore 1 day ago
Comment by zahrevsky 1 day ago
But this is clearly explained in the article. We can tell whether the design was good or bad only weeks or even months later, which is too long to wait for artificial trajectories. Tests, by contrast, provide validation in seconds or minutes.
Comment by dhorthy 1 day ago
My current evolving take on "how would you build such a thing" is you need to tee up a roadmap of 20 features and feed them to a model one at a time, so it can't design up front for what's coming.
That way if it builds the first 10 features and the codebase goes to slop, it get's penalized when it can't build features 11-20, or when those features take wayyy more tokens/time/cycles than a model that maintains a clean codebase can do.
This is how most real software is built by most teams - incrementally, getting feedback from users along the way, and steering goals in response.
Comment by jadar 1 day ago
I don't know if it's a question of how many features to feed to the model, either. Of course, overwhelm the context with too many features and it will get confused. But that's where the memory management idea that G. Huntley talks about is helpful. You're trying to steer the model within its memory limits towards a certain goal.
The problem is getting it to produce "good" code. Formalizing what that means is the task of the programmer. How do you steer a model towards always, or more often, producing good code so that you don't have to do rework? That's the same problem as with a junior engineer, but the way you do it is different. Right now we're trying to do it with mountains of prompts — which sort of works but has diminishing returns — and with onerous code reviews. We've seen this get better over time, but I think some more mechanical methods will help as we figure out how best to steer the models.
Comment by goyozi 1 day ago
Comment by mrothroc 1 day ago
Comment by Robdel12 1 day ago
The models write good/great code. I'm very happy to never write code again but models are no where near good enough to run off on their own without a human in the loop. Models LOVE to cheat. Just peek at the tests they write.
And before you come at me, I have built 7 products in the past 1.5/2 years with agentic engineering, all with users. One of those projects is _dead_ because I let the vibe go too hard at the same time Anthropic decided to nerf both their harness and their models silently. If you care to look at the source: https://github.com/Robdel12/OrbitDock I spent a week or so and like a billion+ tokens trying to refactor and save it. It just wasn't worth it.
I wish people would be pragmatic about this. I get the dream is to let it do everything and not to be in the loop, because being in the loop is exhausting. But if you want to make whatever you're building be robust and survive more than 6 months, you have to. I don't care how good your tests, plans, skills, etc are. At some point the model will have to decide something and it'll be the wrong one. Compounding the slop from there forward.
Comment by dhorthy 1 day ago
this is exactly what happened to github.com/humanlayer/humanlayer - it was overslopped and we reset from scratch to build it right - spent 2 weeks in VS CODE - not even cursor, plumbing the core patterns from scratch. codebase is part of the prompt, yada yada
> I wish people would be pragmatic about this
that might be the tl;dr for the whole post haha
Comment by maerF0x0 1 day ago
[1] - this course: https://www.coursera.org/learn/machine-learning/home/welcome
Comment by forlorn_mammoth 7 hours ago
except that there is no gradient towards 'better' software, at least not in a mathematical sense.
Comment by abusada 20 hours ago
Comment by bavell 1 day ago
Comment by dhorthy 1 day ago
Comment by chicagopluto 1 day ago
Comment by dhorthy 1 day ago
lights off is still out for me
Comment by dsifry 23 hours ago
Comment by gblargg 18 hours ago
Comment by jkwang 15 hours ago
Comment by zingar 1 day ago
Comment by dhorthy 1 day ago
but yes if you're working in very small slices then I think it's very feasible to skip program design and just review the code as you go, and resteer live. I do this all the time for tasks that are too big for a oneshot but on the smaller side overall.
Comment by zingar 9 hours ago
I might be anchored by working with humans, but if I saw a plan for humans that included function signatures and what calls what I would say that is way too detailed. As a result I don't put it in my plans for AI either.
Comment by becomevocal 20 hours ago
Comment by Altern4tiveAcc 1 day ago
>I was pretty excited for a world where we could just ask for things and let the models cook and not read the code and get beautiful production software
I feel so disconnected reading those things. Reading and writing code is what brings me joy. I'd never feel "bummed" or "stuck" with it.
Comment by ChicagoDave 22 hours ago
Absent those skills, the agile movement is flailing with GenAI.
Comment by vkaku 1 day ago
I disagree with the way that big models are trained on noisy relationships and RL is applied to tone it back down, it represents a stupid amount of compute thrown at this problem at a scale that is often unnecessary.
The rest of it is on point.
Comment by AIorNot 1 day ago
Its crazy to me people write these articles and create standards like this is some kind of engineering standard with years of research and experience
This is like calling these folks the experts on aviation: https://youtu.be/M9Yww9LG3gw?is=xgtA-xMpNy-09Asu
Its still so early in the game for de facto standards - engineering teams need to experiment and see what works for their own quality metrics not just parrot “standards and methodologies”
This is still the very early days of AI and AI engineering
Comment by dhorthy 1 day ago
Comment by rapatel0 1 day ago
Also it's missing the point of a software factory concept
A software factory will not work infinitely forever for everything. A software factory isn't a solve anything button (aka god).
In a conventional factory, things break and fail. Process machines get poluted. Extruders get jammed.
You still need to establish intent, define what you care about, define guardrails, and of course manage the factory.
Comment by dhorthy 1 day ago
You don't have to build the entire software factory at once. You don't have to mastermind the whole future system, instead you're actually stacking and layering these small, isolated problems.
I think that's a really good approach to start getting value tomorrow or this week without saying, "I'm going to revolutionize how we ship."
It's just:
1. Find places where you can use agents.
2. Figure out where the right leverage points are for humans and where the right leverage points are for agents.
3. Just start building those things and plugging them into each other.
One day you'll wake up, and 80% of all of your stuff is automated.
Comment by rapatel0 1 day ago
You're the foreman/factory manager. You can optimize the factory over time upgrade machines, place machines closer or add conveyor belts for more productivity.
The only think that slightly worries me is that the Labs are clearly incorporating the best in class logic from their datasets.
Comment by zhonglin 1 day ago
Comment by swyx 1 day ago
Comment by bisonbear 23 hours ago
> Verifying quality is orders of magnitude harder than "did the tests pass"
Agree that agentic grading is the future here. Cognition's Frontier Code is probably the best large public benchmark at this. You attribute agent quality issues to RLVR's binary pass/fail, however I wouldn't be surprised if labs are already supplementing that with rubrics as rewards to train more 'tasteful' models like Fable.
What can a practitioner do? I think there's promise in turning the optimization machine to the harness itself - building out a representative dataset of tasks on your repo, grading agent quality on them across various configurations, and optimizing [AGENTS.md / SKILLS.md / workflow / model / harness / tools] on that signal. High quality grading is still very hard, but it's more tractable at smaller, repo-level scale, and you can afford slower, more expensive verification for each task. You only need it to be right about your codebase's standards.
> In fact, it's not hard to imagine that if a model could reliably tell good code from bad, it might have written the good version to begin with
Pushing back slightly - detecting slop and discriminating quality is easier than generating it (why code review is so effective), and why grading is viable at repo eval scale even if it's much harder at RL scale.
Everyone is flying blind. For example, I am genuinely interested in trying HumanLayer, but would likely want some harder evidence (beyond anecdotes) that it's actually making my agents more effective before rolling out to an enterprise team.
I'm building this harness optimization loop @ https://stet.sh if curious
Comment by Msurrow 18 hours ago
> Product Design > System Architecture > Program Design > Vertical Slices
By the time it takes to go through these steps and agree with the agent, wouldn’t the senior dev not just be able to implement the feature by themselves?
I mean, in general; I know there’s always features with complex logic etc, so the question is just about the “general case”
Comment by ozhero 1 day ago
We may choose to disagree but thats the point of healthy debate based on clearly expressed opinions.
Key point is I don't think this is AI slop which is way too common in long form articles these days and in keeping with the whole point of his article.
Comment by spacecadet 13 hours ago
People have no idea that 2 years ago we hit peak performance with omni models. We won competitions with GPT-4o-mini, mini... it does not matter. Context matters. Discipline matters. Observability matters. Most of all, PEOPLE matter.
All of the fools who tried this and laid people off. Fools. It's about empowering your team, making their lives easier, less frustrating, and higher impact.
Comment by antonvs 14 hours ago
What a surprise! And here I was thinking that loops had only just been invented, to use in agent harnesses, as described in the famous paper “Loops Are All You Need.”
Comment by sergiotapia 1 day ago
The one downside was that it required their computers to install dev dependencies, postgres, infisical for secret management, etc.
That's the next frontier. What I'm working on now independently. I plan to open source this solution, but again I'm not a savant genius. I guarantee many people are working on the same thing it's converging. Our job as engineers is becoming more of a higher level facilitator and AI "plumbing" maintenance work. How can we get the AI to empower everybody at the company while keeping the wheels turning. That's my aim.
Comment by trenchgun 19 hours ago
Fail.
Comment by ModernMech 22 hours ago
Now, if you've got a really good model you can get much further with dead reckoning compared to a worse model. But a model is not reality so no matter how good it is, so without feedback eventually you still run into this problem no matter what.
I imagine that's a lot like what goes on in these agentic loops.
Comment by _doctor_love 1 day ago
This was easy to find out I thought. And just with an old-fashioned google search too, no deep research agent needed. See here: https://diffusion.io/
Seems like it went pretty well if a consulting company is now being started.
I agree with a lot of what Dex Horthy is saying here but on some fronts I feel like he's missing something. Coding well with LLMs, it's not a skill issue, it's an effort/laziness/rigor issue.
In order for coding with LLMs to go well, there has to be more rigor, more discipline, more good engineering hard-assedness. To reiterate, the teams seeing the best results with AI were already high-discipline and high-hygiene.
AI works on data. The better the data, the better the likelihood of a desirable outcome. Code is data. If you have bad code, no matter how awesome the model you let loose on it, you can't get as good a result as if you had good code to start with. This principle has been well known in AI/ML circles since the 20th century.
e.g., if you are doing spec driven development and not seriously investigating formal verification, IMHO you will come up short. Prompts are simply not enough to steer a coding agent to the level of precision needed. Without deep programmatic verification - at all levels, formal verification is just one slice - the solutions the agent produces will always be just slightly (or very) out of true.
Comment by edot 1 day ago
You interpreted this backwards. Software companies offer consulting when their product cannot stand on its own. See Palantir, Salesforce, etc.
They are successful companies, yes, but not successful products. The product needs to be instantiated and maintained by sales engineers and consultants and customized into something so bespoke that it’s hardly the company’s product anymore.
Comment by stellar_jay 1 day ago
I found this to be exactly right, and in my work I’ve come up with a taxonomy of constraint mechanisms which I keep in mind when guiding agents: generative to constrain the output of the model, interpretive to constrain how the model ‘understands’ code, and elicitative to help it ask the right questions of users.
Full write up is here: https://www.research.autodesk.com/blog/constrain-agent-not-u...
Comment by _doctor_love 1 day ago
Comment by stellar_jay 1 day ago
Comment by jaytaylor 1 day ago
Just a minor thing I want to clarify about the Weather Report [1] - it's framed in kind of a negative light in the article ("sparse updates"), but we've been updating it as frequently as we find a meaningful improvement in a relevant dimension. Since we launched it in February it has averaged about one update per month, as frontier labs keep racing forward!
Comment by dhorthy 1 day ago
Comment by jaytaylor 1 day ago
Comment by dhorthy 1 day ago
Comment by sythe2o0 1 day ago
Disclaimer: I'm a former StrongDM employee
Comment by navanchauhan 1 day ago
Comment by dhorthy 1 day ago
hard agree. But i don't think this is sufficient. Even formal verification has its limitations.
> AI works on data. The better the data, the better the likelihood of a desirable outcome. Code is data. If you have bad code, no matter how awesome the model you let loose on it, you can't get as good a result as if you had good code to start with. This principle has been well known in AI/ML circles since the 20th century.
hard agree. but also RL data is shaped differently than SFT data that has driven the majority of AI/ML innovations since ~2000, and its where there's so much room for innovation still. e.g. ImageNet was all just hand-labeled answer pairs.
> it's not a skill issue, it's an effort/laziness/rigor issue
I'm sorry but this feels like a semantic argument - the point of "skill issue" is "you didn't put in the effort or learn the techniques"
Comment by _doctor_love 1 day ago
Comment by reinitctxoffset 1 day ago
Comment by syndacks 1 day ago
Comment by molsongolden 1 day ago
Comment by dhorthy 1 day ago
Comment by dhorthy 1 day ago
Comment by claud_ia 16 hours ago
Comment by yunbiao 17 hours ago
Comment by feiz45607 13 hours ago
Comment by rahulladumor 21 hours ago
Comment by Makeph 1 day ago
Comment by luciana1u 22 hours ago
Comment by felixlu2026 14 hours ago
Comment by jfkfisksnsb 1 day ago
Comment by M4R5H4LL 1 day ago
Comment by dang 1 day ago
https://news.ycombinator.com/newsguidelines.html
(and please particularly avoid personal attacks on this site)