Claude Is Not Your Architect. Stop Letting It Pretend(hollandtech.net) |
Claude Is Not Your Architect. Stop Letting It Pretend(hollandtech.net) |
When left to its own devices with the instructions "make an assembler for the architecture in ISA.md" -- well it picked Python as the implementation language. Tokens lifted through a bunch of regex. No expression parser! Oh dear. My first assembler was like that too, to be fair.
However, when I described the desired passes and their types:
collectDefines :: [SourceLine] -> Either AsmError ([SourceLine], Map Text Text)
runLitPool :: [SourceLine] -> Either AsmError ([SourceLine], [(Text, LitKey)])
evalExpr :: Text -> Map Text Text -> Either AsmError Int
etc. It was almost one-shot. About 20 minutes until I was happy. Assembles all the test programs correctly. Code is mediocre in many places. But it would have taken me weeks to implement.Like - it can do the work for us.
It jives with post training and verifiable rewards.
The reason AI doesn't do well at 'architecture' is 1) are are bad at it and have given it a lot of mush and 2) we don't have good abstractions for it.
The result is - you stick to 'very strong conventions' and if you walk of that path you're risking a lot.
Toolchains are very deterministic, the AI can take it apart and re-assemble like Lego - and each level of the space is also deterministic. It's perfect for AI.
Even just saving me the time to deal with CI is worth it.
As if code written by devs at major corporations is flawless.
Nokia's Symbian OS took days to build. Days. With a D. Not hours.
One of our devs shipped code to prod with a memory leak thanks to a library that had "do not use this library in production because it causes a memory leak" written everywhere.
So I don't wanna hear about how poor AI code is when human code is dogshit too. Human laziness and stupidity can beat AI hallucinations.
> It’s just incapable of the thing that makes a real architect valuable: saying “no.”
From my experience Claude is excellent at saying "no". It won't say "no" if the prompt doesn't call for it (it won't say "no" to your direct request to do something, usually). But it offers good critique and happily pushes back if you make it clear that that's a first class option.
It will tell me a suggested abstraction is probably overkill and just to make a component own the new thing I’m discussing.
What I’m missing from the loop is it later saying without directly prompting, “hey it’s time to revisit that abstraction idea.”
Yes, that's assuming you take time to clean up now and then. If you don't, that's on you.
The thing that I find Claude incredibly good at when I'm designing architecture is working more like a research assistant on briefing decisions. It has the ability to read the entire code base and draw some conclusions. It can pull from lots of best practices and the millions of blog posts about this or that pretty effortlessly, which would take me a lot more time.
And then if asked, it can do a really good job of laying out the landscape around decisions and walking through the trade-offs. Like the author of this post, I found that if you let it, it will certainly be happy to just come up with some architecture and run with it, often in ways that will paint you quite rapidly into a corner.
But if you ask it to present you with all the trade-offs and let you make the judgment calls, it's great for that too.
That's certainly how I use it. And I think, just like anything else, working with AI is a skill, and similar to working with libraries, SaaS providers, service providers, frameworks, or anything else that's a "helper." You learn how something that could work but will fail silently is a problem, or you learn how depending on a fly-by-night SaaS company for a key framework is different than depending on a well-populated open source project, etc.
In the same way, you learn that relying on Claude's judgment is a bad idea, while relying on Claude's ability to summarize, brief, and research can be incredibly efficient.
If this is true how can you confidently make this assertion.
You yourself are not in a position to evaluate it, you are just running it through a couple times hoping for a "oh wait, you're right to call me out on that, that is not correct at all".