Live data from Hacker News

AI can code, but it can't build software

bytesauna.com

171–180 of 185 posts

Re: AI can code, but it can't build software

#171
post #152

Earlier quoted context omitted.

Most of the mentioned issues wouldn't be catched by a test loop unless you have 100% automated tests (unit tests, ...) Which isn't always plausible ( time ). The AI makes makes different mistakes than humans that are sometimes harder to catch.

It's a lot more plausible now you can get LLMs to help write those tests in the first place.

Most of these examples build ( shallow test in my LLM on the end of the task ) and produced new edge cases

Re: AI can code, but it can't build software

#172
post #39

Earlier quoted context omitted.

But it's becoming increasingly clear that LLMs based on the transformer model will never be able to scale their context much further than the current frontier, due mainly to context rot. Taking advantage of greater context will require architectural breakthroughs.

Will it though? The human mind can hold less context at any one time than even a mediocre LLM. The problem isn't architecture. It's capturing context. Most of it is in a bunch of people's heads and encoded in the physical world. Once it's digitized and accessible through search, RAG, or whatever, the LLM will be able to use it effectively.

Human hold a lot of implicit context, I think far beyond any LLM. Context is not just what you consciously are thinking about in your head

Re: AI can code, but it can't build software

#173
post #7

The context windows are still dramatically too small and the models aren’t yet seeming to train on how to build maintainable software. There is a lot less written down about how to do this on the public web. There’s a bunch of high level public writing but not may great examples of real world situations that happen on every proprietary software project, because that’s very messy data locked away internal to companies…

> aren’t yet seeming to train on how to build maintainable software. A while ago I discovered that Claude, left to its own devices, has been doing the LLM equivalent of Ctrl-C/Ctrl-V for almost every component it's created in an ever growing .NET/React/Typescript side project for months on end. It was legitimately baffling seeing the degree to which it had avoided reusing literally any shared code in favor of updatin…

I think this is a symptom of the limited size of context which the current tools can hold. As more and more data enters the context, the weighting of what's important or what already exists becomes "hard" for the AI tools to correctly deal with. Even to the point that information in any CLAUDE.md file is easily "forgotten" by the tool once the context gets quite deep.

My experience is that the tools are like a smart intern. They are great at undergraduate level college skills but they don't really understand how things should work in the real world. Human oversight and guidance by a skilled and experienced person is required to avoid the kinds of problems that you experienced. But holy cow this intern can write code fast!

Having extensive planning and conversation sessions with the tool before letting it actually write or change any code is key to getting good results out of it. It's also helpful to clarify my own understanding of things. Sometimes the result of the planning and conversing is that I manually make a small change and realize that the problem wasn't what I originally thought.

Re: AI can code, but it can't build software

#174
post #172

Earlier quoted context omitted.

Will it though? The human mind can hold less context at any one time than even a mediocre LLM. The problem isn't architecture. It's capturing context. Most of it is in a bunch of people's heads and encoded in the physical world. Once it's digitized and accessible through search, RAG, or whatever, the LLM will be able to use it effectively.

Human hold a lot of implicit context, I think far beyond any LLM. Context is not just what you consciously are thinking about in your head

Sure, but so do LLMs models. They have a huge subconscious (the model itself).

Recording every conversation a single person ever had, every book or text or site ever read, everything ever seen, is not a huge amount of data. Microsoft attempted this with a digital camera lanyard but they were too early.

Re: AI can code, but it can't build software

#175
post #172

Earlier quoted context omitted.

Human hold a lot of implicit context, I think far beyond any LLM. Context is not just what you consciously are thinking about in your head

Sure, but so do LLMs models. They have a huge subconscious (the model itself). Recording every conversation a single person ever had, every book or text or site ever read, everything ever seen, is not a huge amount of data. Microsoft attempted this with a digital camera lanyard but they were too early.

Yeah, but the models are all based on explicit data. I'm saying humans have prior wiring that allows them to extract and keep context that LLMs do not have access to.

Re: AI can code, but it can't build software

#176
post #175

Earlier quoted context omitted.

Sure, but so do LLMs models. They have a huge subconscious (the model itself). Recording every conversation a single person ever had, every book or text or site ever read, everything ever seen, is not a huge amount of data. Microsoft attempted this with a digital camera lanyard but they were too early.

Yeah, but the models are all based on explicit data. I'm saying humans have prior wiring that allows them to extract and keep context that LLMs do not have access to.

