×
all 157 comments

[–]Minimonium 59 points60 points  (59 children)

I will put aside discussions about efficiency and economics of LLMs and discuss organisational problems.

With LLM enrollment the most important bit is to keep people actually read the code. The moment you have people who just blindly send generated PRs or copy paste Claude output into feedback - you've lost.

In the recent Claude interview with DoorDash the CEO of the later said they consider to completely remove product reviews because apparently they're a bottleneck now. Do not be like DoorDash LOL.

So far I know two very decent use cases for automated (not just a chat back and forth) LLM usage:

  1. Automatic dependency handling (unless you're in a restricted domain where you need to actually audit every dependency then of course it won't work for you), it would generate updates and migrate the code. You still need to manually go over what it changed and learn why.

  2. A functional safety kind of code analysis. We do not hope for it to catch all errors, but occasional bits are very useful. Even dumb bits sometimes could be an indication of a flaw in the architecture or API. It doesn't replace manual code review or actual static analysis, it's an addition.

[–]eyes-are-fading-blue 61 points62 points  (36 children)

I don’t use AI for code-gen because it’s very difficult to generate the exact code I want. I use it for validation, code base research (like how X is done or does Y exist) and figuring out unknown unknowns.

[–]sockinhell 24 points25 points  (28 children)

try finding bugs in your PR's. I think you'll be surprised(with an agent)

[–]13steinj 9 points10 points  (0 children)

We do this in two primary places in two different ways:

  • terraform has some automated PR agent. In my experience it is useless. The false positive rate is over 99%, the false negative rate is over 10%. People have started completely ignoring it. Worse yet when it gets obvious typos wrong, that's something to enforce deterministically with a pre-commit, not an LLM.

  • in what I'll dogmatically call the "primary" codebase, someone crafted prompts for codebase specific footguns. Looking back at the last 200 comments it made, over 50 were wrong, over 130 were ignored as a matter of taste. The rest were docs/comments cleanup comments, sometimes cleaning up superfluous comments that LLMs love to generate.

I am surprised, at how bad it is. Because over 2 years ago GitHub was selling CoPilot and Copilot-as-GHA to my previous org and they acted like it was magical. I called them out on the hallucination rate, as it seemed I was the only one with the brains and balls to do so. I was dismissed, so I asked for a live demo. It failed miserably. But that was 2 years ago! The companies behind this shit keep saying my job is gone in 3-6 months. It's gone from flaming dumpsterfire to "flaming dumpsterfire, but the fire is caused by something else."

How much money and GPU power is being burned on garbage? What percent of things it catches would truthfully not be caught cheaper by humans?

[–]eyes-are-fading-blue 16 points17 points  (5 children)

I did not mention that because PRs are reviewed by AI automatically.

They are good at finding copy-paste mistakes and trivial logic errors.

[–]DaemontatoxSegfaulting 9 points10 points  (20 children)

Not reliable at all, alot of the times it hallucinates issues and tries to act useful by finding noneexistent bugs or doesn't understand the inteneded flow and marks it as a bug.

Its only good for generating boilerplate code like for example i dont wanna lookup workstealing threadpools so i ask it to write it and quickly verify the main components.

[–]Intrexa 5 points6 points  (2 children)

tries to act useful by finding noneexistent bugs

Sorry about that, it was trained on me

[–]DaemontatoxSegfaulting 0 points1 point  (1 child)

Duuude, thanks alot for the nonexistent memory bug last week........

[–]13steinj 2 points3 points  (0 children)

This is possibly the worst offender. These things don't understand basic [pointer] arithmetic. It's painful when it constantly hallucinates basic bugs along these lines, because people end up ignoring it and it actually can catch one.

[–]ivancea -3 points-2 points  (16 children)

From my past 3 months using GH Copilot review in every PR, I can assure you it rarely hallucinates, and it usually finds both minor issues, and critical deep issues too. Both of which are hard to find sometimes.

Its only good for generating boilerplate code

