Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Seems like the wrong question to ask. I've been programming my whole life but basically stopped writing code by hand in 2026. The LLM writes better code than I do, much better.
 help



Same here. I'm still a better software architect that AI, but there is no question that my AI generated and reviewed code has fewer bugs than code I hand write. It takes some humility to acknowledge that your coding prowess is less of a useful skill than it used to be.

There's an issue where people assumed the syntactic activity of writing code was what mattered. The reality is that this was always a smaller part of the role, as opposed to thinking about observability, serviceability, and test automation. The ability to write software that is properly separated from concerns and when to enact those separations matters.

At the same time, I think we're far too far down the systems path now. We've hit a point where interviewing has become purely systems design "because the AI writes the code".

Not that I'm ever asked, but I inherently believe the act of critical thinking, communication, and expression are the key skills for those who already have the appropriate coding/engineering/cs/etc background. I now only interview for those skills - but through the lens of impossible to solve systems design conversations as opposed to problems. It tells me a lot about how people think.


Writing is thinking

So is architecting, testing, validating, and even occasionally using.

This isn't the first time I've seen this phrase recently, but I'm not sure what the thought is a cliche or what it is intended to convey (don't read my note as negative, I sincerely am unsure what connotation folks are trying to say).


The idea behind "writing is thinking" is that people often overestimate their understanding until pressed to express it in words (or code).

How many times in your career did you sit down to tackle a task thinking you knew exactly how to approach it only to realize during implementation that there were edge cases you hadn't considered, API contracts that were now broken, or that the feature was trying to solve the wrong problem.

Having to be the one at the helm during implementation made you intimately aware of not only the problem at hand, but the current state of the codebase. That's something you can't replace with automation. You can't compress all of that context into your brain in a handful of prompts with Claude.

Remember the words of your math teacher--

"Watching someone else solve the problem doesn't mean you can now solve it too."


Not sure what you mean as system design conversations because while in theory those can be good in practice the ones I have been at had been techbro wankery where the interviewer had a particular answer in mind. Like designing your own memcached clone for example is a terrible task for systems design.

What you're mentioning is 100% what's wrong with the industry. Agreed! To me a systems design conversation is a conversation - not a design goal. The idea is to determine ability and psychology:

1. When you press on someone's design respectfully, do they get defensive. Do they become argumentative.

2. When thoughtfully pointing out a concern, how does the candidate take it?

3. When you suggest a technology that makes no sense to intentionally challenge knowledge, does the candidate recognize why it makes no sense? Are they able to share what the negative of the approach is. If you indicate that you know the question is "senseless" but want their feedback, how do they communicate?

4. When you hard request a change that requires a literal rethink and rewrite do they become argumentative? Do they embrace the change?

5. When discussing testing, how do they think about it? I come down to the nitty gritty and ask about postive vs negative cases, table driven testing, what types of tests matter (for our situation) and why.

6. We discuss timeline tradeoffs, and then have the conversation about the candidate's approach given updates to see how they think.

You'll notice that I am never looking for a solution. I'm seeking communication, description, partnership while having a (relatively) thorough gasp of the subject matter.

Every single time I get a response from a candidate such as "I don't know, I'd have to learn more - or use AI to, or.. what do you think" turns out to be something I LOVE, because it creates a great fabric for the interview.


Programming languages, design languages and architecture are all inventions made to help humans write understandable source. LLMs don’t really need to do any of that. They can store very large trees of understanding and therefore implement any application in raw binary. Why bother with abstractions at all

LLMs for sure need those things. maybe not the same abstractions as humans do but without understabdable code an LLM will just fail to accomplish the task you ask it to do.

It might be less ambitious and more practical to target bytecode.

But you effectively lose the human review component.


There's more python and typescript in the training data than bytecode.

I was thinking about that. I reckon generating massive amounts of synthetic training data for that goal should be possible - you've already got the Python, after all. It's also possible for machine code, but you'd have to target more platforms.

But ultimately, I think human readability outweighs any theoretical advantage you get from removing a step in the compilation process.


Targeting byte code or asm instead of high level would be silly for everyday tasks. You blow up the number of tokens, reduce your effective context, and there's just more places for it to make a mistake, which most likely won't be caught by the assembler (unlike compilers).

With the "intelligence" of code focused and capable llm in the last six months, the main problem I'm seeing now is where some total amateur who has no previous knowledge of coding tries to one shot a project. People who have previous experience and know how to architect things (and when to stop an LLM from doing something wrong that will cause maintenance and scale and extensibility problems in the future) are doing much better building actually useful things.