So the suggestion here is that RAG, tools, LLM memory, fine tuning, context management etc are not enough to take advantage of all this context? Is there any evidence that these things aren't on a trajectory to be optimized enough to do the job?

Re: AI can code, but it can't build software

#177

Many human devs can code, but few can build software.

But humans can learn. LLMs don't learn, they only get trained on data previously discovered through human research.

What is "learn" and what is "train"? It seems weird to distinguish this atm.

Re: AI can code, but it can't build software

#178

Earlier quoted context omitted.

I think C# is really going to shine in the LLM coding era. You can write Roslyn Analyzers to fail the build on arbitrary conditions after inspecting the AST. LLMs are great at helping you write these too. If you get a solid architecture well defined you can then use these as guardrails to constrain development to only happen in the manner you intend. You can then get LLMs to implement features and guarantee the code…

I do quite a bit of coding in C#, and have a lot of experience, and personally I haven't found LLMs to be that great a help at writing C#. First, LLMs are great at learning new tech stacks, but good ol' ASP.NET has been pretty much stable since forever. Second, I think Rider/Resharper is the greatest piece of autocomplete tech ever made, seriously nothing ever comes, close, which means I'd rather do a refactor using…

My point is I can my an analyser in like 20 minutes now and it's not a chore at all. I've made like 15 for my current codebase, and when the LLM goes off the rails and generates code in a pattern I don't like, I don't tell it how to write the code much anymore, I tell it to write an analyser that prevents it from writing the code that way and then it goes about fixing it up because now the build fails.

I do a lot of coding in C# with Rider, and refactoring has been a career speciality of mine. I personally find LLMs to have a tonne of value in this space.

Re: AI can code, but it can't build software

#179
post #146

Earlier quoted context omitted.

I think C# is really going to shine in the LLM coding era. You can write Roslyn Analyzers to fail the build on arbitrary conditions after inspecting the AST. LLMs are great at helping you write these too. If you get a solid architecture well defined you can then use these as guardrails to constrain development to only happen in the manner you intend. You can then get LLMs to implement features and guarantee the code…

Linters are great at catching specific pattern violations, but they’re useless against bad decomposition or a poorly chosen abstraction. An LLM can generate code that passes all 100 linters and still ends up being a logical mess - with business logic in the wrong layer and completely unmaintainable.

With Roslyn Analyzers and things like ArchUnit I've found its possible to actually write linters that enforce a predetermined architecture with established patterns such as enforcing usage of particular base or framework level classes in specific layers/locations.

I agree with the assessment LLMs aren't great at novel architectural work. I'm merely reporting my experience that using LLMs to write analysers that enforce established patterns takes the output from random to well ordered and provides a nice productivity boost in a constrained, but valuable, set of circumstances. It's not a complete solve, but it's a big improvement over just prompting them and hoping for the best.

Re: AI can code, but it can't build software

#180

Earlier quoted context omitted.

I think C# is really going to shine in the LLM coding era. You can write Roslyn Analyzers to fail the build on arbitrary conditions after inspecting the AST. LLMs are great at helping you write these too. If you get a solid architecture well defined you can then use these as guardrails to constrain development to only happen in the manner you intend. You can then get LLMs to implement features and guarantee the code…

Library authors don’t really provide custom analyzers. heck, the best we can hope for are some regex based linting rules, anything that involves local data flow analysis is very rare, and anything inter procedural is non-existent. Program analysis is a dark hole, you are better off just making stronger type systems, but then type inference starts to bite you if you want to support it (and you will given how annoying…

Analyzers are a first class citizen in C#. You can get access to the AST during compile time and use it to output diagnostics with error or warning level, so it's more robust than just regex.

I've not seen teams personally write them because they're abstract and most devs shy away from it, but working in the C# ecosystem the one place I do see them pop up occasionally is from library authors.

For example xunit has some.

https://github.com/xunit/xunit.analyzers

So far I have found the value in them to be they help you constrain the possible valid moves that can be made in a codebase. This is valuable with teams of human engineers, but even more so with LLMs. It just so happens LLMs are really good at helping you write them too given you know what you want to enforce.

I doubt the tooling is as good in other languages as it is in C# in this respect, but at least for devs working in the C# ecosystem LLMs have unlocked access to writing custom analysers on a whole new level, and with that it's now significantly easier to define and enforce rules regarding what constitutes a valid program, such that the set of valid programs matches your intended architecture.

Post reply on HN