nathan_compton 10 days ago

When LLMs came out I suppressed my inner curmudgeon and dove in, since the technology was interesting to me and seemed much more likely than crypto to be useful beyond crime. Thus, I have used LLMs extensively for many years now and I have found that despite the hype and amazing progress, they still basically only excel first drafts and simple refactorings (where they are, I have to say, incredibly useful for eliminating busy work). But I have yet to use a model, reasoning or otherwise, that could solve a problem that required genuine thought, usually in the form of constructing the right abstraction, bottom up style. LLMs write code like super-human dummies, with a tendency to put too much code in a given function and with very little ability to invent a domain in which the solution is simple and clearly expressed, probably because they don't care about that kind of readability and its not much in their data set.

I'm deeply influenced by languages like Forth and Lisp, where that kind of bottom up code is the cultural standard and and I prefer it, probably because I don't have the kind of linear intelligence and huge memory of an LLM.

For me the hardest part of using LLMs is knowing when to stop and think about the problem in earnest, before the AI generated code gets out of my human brain's capacity to encompass. If you think a bit about how AI still is limited to text as its white board and local memory, text which it generates linearly from top to bottom, even reasoning, it sort of becomes clear why it would struggle with genuine abstraction over problems. I'm no longer so naive as to say it won't happen one day, even soon, but so far its not there.

1
fhd2 9 days ago

My solution is to _only_ chat. No auto completion, nothing agentic, just chats. If it goes off the rails, restart the conversation. I have the chat window in my "IDE" (well, Emacs) and though it can add entire files as context and stuff like that, I curate the context in a fairly fine-grained way through either copy and pasting, quickly writing out pseudo code, and stuff like that.

Any generated snippets I treat like StackOverflow answers: Copy, paste, test, rewrite, or for small snippets, I just type the relevant change myself.

Whenever I'm sceptical I will prompt stuff like "are you sure X exists?", or do a web search. Once I get my problem solved, I spend a bit of time to really understand the code, figure out what could be simplified, even silly stuff like parameters the model just set to the default value.

It's the only way of using LLMs for development I've found that works for me. I'd definitely say it speeds me up, though certainly not 10x. Compared to just being armed with Google, maybe 1.1x.