This one shot thing I just don’t understand. The way I’m using it, it takes weeks of constant prompts because it never does exactly what I ask no matter how well I specify. I just don’t see how it’s possible to one shot anything unless you don’t have strong requirements on the output.

I had pretty good success with a language learning app. Initial prompt below, about an hour to get it working very close to how I imagined, then extended to Japanese, French, and audio generation.

======================================

Hi! I'd like to create an app for interactively learning Chinese using AI. My current idea is:

- The AI generates a Chinese sentence at a specified vocabulary level (e.g. HSK2)

- The user translates the sentence into English, and the AI evaluates the response. If the answer is wrong or is partially correct but could be improved, the AI offers a hint. If correct, the AI confirms and explains any particularly important vocabulary or grammar points that the sentence demonstrates.

- The user should be able to click on an individual character once to see the pinyin, and again to see its definition and any helpful techniques to remember it (radicals, similarity to other characters, visual meaning)

- The app should also be able to go the other way, giving the user an English sentence and having them translate to Chinese.

App details:

- UI is a web app

- The AI should be pluggable. We'll start with a local Ollama install running gemma4, but it should be easily possible to add support for Claude/OpenAI/Gemini or other models (may need to provide an API key).

- Not actually sure if we need a backend. It might be useful to keep track of characters or concepts that the user has difficulty with, or to keep track of what sentences the AI has previously generated so it doesn't become repetitive.

- Build everything in a Docker container (or multiple if needed with docker compose)


I can see this being a one-shot thing because the brief is pretty light; beyond broad strokes, you haven't specified much for it to actually do. Any UI that's also a webapp would satisfy this brief, but that's exactly what I mean; e.g. if you want a specific UI, there's a lot more back-and-forth that's involved. It'll one shot a UI, but it's very rarely the UI you want down to all the interactions and placement of buttons.

Yeah, that's fair. I didn't have an exact UI planned so I gave it flexibility, and it made reasonable choices that only needed a bit of tweaking to be quite usable.

For me the usefulness of a survey like this has nothing to with how effective LLMs are themselves. It's more that when someone's able to produce an app in an afternoon, and submitting the app to F-Droid becomes a checkbox, how confident can you be that they'll continue maintaining the app? Sure if it's open source you can have your own LLM maintain it, but at that point what's the value in having it on F-Droid?

"There are naïve questions, tedious questions, ill-phrased questions, questions put after inadequate self-criticism. But every question is a cry to understand the world. There is no such thing as a dumb question". (Carl Sagan)

Just because you don’t seem to be interested in the answer - then don’t read it? - doesn’t make the question wrong.


Skill issue then

I just asked Astra to bring an old Windows XP game to the browser. It objdump'ed the whole thing, built a fitting Win32-like wrapper that exposes required functionality like DirectDraw, DirectSound, SEH etc., then wrote an x86-32/x87 interpreter in WASM, benchmarked how the game runs, lifted the hotspots of the executable to WASM too and now it is playable!

I mean, I'm proud of my low-level skills too but this is some Fabrice Bellard level sorcery. Very, very few humans are able to do this without AI tools.


But good code isn't just "does it work", it's also

- is it understandable

- is it maintainable

- how much work is adding new features

- is it written in a way that adding new features means rewriting a lot of it

- is it written in a consistent style

- and lots of other things

I use AI to write a lot of my code, but the only time it's clearly "better" than a competent human is for one-off things.

That being said - AI + human is, without any doubt in my mind, better than either one alone.


Absolutely, the Win32-WASM layer it wrote is some of the most evil looking code I have seen in my life. But realistically, why keep it maintainable for humans if you won't find anybody that can work on it without AI anyways?

If we humans are just doing code style checks, file organizing and doc cleanups I feel we have demoted ourselves to code janitors. This is neither fun nor going to last.

Personally I've always strived for minimalism, to find the smallest, fastest, simplest solution possible so I'm pretty jaded now, too...


Code is a human formalism that is only incidentally made executable. The elegance of code represents understanding of the problem to its most minute detail. LLM code being recognizably terrible shows it still doesn't understand what it produces to the full extent, and just as with people, it will inevitably compound to it becoming unable to efficiently work on it. And if the human abdicates that responsibility too, then there is no code, only subtly broken software.

Aye. Some of these targets are far away, others perhaps closer.

Human+AI systems is a good match. Like Human+docs or Human+encyclopedia.


- is it understandable

Yes you can ask the agent anything about it and interrogate it until you understand.

- is it maintainable

Yes it’s easy to ask the ai to add new features or to refactor it entirely.

- how much work is adding new features

Depends, it could just be one prompt, it’s usually many prompts. If the refactor is large it can take weeks. But before AI something g equivalent would take months.