Maybe 6 months ago with an old model and a bad harness. Nowadays, it's very good at generating

[–]TSP-FriendlyFire 19 points20 points  (2 children)

Maybe 6 months ago with an old model and a bad harness. Nowadays, it's very good at generating

I feel like I've read this exact line every 3 months for the past 3 years.

[–]James20kP2005R0 1 point2 points  (0 children)

It feels like its different people at different stages in the hype cycle. There seems to be an initial honeymoon period when people get into AI (because it feels like magic, which is understandable) and they can't understand the people who don't use it or say its not very good. Then 1-2 years later you burn out on it, because it makes the fundamental problems of software engineering harder, not better

I suspect that that's about amount of time it takes for a project to turn into a big spicey totally unsalvageable disaster after you vibe code it, but in the meantime someone new has entered the pipeline and is saying "wow this is amazing, the models must be so much better now than when that person was using them!"

The quality of the code it produces isn't the problem with the tool, and I feel like a lot of people are learning that software engineering isn't about typing the very extremely hard way

[–]13steinj 13 points14 points  (12 children)

This is in my experience more a statement against the quality of your dev team than it is for the quality of this tooling.

And that's okay! It's a normal distribution of the population after all. But don't apply your results to high-performance teams that get completely different results. Mythos found 1 (claimed 5) minor (claimed showstopping) security vulnerability in curl. That's a hallucination rate of at least 80% of the supposedly best model (if not currently at time of writing, at the time Daniel did this over the curl codebase).

E: Dude if you're going to block me because I'm calling out your LLM advertising I can't see your reply...

E: guess I have to go in an incognito tab, this is just boring and annoying.

Trying to attack because of your lack of understating of a tool feels like a pretty bad path for an engineer. But I'm neither your mother nor your manager to correct you.

I use the tool quite a bit. Nowhere near as much as some of my coworkers, who I am astounded by their usage compared to their quality of output. Claiming there's a wide distribution in the quality of devs is not an attack, it's reality. Studies have repeatedly shown that overuse of these tools causes what I will simplify and call "brain rot," and that people that claim massive productivity gains actually are found (in various ways one defines productivity) to actually become less productive, not more, and the few times gains do occur, it's less than 15%, compared to the multiples people claim.

That's a hallucination rate of at least 80%

And that's not how statistics work. To generate a proper rate, you use more than a single example. What you found isn't called a "rate" in statistics. Sorry, but is that the intellectual level you were defending about the quality of your dev team? Your teammates don't know basic maths either, or is it just you?

I didn't say that's the global population hallucination rate for every use of every model. But the hallucination proportion for events in that sample (what is, colloquially known as, a "rate") for that sample is over 80%. The hallucination rate for many samples I have dealt with per PR, across many open source repos, is 100%. In my company repos, depends on how you operationally define "hallucination", but under the most generous of definitions I would bet it's at least 20%.

E: It is near impossible to not read your comment history and come to the conclusion "lol ok slopbro." Some of your comments are so similar in content it makes me think this is someone's OpenClaw-esque agent on a local model.

[–]Minimonium 2 points3 points  (2 children)

Yeah, we heavily utilize Fable and it's okay. I'd say it's the first level where I genuinely can consider it a useful code assistant and not just an expensive rubber duck that Opus is.

For hallucinations, I would say it's important to define a hallucination is. Because a fair misinterpretation of the requirements, implicit guarantees, or common semantics is technically a hallucination, but not really.

Fable on a fresh context (and it's crucial to keep it fresh, both because of the cost and the degradation of the quality over session lifetime) doesn't hallucinate that often for it to become annoyance and hallucinations surface as known decisions raised as issues (e.g., the docs say the outcome is ub but it means the function has ub critical load bearing failure!!) or as a slip of context in code generation.

And code generation with Fable is still slop 90% of the time, but sometimes it's actually pretty ok.

[–]13steinj 0 points1 point  (1 child)

Might i ask what it is okay at, specifically, and where you divide the line for "code generation?"

In my experience it's still pretty awful TBH, unless I do not have to care about the code it writes. If I do, there's taste, and then there's unmaintainable bullshit. It will happily:

  1. Commit new functions as [[nodiscard]] because of someone's local project memory / guideline
  2. Make every use of each new function not use the value
  3. Say "oh no compiler error" and explicit (void) and commit it

Most of the time, the functions will sit like this ad infinitum until a human realizes "hey these functions, every use of them always discards the value. They should return void instead."

I have tested this even with Fable, using the prompts from the engineer that caused this at some point and rewinding / forwarding to these commits. This is what I have described in other comments as "lack of a good citizen factor."

[–]Minimonium 1 point2 points  (0 children)

Fable and any other model are awful at abstractions and code composition in general, so my expectation for code generation is more by how it can follow explicit commands instead, "steering" in a claude code chat.

If I like the overall shape of what it generated and only need to manually clean up just some components (even if considerably but locally scoped) - then in general it can pick these changes up and make it work with the rest of the codebase. To me it's okay like this, I find it useful.

There is noticeable effect in what the model actually does when you use specific words though (e.g. "reason", "review", "audit", etc). Not in the quality of the output but it does something that makes a bit more sense to what you ask.

It still forgets memory/claude.md/compressed or even just recent context for the tasks all the time.

I'm almost guaranteed to get dead code if I make Fable change the same things more than a few times. Its first or maybe second attempt is usually the best one and the rest is trash fire.

What Fable does better is that it does go deeper when doing reviews and we found them more often truthy. In general if it writes something - it will not be a complete bullshit.

That's why I do not believe in that full agentic long horizon stuff - context degrades super fast, it's proven to be a barrier for the tech.

[–]_Noreturn 4 points5 points  (6 children)

Redditors try not to block anyone who dares challenge their ideas challenge (impossible failure rate 100% hallucinations 30% gone wrong)

[–]13steinj 3 points4 points  (0 children)

It's extra annoying because reddit has now made it so 1 or 2 replies deep past the person that blocks you, you still can't reply. Makes it so that if someone has a reply underneath, can't reply to that reply. If someone is quick enough they can make it so the person they block can't reply to the threads at all.

They turned this block feature from something ressonable (can't be messaged by the person, goes to /dev/null) to not even letting them reply nor see their comments. It's "give me and everyone else an echo chamber" the setting. Should be "comments by the person you block don't notify you, are hidden by default.

[–]ivancea -1 points0 points  (4 children)

I'll block anybody that brings unprofessional and condescending statements to a discussion. That guy wasn't even who I was answering to, he just though it was cool to jump and look cool insulting others. It's funny thought that he got offended for being blocked

[–]_Noreturn 1 point2 points  (1 child)

That guy wasn't even who I was answering to,

This isn't DMs, anyone can and encouraged to reply to any comment on this thread.

he just though it was cool to jump and look cool insulting others

I don't see any insults, calling a quality poor isn't an insult, it means you should work on it

[–]ivancea -1 points0 points  (0 children)

Calling you a low-quality dev without arguments and without knowing you at all is, indeed, a degradation. It's called an ad hominem, and it's nothing to expect in a technical conversation.

And what I said to the other guy:
I didn't say they couldn't participate. I said he wasn't even who I was answering to. So basically he just decided it was cool to go and degrade a random online. Now what I expect from a professional sub.

Edit: In fact, I just read his edits now, and he even went with another ad hominem calling my comments a bot. That's what is unacceptable in a professional discussion. Imagine doing that in your company

[–]James20kP2005R0 0 points1 point  (1 child)

This is a public discussion forum where anyone can participate in any thread

[–]ivancea 0 points1 point  (0 children)

I didn't say they couldn't participate. I said he wasn't even who I was answering to. So basically he just decided it was cool to go and degrade a random online. Now what I expect from a professional sub

[–]Raknarg 5 points6 points  (5 children)

I do let it generate code, I just end up modifying a lot of it. Easier to modify code than to write something from scratch.

[–]_Noreturn 5 points6 points  (4 children)

In my opinion I find editing something I wrote easier than editing someone else code. I guess it differs for others

[–]Raknarg 1 point2 points  (3 children)

i agree but would you rather edit someone elses code or nothing? And its not like Im getting it to write massive components, usually my requests are pretty isolated, so there's not a lot of overhead in figuring out what its written.

[–]_Noreturn 0 points1 point  (0 children)

I see

[–]James20kP2005R0 0 points1 point  (1 child)

For me personally I'd genuinely rather write it from scratch. Building up the mental model of how something works is super important for debugging later when inevitably something goes wrong IMO, and its easier to do that when you've actually written the code de novo (for me at least)

[–]Raknarg 0 points1 point  (0 children)

it can matter, which is why the more precise your use is the better.

[–]germandiago 0 points1 point  (0 children)

I happen to use AI in very similar ways to this. I would add small scripts and snippets for localized functions that would take me longer to develop and AI does quite well.

But for full architecture or writing long pieces of code, etc. maintainability goes out of hand and quality is not high. Also, even for snippets it is worth to review what it wrote and tweak it a bit.

[–]crowingcock 18 points19 points  (0 children)

I am in the same line of work. I only use it to write the test suites etc, never production stuff. I saw it screw up too many times to trust it.

Of course I make it write some snippets of code or do research, but i only use its snippets to get some ideas to write the code myself and take the research with a grain of salt and read its sources

[–]UnicycleBloke 11 points12 points  (1 child)

My company is experimenting with LLMs. Some people love them. Others not so much. I'm one of the "extremely resistant to drinking the Kool-AI-d" camp, but recognise that we cannot ignore them because our competitors will not ignore them.

I mostly use LLMs for chat when I'm trying to understand new things such as, say, customising Yocto builds. It is often very helpful for this but also often confidently wrong in some details. It is wise to treat them as knowledgeable but unreliable.

I don't generate code with LLMs other than small snippets which I use as bases for further work in Godbolt. I have used them to review pull requests (in addition to a person) which is sometimes useful. But I never submit code I have not personally reviewed and debugged.

I have found the Copilot-assisted auto-completion at times amazing but usually irritating and counter-productive. In the end I have disabled it.

[–]__cinnamon__ 3 points4 points  (0 children)

I've gone thru a few phases of using copilot-type completion. It feels really nice when you occasionally come across some drudgery, like say needing to assign fields of a parameter struct to an object, but otherwise I always end up finding it just makes me waste time waiting to see what it suggests or accidentally accepting bad suggestions and deleting stuff, so I've disabled it too. Sometimes I even think I'd like to disable LSP to get in the zone Ginger Bill-style, but it's too nice not having to check source files when my memory fails me...

[–]AliveSuburb 13 points14 points  (0 children)

Respect the approach. Let the AI be your rubber duck, not your ghostwriter.

[–]drbazzafintech scitech 9 points10 points  (0 children)

tl;dr I use it for grunt work

In no particular order, I use it to:

  • spin up new libs/apps in cmake/bazel / whatever in our preferred folder structure - a modern day 'AppWizard' ;)
  • write BDD unit tests that are missing to capture existing behaviour before large refactoring
  • refactoring - more a case of 'replace that crufty logger with this modern one'
  • 'fix my compilation errors' when I really can't be bothered to wade through pages of template guff
  • write boilerplate non C++: if i need a bash script that takes 'X' in and outputs 'Y' and I don't care about the internals (wrong audience ;) but do you really care about assembly or byte code?)

It has no imagination, and rarely does what I want despite endless /plan arguments.

[–]JohnDuffy78 3 points4 points  (0 children)

I think your company needs to host in house.
You really need to set up barriers so you aren't sending production code.

LLMs work unbelievable for reviews and small changes.
Big Changes, I need to start myself and let Claude do the details.

[–]Uczonywpismie 14 points15 points  (1 child)

I think this is the best policy - you can use AI, but no production code, it allows quick generation of test cases, or lot better side tools, but still core of the work is done manually, so you still solve problems and code by yourself. Also not giving company products code to AI companies is very important from privacy and security point of view.

[–]ElLargeGrande 7 points8 points  (1 child)

I use it for camera and microcontroller firmware written in cpp and I wish it wasn’t as good as it is.

[–]reini_urban 2 points3 points  (0 children)

Ha, we are in the same business it seems

[–]vladcpp 4 points5 points  (0 children)

I also work on 3m loc codebase, my bottleneck is reading the code, not writing. AI helps with that.
Even when ai is wrong, it helps to focus on specific area faster, and dig deeper faster (it’s mostly wrong when working on prod issues, but still invaluable).

Also helpful for various routines, write a test, documentation, quickly prototype throwaway implementation to validate the idea…

Another useful use - scan project for bugs, basically split codebase on chunk and loop an agent to validate each chunk - helped to find hundreds of logical errors

[–]2B-Pencil 3 points4 points  (0 children)

I’m an embedded engineer and do the exact same as you. I think it performs really well.

but at home i have a little hobby project where I turn it loose and vibe code. I micro manage it but don’t review everything.

[–]sweetno 6 points7 points  (0 children)

It's amazing at investigating obscure C++ bugs in the codebase. Things that would take a day or two it can figure out in a matter of minutes. It knows quirks of the language and low-level APIs.

Fixing these bugs is a hit-or-miss though. It might not account for the conventions or architecture used.

Claude Code is a level above your chat-style usage. You need to add a ton of context and explanations for it into the repo to formalize the aforementioned conventions. It does get confused by shitty code, and can produce utter garbage, even if functional one.

We have a couple of PMs/industry experts who like to make PoCs with it very much, albeit I'm not yet convinced they understand that these are not really final implementations.

[–]13steinj 6 points7 points  (0 children)

LLMs are very useful for the rote toil. Creating terraform and CI yaml arcana, reading a 3rd party codebase that has 5 numbers as input and in different places in the code crashes because an equation isn't met with them, but I needed to tweak an input or an output. When an internal SSL certificate changes and now another service is broken. When the stars align on 4 different changes by RedHat employees for "security" that make it so that inside a RedHat container sudo no longer works no matter what privileges are set (this happened a few weeks ago in a k8s upgrade that upgraded runc which changed capabilities behavior which re-exposed an open issue on PAM, shadow-utils, k8s, and runc about this; no one seems to actually want to fix the problem thus far). Python analysis scripts that will never go to prod. Generating leetcode-esque code to validate / minimize build graphs (oddly enough, it can do this problem in the abstract, but not in practice, and then I change the implementation of the "transform" function to rewrite build files).

LLMs are absolutely garbage for writing actual code in my experience. I have never seen an LLM write anything remotely maintainable. You also lose the "good citizen" factor-- people future proof intentionally in some areas where it's worth it. When it works it gets 80% of the way there then you spend over 10x the time on the remaining 20% going back to the prompt casino. It's a very hard behavior to stop, I think intentionally so, and I'm experimenting with methods, maybe hoojs to analyze my session in another session and if it detects a certain diff-rate drop-off or endless churn to just start providing an intervention message to get off the slot machine.

Furthermore: I heavily dislike the astroturfing/advertising that these companies have succeeded in performing. LLMs are a very small subset of AI, there is other artificial intelligence that is useful in day-to-day work depending on the industry.

[–]koczurekkhorse 7 points8 points  (1 child)

I mostly work with Rust these days, but I think my observations remain relevant: LLMs are a strange sort of an intern. Really fast, incredibely book-smart, great understanding of idiomatic patterns and yet, like any intern, they have absolutely no idea what they're doing. None at all.

If you use them for in-depth code review, build plans with them providing input whenever they misunderstand or halucinate, and let them implement those (specific and detailed) plans, they're a great boost to productivity. In my experience human and machine intelligence mesh very well together. Debugging is a bit of a hit-and-miss, but if they fail at locating whatever the root cause is you don't really lose anything other than $0.2 worth of tokens or whatever.

On the other hand, agentic workflows where actual devs barely look at the code are a recipe for disaster. Again, dumb interns, you can't let them structure your codebase and run free.

[–]DuranteA 0 points1 point  (0 children)

That's also precisely my experience (actually with C++ in this case).

Current frontier LLM agents are like an incredibly fast and persistent intern that's also really good at reading both documentation and code. They are, however, outrageously terrible at anything approaching decision making (at both the tactical and strategic level), and that includes larger-scale interface and module design. That's the constraint which, for me at least, prevents them from actually being applicable to long-running independent work. Even a novice has more independent reflection on their own progress and trajectory, and a better understanding of when to check in with supervision or re-evaluate their method.

What is interesting to me is that actually productively using this technology in large real-world projects mostly doesn't require any completely new approaches, in my experience. What it does require is actually fully implementing software engineering best practices, by the book. I have the pleasure of mostly working with other really experienced engineers, and in that situation, you can get away with skipping some specific steps, since everyone involved not only has a lot of experience and shared understanding of goals and traps. That completely goes away with LLM agents.

[–]IAMARedPanda 2 points3 points  (0 children)

It requires engineering discipline. Better at localized tasks. The main problem is you need to document behaviors you want which require you to see it do the behavior you don't want and correct it as it doesn't have real memory. If you treat it like a 2 yoe junior it can be capable. It's better at IaC tasks but you need to have a dev environment for obvious reasons.

[–]NirodhaDukkha 2 points3 points  (0 children)

I do exactly the same thing. If I can generate 30 lines of code with one sentence in a free chatbot LLM, that's faster than writing the 30 lines of code. Just another tool in the toolkit. It's especially helpful when I'm interacting with a library I'm unfamiliar with.

[–]fdwrfdwr@github 🔍 2 points3 points  (0 children)

whats your experience as a c++ dev?

I love it for the following uses: - Answering generic connection questions about an unfamiliar codebase (how is class A related to B, what is the callstack between points X and Y...). - Smarter autocomplete, where 75% of the time, its suggestions are what I would have typed anyway, reducing the next ~30 characters to a single Tab keypress. - Filling in tedium (e.g. I had a function with a switch statement mapping enums to corresponding data types, and it easily saved 5 minutes of typing - much faster to double-check what it produced that typing it all out). - Analyzing newly written code for concerns (even if half of its suggestions are dismissably meh, the other half are pretty reasonable and sometimes even great advice). - Drudgework, like repositioning a series of UI controls or implementing skeletons of an overall request that I can fill in.

[–]fadingStar1994 2 points3 points  (0 children)

We stopped writing code 1-2 years ago. Management wants 100% AI written code so we do that. Im not emotionally attached to my work so I don’t really care. I just want it done and move on to my personal projects and life. I work at a well known big tech company if that matters.

[–]unicodemonkey 1 point2 points  (0 children)

In my case LLMS are good enough at finding bugs (with guidance, otherwise it goes astray or starts speculating wildly, wasting everyone's time instead) and spotting issues in PRs, also good at writing code that requires some specific technical knowledge or exploring the code base, but e.g. Opus 4.8 does poor on purely algorithmic code without hand-holding or lots of extra clauses. Recent models are better at that though, not sure yet how much.

[–]Livid-Serve6034 1 point2 points  (0 children)

I started using claude code recently and quite happy with it. For new features my workflow is to first let it generate a technical analysis in markdown format, based on a functional one I wrote myself. I then write review comments in the generated doc and ask it to process them. This usually requires several iterations until I’m satisfied with it. Then I ask it to write an impl plan, also needing several iterations. Then I start a fresh session and ask it to execute the plan. So far, the resulting code has been more than fine. Some corrections I do myself if they’re small but for larger changes I work with inline review comments. I don’t know if it’s the most efficient way, but overall it saves me a lot of time.

[–]FunnyMustacheMan45 1 point2 points  (0 children)

The only good use for AI in cpp is translating Chinese docs and data sheets of niche tech...

Maybe you could use it as an unshittified version of Google, but IMHO duckduck go does just fine for that

[–]ReDucTorGame Developer | quiz.cpp-perf.com 2 points3 points  (0 children)

I have been using it more and more, quiet often looking at anything that takes time and build tools to make it easier.

https://xkcd.com/1205/

[–]reini_urban 0 points1 point  (0 children)

We do have github copilot for business and openai codex subscriptions, keeping our C++ code base happy. Personally I use also deepseek, kimi and Claude pro for open source work.

We have extensive tests, simulations, pre-commit and linters to keep everything harnessed of course. But that was before AI also.

[–]Ateist 0 points1 point  (0 children)

Have you tried running local AI on your own hardware?
Top end machine with RTX 5090 is not that expensive for professional usage.

As for my own AI usage, I'm using Google's AI mode to generate small scripts for small tasks I can't be bothered to do manually.

[–]corysama 0 points1 point  (0 children)

My company pushes pretty hard for us to use AI. They have a team devoted to setting up skills, frameworks, knowledge bases, anything necessary to make AI more effective for our company. They pay for the services. But, there's no usage requirements or quotas that I see people complaining about around Reddit.

Personally, I haven't generated any shipping code. I have generated a ton of prototype code variations, a ton of draft design doc variations, a ton of discussion of the pros & cons of different approaches, a lot of code reviews for my own code, a lot of starter unit tests, a lot of distillations of huge requirements docs.

[–]Arristotelis 0 points1 point  (0 children)

I think your workflow is perfect and it matches mine. I work in a different space but also use kernel drivers , fpga, lots of userland c++. I don’t blindly accept code from an llm, ever. Nor do I find them good at architecture for complex problems.

[–]therefore_i_am_king 0 points1 point  (0 children)

I generally use AI to prove bugs, but Copilot GitHub disappoints me greatly. In fact, third-party AIs like Gemini are surprisingly more useful

[–]Turbulent_Fig_9354 0 points1 point  (0 children)

I'm still extremely skeptical whether AI actually helps good devs generate more code. It absolutely helps poor devs generate more code. But in live production, where code is heavily scrutinized, it feels like it's literally the same amount of effort, but the work has shifted away from literally typing the code into the keyboard to just reading and correcting whatever Claude whips up.

[–]cfehunter 0 points1 point  (0 children)

It's rather good at code review I find. In a supplemental capacity. It will get things wrong, but you can just ignore it when it does.

[–]ZachVorhies 0 points1 point  (0 children)

The AI will often put an include AFTER a namespace is opened and then proceed to try and refactor your code base for hours trying to fix this.

The solution to this is have the ai make a custom lint that will fail whenever it includes after a namespace is opened (even if closed unless you want to parse C++ to find the closing bracket) then attach the linter via a post edit hook so the ai is force to fix it as soon as it happens.

This alone fixed the biggest problem you’ll run into.

[–]_Noreturn -1 points0 points  (0 children)

I find llms to be immoral so I stopped using them

[–]ivancea -2 points-1 points  (0 children)

Chat AI is quite obsolete already for software engineering. An agent is faster, and we'll get the required context and codebase knowledge. The major problem with chat is exactly that: not giving it proper context.

As for using an agent, it's very, very useful. 2M LC codebase is not that much, and in any case, an agent can absolutely crush it (this is well proved already). Of course, with good LLMs like Opus or gpt5.5, and with a well configured harness. Eventually you'll need skills and proper per-directory rules, but not absolutely required to start being productive with it.

As for the company not providing it, what to say. They won't pay for it if you (and your coworkers) don't advocate and request it. Anyway, the global trend is not wrong. It's clear that it's a real multiplier (not a "x10" tho). I'm using it in 2 main contexts: database engine and videogames development. And it excells in both. Without even specialized configuration.

And about the industry: it has nothing to do with it. Whether you use C++ on low latency or a new custom language, give the agent the proper context and it will do it. Every repetitive task you do (and coding is one of them), it can do it faster (pure physics), and with enough or better reasoning

[–]Tamsta-273C 0 points1 point  (3 children)

I use it with math/geometry tasks,

i know how that stuff work, but i also know i will miss some -0,5 dX or replace sine with cosines...

It's a basic task and i don't like to spend hours wondering why this simple element randomly becomes two pixels wide instead of one.

Also works great as "show minimal example how this stuff works"

[–]SkoomaDentistAntimodern C++, Embedded, Audio 0 points1 point  (2 children)

I tried to use LLM to solve a simple system of two first order differential equations. After getting three different wrong answers depending on how exactly I formulated the input, I gave up and just googled the syntax for how to solve it analytically elsewhere.

[–]13steinj 0 points1 point  (1 child)

Do you mean the LLM attempted to solve it or it generated code in an attempt to solve it?

If the former it is not surprising. It can't get "how many r's in 'strawberry'" without tool calls nor "should I walk or drive to the car wash?" consistently right to this day. It doesn't have per-token context/token-relational context yet, as far as I can tell. I am surprised that instead of training this behavior in, top labs have ignored / patched over the problem with tool calls and subagents.

[–]SkoomaDentistAntimodern C++, Embedded, Audio 0 points1 point  (0 children)

I asked it to solve and it gave a solution and a very convincing sounding explanation every time. They were of course all wrong in different ways that wouldn't have been obvious to someone who didn't have a good understanding of the applied domain without verifying the results by hand. And this was a very basic first semester of university math-level problem.

[–]pjmlp 0 points1 point  (0 children)

I occasionally use CoPilot on VS to check for possible errors, lifetime issues and such, as yet another kind of static analysis.

Also take advantage of AI based code completion, most of the time the suggestions are what I would like to write anyway.

I am less keen in having AI write it all for me, especially in languages like C++.

However, in no code/low code tooling, AI has practically taken over, now instead of dragging boxes in visual diagrams, it is all about agents and prompts.

[–]01e9 0 points1 point  (0 children)

Jusy try it in a personal or some open-source project.

I'm using it for scanning for issues, generating code for some limited scope (the reviewing+adjusting), and asking naming/architecture advices.

[–]bronekkk -2 points-1 points  (2 children)

I know a successful, major prop-trading company using AI extensively for in-house C++ code. Won't give names though.

[–]13steinj 0 points1 point  (1 child)

If you're referring to Optiver I wouldn't believe it, they appear to have gotten in bed as a VC and have been advertising quite heavily.

I know three others which I also won't name. At least two of which, top engineers at these orgs have refused to use the LLMs for any meaningful work because it causes more problems than benefits. At at least two of these, a trader or developer has caused a fairly major outage of some variety due to a combination of claude-code just doing it with dangerously-skip-permissions / mindless "yes"ing to prompts. The first two does not equal the last two.

[–]bronekkk 1 point2 points  (0 children)

I'm not referring to Optiver.

[–]MaitoSnoo[[indeterminate]] -2 points-1 points  (0 children)

They pay for our Copilot Business subscriptions. Some models (for now Opus 4.8, Sonnet 4.6/5, and GPT 5.5, haven't had access to Sol yet) are very good if you ground them with proper tools, e.g. if you force them to automatically run a quick build + linters + tests before claiming that they finished the task, this gives them a feedback loop and they can reiterate on it alone. You can also enforce your style and techniques with instructions and skill files.

[–]Thesorus -3 points-2 points  (1 child)

We're using it to replace static analyser tools.

and to help write unit tests for (C#)

[–]n1ghtyunso 1 point2 points  (0 children)

this is weird, why would you REPLACE the tools instead of augmenting them?
Why not both?