- is it written in a way that adding new features means rewriting a lot of it

Usually no, but that depends on how well the agent is being directed and what the features are. If you come up with a feature that requires a new architecture, ai makes it doable rather than saying “would be nice but we’d also have to implement this whole new architecture and that’s a lot of work”

- is it written in a consistent style

Styles can be applied mechanically with linters and formatters, so as much as any codebase written by multiple people.


I've seen AI be wrong about things often enough to know that none of what you said is particularly true. Rather, most of it holds true most of the time. But not enough.

> Styles can be applied mechanically with linters and formatters, so as much as any codebase written by multiple people.

I'm talking more of a higher level than this - more of coding/design patterns that are common for the team.


> Rather, most of it holds true most of the time. But not enough.

I see it be wrong about things all day every day. And yet, IME it's correct enough for it to be controllable. It doesn't have to hold up all of the time, it just has to respond to corrections when they're issued in a loop so that it converges to a correct solution. And it does, despite the mistakes.

In one of my other posts in this thread I detail some of the the ways it's confounded me, but those issues have caused me to harden validation mechanisms rather than say "this thing makes mistakes so I can't use it to write software".

> I'm talking more of a higher level than this - more of coding/design patterns that are common for the team.

Do you have a concrete example?


What people don't understand that programming is very much an art. You iteratively work on it ripping parts out, rewriting and rewriting and rewriting, while also rewriting and then rewriting every time a new feature, bug fix or scaling changes are needed.

As a bit of an observation on that specific project... By hand as a human you could spend six months of the equivalent of a full time job doing that. Even if you had extensive knowledge in all of its discrete pieces. One of the things coding focused LLM are great at is doing things that have no reasonable prospect of economic necessity to do (no for profit company is going to pay you a FTE salary for six months to do that task, because there's no possible revenue in it). But the LLM can be pointed at it and get it done in a day or two with some periodic architecture and decision making by the human, for probably under $50.

It took two days and 50% of my Codex Plus week limit, so around 3$. Finally I can play the game on multiplayer again next evening!

What is the game?

https://www.gog.com/en/game/the_settlers_4_gold_edition

It did not work properly on Wine nor Windows 10, that was the entire reason for trying it out.


fwiw, PCGamingWiki[1] has a link to a patch[2] that someone wrote to fix the compatibility issues. If you're playing from the CD edition, you might also need SafeDiscShim.[3]

[1]: https://www.pcgamingwiki.com/wiki/The_Settlers_IV

[2]: https://github.com/elishacloud/dxwrapper/wiki/The-Settlers-I...

[3]: https://github.com/RibShark/SafeDiscShim


If there are very few humans that can do this is because the market for such a task is very small and thus there is little incentive to learn how to do it or produce tools that can do it.

Only people disliking AI for coding are the gatekeepers who think they are magicians and the plebs shouldn't be able to code like them, unless they become gud.

This is a false generalization. Lots of AI dislikers do so for a wide variety of reasons. I dislike it and don't care how other people use it.

The AI machine can write better code. It can also write an interpreter which implements function calls by instantiating a new interpreter + entire standard library per function call. Or it will build a 300kloc cathedral of scaffolding and maintain that forever, never writing actual code. Or it will create a CI system that takes 2 hours to run and constantly fails, and the agent loops there all day, fixing a small bug and waiting 2 hours. (All things I’ve experienced latest frontier models do)

Agentic engineering faces all kinds of new problems that couldn’t exist before, and need experienced engineers to solve them.


[flagged]


If you truly think LLM are not useful tools for programming, you haven't tried the right tools.

That is not the same topic. LLMs are useful tools, and that is despite them producing fucking awful code.

I would have agreed with you 6 months ago but things have changed rapidly.

Not sure what I can say but the LLMs simply do not write good code without tons of handholding. As a C developer most LLMed patches I have seen the last couple of months have been awful and the few good ones I know from the author themselves that they did a ton of iteration and/or manual cleanup. Maybe they are less bad at writing other languages.

At least what I have seen in Ruby and Typescript, they are excellent at doing what you asked for. But if what you asked for is stupid they will happily make it happen.

They don’t make normal mistakes like typos and they aren’t lazy so things like tests and checking error cases is usually done.


People say this every 6 months. I've stopped even paying attention to it, because (A) the code quality remains below the floor, and (B) the people saying it continue to ignore all the other issues with LLM code generation.

Up until the last couple of months, I have treated LLMs as a supercharged stackoverflow. I would ask it questions on how to do something in a general sense, and then adapt the answer to my use case.

Now, my entire programming flow does not even include an editor. The tools I use are: pi.dev to write and implement openspec specifications, herdr to manage many pi instances, and ollama to run qwen 3.8 27b on my single 7900 XTX.

Writing good specifications is the key detail here. I will often iterate on a spec for hours until I am happy with it all of the details. Once I am happy with the spec, I can be quite confident that when I tell pi to apply the spec, the changes that I want will be done, and done how I want them, when I come back to check when it reports itself as done.

The landscale is fundamentally different from what it was. Feel free to ignore it, but you can absolutely generate high quality code if you know what you're doing.


>ollama to run qwen 3.8 27b

Installed this recently to try it out.

>pi.dev to write and implement openspec specifications, herdr to manage many pi instances

Thanks for mentioning the tools you're using successfully. It seems like most people using LLMs are keen to keep their cards close to their chest.


No problem. I think it's less of people withholding information to have an advantage, and more people still not having settled on a workflow they like. Herdr is the most recent addition in my workflow as of only a few days ago, but it directly solves problems I have been having (juggling tons of terminals, even with my tiling wm has been a little unwieldy). The rest I've pretty much settled into for a while now.

The other tool I wanted to throw out there is voxtype (plus wtype). I've been looking for a good, global, local dictation solution for wayland for a while now, and finally landed on this one. It's great for rambling details that pi+qwen can then convert into concrete openspec specifications.

N=1 and might be a raw skill issue on my end.

But I all but stopped writing code 13 months ago. At the beginning the code was often bad.

In the last 6 months alone I had received more praise from my customers for excellent work than ever before.


I tried a lot of tools. Claude code, deepseek with kilocode and OMP, codex... I still use claude quite a bit. But frankly, all of them produce some absolutely godawful code. Review load went way up with AI, and it's not just the volume that caused it, but also the quality. It's extremely verbose, hard to read, often repeats code instead of factoring it into reusable components. And yes, sometimes it's also buggy. Except now, you have to debug a problem that's in code you didn't write yourself, and is awful to read.

LLM is incredibly valuable for debugging complex problems, codebase exploration, and planning large changes. But the writing code part itself, I find, LLMs are just not very good at it yet.


I don't have to debug anything.

Vaguely telling the agent what the issue is and what behavior I expect solves the issue with a fraction of the effort.

Some claim that the tech debt only keeps increasing and that the result will be unmaintainable. This is not my experience, and I don't think it is theirs either. These claims are often entirely speculative.


I, and I think most experienced developers, can recognize the type of code that incurs a maintenance cost down the line; that will make adding new code take longer. And AI writes such code "relatively" frequently. I love having the AI to write code, but I find it extremely important to review it - to make sure that it's correct, understandable, and not going to be a problem later.

I find it unnecessary for most non-critical code, such as client applications.

I doubt that any supposed future extra effort for the AI to add new code is remotely comparable to the upfront effort of you reviewing the code manually.

I know that this is the case today for native mobile apps, and I speak from hundreds of hours of experience over the last four months on such a project where I stopped reviewing the code.

We are already here today, and this balance is only going to further shift to the point where it is obvious that the hands-on approach is no longer competitive.


Everything about what you're said strikes me as sounding like "I don't bother wearing a seatbelt, because my experience is that I don't get in accidents" .. and also "I don't write automated tests, because I already hand tested my code and it works".

And neither one of those statements is very convincing to me.


And what you said strikes me as speculation not based on actual experience in using AI in this way, with a healthy dose of condescension added.

Anyway, I think we shared our viewpoints, and neither of us is going to change their mind until either my project fails spectacularly, or you change your approach in the future to use AI more autonomously.


I've had bugs the agents can't fix or figure out. Sometimes those involve third-party, proprietary, broken code (read: Windows APIs). Sometimes they just involve complex deployment situation on the client code (I work on desktop apps) where the agent can't figure out what's wrong/makes wrong assumptions/goes nowhere. Sometimes the agent is just very dumb and tunnels vision on the wrong fix.

FWIW, I've also had bugs the agent fixed that I probably never would've figured out without LLMs - LLMs are definitely useful! But I need to keep understanding how the code works so I can take over the reigns when the LLM fails.


I’ve had some luck prompting them to be concise, both in writing and in code, and with code doing an approach where they get it working, write tons of tests, and then refactor for conciseness and readability. All the tests prevent regressions doing this.

Without such prompting and a conciseness and clarity pass you get a slop grenade.

They overall work better with tests, and Rust is a great language for them. Overall they do better with lots of walls and alarms that go off if they mess up. I don’t need nearly as much of this, can mentally simulate it, which is a good “are we superintelligence yet” reality check. Still not even as good as my wet meat brain. But impressive given what was possible even two years ago!

The result is still not as clean as a good programmer but it’s better than the slop grenade you get first pass.


I'm pretty sure you used chat gpt when it came out and literally stopped looking then.

GPT 5.6 sol and Astra can now one shot incredible stuff.


I spent 22 years as an engineer split between MS and Apple. SOTA LLMs can write code just as good as most human engineers. I expect to see the "LLMs are just next token predictors!" crap on Reddit... not HN.

LLMs produce pretty crappy code but they are very useful tools for protyping, code search and finding bugs. Maybe LLMs in the future will be able to write good code but they are very far from that right now.

Perhaps it would be useful if both of you could provide examples of supposedly good and bad code – the latter being the result of a genuine effort to produce good code with state of the art models. Just asserting that LLM code is good or bad ends in a yes - no - yes - no back and forth circle immediately.

I just used an LLM (along with my decades of operating system development experience) to create a macOS tool [0] that lets me see through windows, instead of having to continually command+tab between windows.

The solution required reverse engineering and internals knowledge that most human engineers don't even have.

The question is no longer "Can an LLM write code?". It can. The problem is that certain humans refuse to put in the effort required to properly utilize these tools.

[0] https://imgur.com/a/2CUEjmA


We can't judge code quality without having the code.

LLMs have been good at knowing what's in the manual from v1.0. Super good at that. Pretty good translators. Pretty good at doing things that have been done a million times before, like your CRUD app. Super mediocre at everything else.

LLMs as things that know what's in the manual are AAA+. Extremely helpful. Very good at making a rough draft of something filled with a lot of stupid mistakes and no new abstractions. That's what your transparent window thing is. Something that you could never ship, is probably too big and doing senseless things for no intelligible reason, and definitely has bizarre bugs.


What in the world are you talking about? I was literally an senior engineer on the Windows Kernel team, the Visual Studio team, and the Xcode team at Apple.

This application, named Seymore, is being evaluated for purchase by several tech companies. (It helps having good industry contacts)

There was a ton of interesting engineering required to make this work at 60 fps+ without resorting to hacks or using private APIs. Most macOS engineers wouldn't even know where to start.

I've shipped code that is used by billions of people and all you just did was spew a bunch of bullshit. As someone who has built their own LLM from scratch, I have an extremely good idea of what they can and can't do.

If you don't know how to use these tools, you'll end up with crap. If you DO know how to use them, they are incredibly useful.


I don't agree with using your credentials to show your code quality, but I don't doubt you have better standards than most developers. That said, stop trying to change their minds. Antirez was a good at programming until he started coding using AI only. The same will be said about Carmack and Linus.

What they are saying is increasingly difficult to defend, but they will do it anyways. I see the same arguments at my job, and I just gave up arguing against


I mention my background because it is relevant context: I spent nearly 30 years building software used by billions of people. If you use Windows or macOS, you have likely used code I helped ship. I’m not going to apologize for that experience or pretend it does not inform my judgment.

Some engineering problems (such as designing a performant thread-quantum algorithm) require depth accumulated over years of working on real systems at scale. That is not elitism; it is simply how specialized expertise works. Experience is unevenly distributed, and that matters when evaluating technical claims.

When I say I trust LLM generated code, I mean that in a qualified, engineering sense. I do not treat an LLM as a slot machine: enter a prompt, paste the output, and hope. I use a deliberate workflow for decomposition, prompting, review, testing, validation, and integration. Developing that workflow took substantial time and experimentation.

The useful question is not “Can an LLM write code without oversight?” It obviously cannot, at least not reliably for nontrivial work. The question is whether an experienced engineer can build a process that makes LLM output trustworthy enough for particular classes of work. In my experience, the answer is yes. But the process, judgment, and willingness to do the work are the hard parts.


This kind of shaming is getting tired. At the end of the day, the people claiming their code quality is better without ai, while everyone else has low standards, aren’t providing any evidence of their supposed superiority.

I think the burden of proof is on the new technology. It's been almost a year since the supposed death of manual coding, depending on how you count, but I haven't seen the efficiency benefits of AI trickle down to the programs I'm an end-user of. I _have_ seen the bugs, however (rsync 3.4.3 for example.)

Depends what you mean by end-user. Power users of AI aren't using these things to build applications for users, they're using them to do all the things they couldn't do as mere mortal programmers. Like the other poster detailing how they got a game running in web assembly. That's not for end-users, and even if it was they wouldn't be able to look at that and say "Wow, this is an example of AI benefitting me as an end-user" they'd just say "Wow cool, a game".

What is fkn?

It's short for "fucking".

That’s fn lazy.

TIL what `fn()` actually means.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: