15 ms·
Why agents are bad pair programmers
- bluefirebrand 1y agoPair programming is also not suitable for all cases Maybe not for many cases I mentioned this elsewhere but I find it absolutely impossible to get into a good programming flow anymore while the LLM constantly interrupts me with suggested autocompletes that I have to stop, read, review, and accept/reject It's been miserable trying to incorporate this into my workflow
- amazingamazing 1y agoCode regularly, and use ai to get unblocked if you do so or review code for mistakes. Or have the ai write the entire first draft for some piece and then you give it a once over, correcting it either manually or with prompts.
- deleted 1y ago[deleted]
- bluefirebrand 1y agoThis is just the same workflow that I've already had with Documentation, Google, and Stack Overflow for years The AI doesn't seem to be adding any extra value? It's not like it is more accurate that SO, or that it produces answers any faster, honestly It just is much less trustworthy imo
- BowBun 1y agoSecond this. My solution is to have a 'non-AI' IDE and then a Cursor/VS Code to switch between. Deep work cannot be achieved by chatting with the coding bots, sorry.
- morkalork 1y agoThirded. It was just completely distracting and I had to turn it off. I use AI but not after every keystroke, jeez.
- latentsea 1y agoBut but but... "we are an AI-first company". Yeah, nah. Fourthed!
- mdp2021 1y ago> AI-first company Does anybody introduce itself like that? It's like when your date sends subtle signals, like kicking sleeping tramps in the street and snorting the flour over bread at the restaurant. (The shocking thing is that the expression would even make sense when taken properly - "we have organized our workflows through AI-intelligent systems" -, while at this time it easily means the opposite.)
- neilv 1y ago> > AI-first company > Does anybody introduce itself like that? Yes, I've started getting job posts sent to me that say that. Declaring one's company "AI-first" right now is a great time-saver: I know instantly that I can disregard that company.
- gen220 1y agoYou should try aider! This is my workflow, essentially
- soulofmischief 1y ago> Deep work cannot be achieved by chatting with the coding bots, sorry. ...by you. Meanwhile, plenty of us have found a way to enhance our productivity during deep work. No need for the patronization.
- bluefirebrand 1y agoI don't believe you experience deep work the same way I do then In my mind you cannot do deep work while being interrupted constantly, and LLM agents are constant interruptions
- soulofmischief 1y agoYou can do better than a No true Scotsman fallacy. The fact is that not everyone works the same way you do, or interacts the same way with agents. They are not constant interruptions if you use them correctly. Essentially, this is a skill issue and you're at the first peak of the Dunning–Kruger curve, sooner ready to dismiss those with more experience in this area as being less experienced, instead of keeping an open mind and attempting to learn from those who contradict your beliefs. You could have asked for tips since I said I've found a way to work deeply with them, but instead chose to assume that you knew better. This kind of attitude will stunt your ability to adopt these programs in the same way that many people were dismissive about personal computers or the internet and got left behind.
- girvo 1y agoIt’s quite amusing to see you complain about patronisation, and then see you turn about and do it yourself one comment later.
- soulofmischief 1y agoI'm open to hearing how being honest with them about their negative approach is patronizing them.
- NicoSchwandner 1y agoI do this as well and it works quite well for me like that! Additionally, when working on microservices and on issues that don’t seem too straightforward, I use o3 and copy the whole code of the repo into the prompt and refine a plan there and then paste it as a prompt into cursor. Handy if you don’t have MAX mode, but a company-sponsored ChatGPT.
- vasusen 1y agoI do this too by pasting only the relevant context files into O3 or Claude 4. We have an internal tool that just lets us select folders/files and spit out one giant markdown.
- thunspa 1y agoI just cmd + shift + p -> disable Cursor tab -> enter Sure, you could just add a shortcut too. After a while, it turns into a habit.
- BowBun 1y agoHonestly this might do the trick...
- SV_BubbleTime 1y agoThis is kind of intentionally the flow with Claude code as I’ve experienced it. I’m in VSCode doing my thing, and it’s in a terminal window that occasionally needs or wants my attention. I can go off and be AI-Free for as long as I like.
- flessner 1y agoI recently got a new laptop and had to setup my IDE again. After a couple hours of coding something felt "weird" - turns out I forgot to login to GitHub Copilot and I was working without it the entire time. I felt a lot more proactive and confident as I wasn't waiting on the autocomplete. Also, Cursor was exceptional at interrupting any kind of "flow" - who even wants their next cursor position predicted? I'll probably keep Copilot disabled for now and stick to the agent-style tools like aider for boilerplate or redundant tasks.
- johnfn 1y ago> who even wants their next cursor position predicted I'm fascinated by how different workflows are. This single feature has saved me a staggering amount of time.
- ipaddr 1y agoIt's strange the pure llm workflow and boring. I still write most of my own code and will llms when I'm too lazy to write the next piece. If I give it to an llm most of my time is spent debugging and reprompting. I hate fixing someone elses bug. Plus I like the feeling of the coding flow..wind at my back. Each keystroke putting us one step closer. The apps I made with llms I never want to go back to but the apps I made by hand piece by piece getting a chemical reaction when problems were solved are the ones I think positively about and want to go back to. I always did math on paper or my head and never used a calculator. Its a skill I never have forgotten and I worry how many programmers won't be able to code without llms in the future.
- baq 1y ago> Also, Cursor was exceptional at interrupting any kind of "flow" - who even wants their next cursor position predicted? Me, I use this all the time. It’s actually predictable and saves lots of time when doing similar edits in a large file. It’s about as powerful as multi-line regex search and replace, except you don’t have to write the regex.
- barrenko 1y agoSame, I like agents or nothing in between.
- jumploops 1y agoI’m a Vim user and couldn’t agree more. Didn’t like any of the AI-IDEs, but loved using LLMs for spinning up one off solutions (copy/paste). Not to be a fan boy, but Claude Code is my new LLM workflow. It’s tough trying to get it to do everything, but works really well with a targeted task on an existing code base. Perfect harmony of a traditional code editor (Vim) with an LLM-enhanced workflow in my experience.
- brianpan 1y agoAI "auto-complete" or "code suggestions" is the worst, especially if you are in a strongly-type language because it's 80% correct and competing with an IDE that can be 100% correct. AI agents are much better for me because 1) they don't constantly interrupt your train of thought and 2) they can run compile, run tests, etc. to discover they are incorrect and fix it before handing the code back to you.
- dinosaurdynasty 1y agoI love the autocomplete, honestly use it more than any other AI feature. But I'm forced to write in Go which has a lot of boilerplate (and no, some kind of code library or whatever would not help... it's just easier to type at that point). It's great because it helps with stuff that's too much of a hassle to talk to the AI for (just quicker to type). I also read very fast so one line suggestions are just instant anyway (like non AI autocomplete), and longer ones I can see if it's close enough to what I was going to type anyway. And eventually it gets to the point where you just kinda know what it's going to do. Not an amazing boost, but it does let me be lazy writing log messages and for loops and such. I think you do need to read it much faster than you can write it to be helpful though.
- CraigJPerry 1y agoZed has a "subtle" mode, hopefully that feature can become table stakes in all AI editor integrations
- rsynnott 1y agoI’ve always seen it as primarily an _education_ tool; the purpose of pair programming isn’t that two people pair programming are more productive than two people working individually, they’re generally not. So pair programming with a magic robot seems rather futile; it’s not going to learn anything.
- searls 1y agoLLMs in their current incarnation will not, but there's nothing inherently preventing them from learning. Contexts are getting large enough that having a sidecar database living with each project or individual as a sort of corpus of "shit I learned pairing with Justin" is already completely achievable, if only a product company wanted to do that.
- GrantMoyer 1y agoClaude Plays Pokemon is kind of an interesting case study for this. This sort of knowledgebase is implemented, but even state of the art models struggle to use it effectively. They seem to fixate on small snippets from the knowledge base without any ability to consider greater context.
- hk1337 1y ago> Pair programming is also not suitable for all cases I think this is true but pair programming can work for most circumstances. The times where it doesn't work is usually because one or both parties are not all-in with the process. Either someone is skeptical about pair programming and thinks it never works or they're trying to enforce a strict interpretation of pair programming.
- bluefirebrand 1y agoIt doesn't work when someone already has a solution in mind and all they need to do is type it into the editor I've been doing this a while. This is most of my work
- ramesh31 1y ago>LLM agents make bad pairs because they code faster than humans think This is why I strongly dislike all of the terminal based tools and PR based stuff. If you're left to read through a completed chunk of code it is just overwhelming and your cycle time is too slow. The key to productivity is using an IDE based tool that shows you every line of code as it is being written, so you're reading it and understanding where it's going in real time. Augmentation, not automation, is the path forward. Think of it like the difference between walking and having a manual transmission car to drive, not the difference between having a car and having a self driving car.
- bluefirebrand 1y agoIf I have a 20 line function in my mind and the LLM injects 20 lines for me to accept or reject, I have two problems First I have to review the 20 lines the LLM has produced Second, if I reject those lines, it has probably shoved the function I had in mind out of my head It's enormously disruptive to my progress
- ramesh31 1y agoThe hard truth here is in accepting that the 20 lines in your head were probably wrong, or suboptimal, and letting go of that urge. Think in interfaces, not implementations. Successive rendering, not one-shot.
- shortstuffsushi 1y agoThis is just fundamentally not the case most of the time. LLMs guess where you're going, but so often what they produce is a "similar looking" non sequitur relative to the lines above it. It guesses, and sometimes that guess is good, but as often, or more, it's not. The suggestion "think in interfaces" is fine; if you spell out enough context in comments, the LLM may be able to guess more accurately, but in spelling out that much context for it, you've likely already done the mental exercise of the implementation. Also baffled by "wrong or suboptimal," I don't think I've ever seen an LLM come up with a better solution.
- 1y ago
- ChrisMarshallNY 1y agoI use an LLM as a reference (on-demand), and don't use agents (yet). I was never into pair programming, anyway, so it isn't a familiar workflow for me. I will admit that it encourages "laziness," on my part, but I'm OK with that (remember when they said that calculators would do that? They were right). For example, I am working on a SwiftUI project (an Apple Watch app), and forgot how to do a fairly basic thing. I could have looked it up, in a few minutes, but it was easier to just spin up ChatGPT, and ask it how to do it. I had the answer in a few seconds. Looking up SwiftUI stuff is a misery. The documentation is ... a work in progress ...
- petesergeant 1y ago> I use an LLM as a reference (on-demand), and don't use agents (yet) This was me until about three weeks ago. Then, during a week of holiday, I decided I didn't want to get left behind and tried a few side-projects using agents -- specifically I've been using Roo. Now I use agents when appropriate, which I'd guess is about 50% of the work I'm doing.
- cpursley 1y agoRoo looks interesting. How does it compare with Cursor and Windsurf?
- shio_desu 1y agoIt burns tokens if you BYOK but you can hook into GH Copilot LLMs directly I really like the orchestrator and architect personas as is out of the box. I prefer it over Cursor / Windsurf for a few reasons - no indexing (double edged sword) - orchestrator I find much more useful than windsurf cascades - tool usage is fantastic The no indexing is a double edged sword, it does need to read files constantly, contributing to token burn. However, you don't have to worry about indexed data being on a 3rd party server (cursor), and also since it has to crawl to understand the codebase for it to implement, to me it seems like it is more capable of trickier code implementations, as long as you utilize context properly. For more complex tasks, I usually either spend 20-30 minutes writing a prompt to give it what I'm looking to implement, or write up a document detailing the approach I'd like to take and iterate with the architect agent. Afterwards, hand it off to the orchestrator and it manages and creates subtasks, which is to provide targeted implementation steps / tasks with a fresh context window. If you have a GH Copilot license already, give it a shot. I personally think it's a good balance between control as an architect and not having to tie my time down for implementations, since really a lot of the work in coding is figuring out the implementation plan anyways, and the coding can be busy work, to me personally anyways. I prefer it over the others as I feel Windsurf/Cursor encourages YOLO too much.
- ldjkfkdsjnv 1y ago[flagged]
- khendron 1y agoWhen I first tried an LLM agent, I was hoping for an interactive, 2-way, pair collaboration. Instead, what I got was a pairing partner who wanted to do everything themselves. I couldn't even tweak the code they had written, because it would mess up their context. I want a pairing partner where I can write a little, they write a little, I write a little, they write a little. You know, an actual collaboration.
- psadri 1y agoI usually add “discuss first. Don’t modify code yet”. Then we do some back and forth. And finally, “apply”.
- dragonfax 1y agoClaude Code has "plan mode" for this now. It enforces this behavior. But its still poorly documented.
- psadri 1y agoThey should add a “cmd-enter” for ask, and “enter” to go. Separately, if I were at cursor (or any other company for that matter), I’d have the AI scouring HN comments for “I wish x did y” suggestions.
- falcor84 1y agoI've been thinking about this a lot recently - having AI automate product manager user research. My thread of thought goes something like this: 0. AI can scour the web for user comments/complaints about our product and automatically synthesize those into insights. 1. AI research can be integrated directly into our product, allowing the user to complain to it just-in-time, whereby the AI would ask for clarification, analyze the user needs, and autonomously create/update an idea ticket on behalf of the user. 2. An AI integrated into the product could actually change the product UI/UX on its own in some cases, perform ad-hoc user research, asking the user "would it be better if things were like this?" and also measuring objective usability metrics (e.g. task completion time), and then use that validated insight to automatically spawn a PR for an A/B experiment. 3. Wait a minute - if the AI can change the interface on its own - do we even need to have a single interface for everyone? Perhaps future software would only expose an API and a collection of customizable UI widgets (perhaps coupled with official example interfaces), which each user's "user agent AI" would then continuously adapt to that user's needs?
- palisade 1y agoLLM agents don't know how to shut up and always think they're right about everything. They also lack the ability to be brief. Sometimes things can be solved with a single character or line, but no they write a full page. And, they write paragraphs of comments for even the most minuscule of changes. They talk at you, are overbearing and arrogant.
- energy123 1y agoI expect a lot of the things people don't like ("output too long, too many comments in code") are side effects of making the LLM good in other areas. Long output correlates with less laziness when writing code, and higher performance on benchmarks due to the monotone relationship between number of output tokens and scores. Comment spam correlates with better performance because it's locally-specific reasoning it can attend on when writing the next line of code, leading to reduced errors.
- tobyhinloopen 1y agoJust add to the prompt not to include comments and to talk less. I have a prompt document that includes a complete summary of the Clean Code book, which includes the rules about comments. You do have to remind it occasionally.
- energy123 1y agoYou can, but I would expect code correctness to be reduced, you're removing one mechanism the model uses to dump local reasoning immediately prior to where it's needed.
- tobyhinloopen 1y agoWith that logic, I should ask the AI to _increase_ the amount of comments. I highly doubt the comments it generates are useful, they're usually very superficial.
- 1y ago
- __MatrixMan__ 1y agoI've been considering a... protocol? for improving this. Consider this repo: foo.py bar.py bar.py.vibes.md This would indicate that foo.py is human-written (or at least thoroughly reviewed by a human), while bar.py is LLM written with a lower bar of human scrutiny. bar.py.vibes.md would contain whatever human-written guidance describes how bar should look. It could be an empty file, or a few paragraphs, or it it could contain function signatures and partially defined data types. If an LLM wants to add a new file, it gets a vibes.md with whatever prompt motivated the addition. Maybe some files keep their assiciated *.vibes.md forever, ready to be totally rewritten as the LLM sees fit. Maybe others stick around only until the next release, after which the associated code is reviewed and the vibes files are removed (or somehow deactivated, I could imagine it being useful for them to still be present). What do people think, do we need handcuffs of this kind for our pair programming friends the LLMs?
- almosthere 1y agoI think coding will eventually go away in favor of models with metadata built around them. How many times did you have a mutation operation where you had to hand code the insert of 3 or 4 entities and make sure they all come back successful, or you back out properly (and perhaps this is without a transaction, perhaps over multiple databases). Make sure the required fields are present Grab the created inserted ID Rinse, repeat Or if you're mutating a list, writing code that inserts a new element, but you don't know which one is new. And you end up, again, hand coding loops and checking what you remember to check. What about when you need to do an auth check. And the hand coder may fail to remember one little thing somewhere. With LLM code, you can just describe that function and it will remember to do all the things. An LLM with a model + metadata - we won't really need to think of it as editing User.java or User.py anymore. Instead User.yaml - and the LLM will just consume that, and build out ALL of your required biz-logic, and be done with it. It could create a fully authenticating/authorizing REST API + GraphQL API with sane defaults - and consistent notions throughout. And moving into UIs- we can have the same thing. The UI can be described in an organized way. What fields are required for user registration. What fields are optional according to the backend. It's hard to visualize this future, but I think it's a no-code future. It's models of requirements instead.
- ninetyninenine 1y ago>LLM agents make bad pairs because they code faster than humans think. Easily solved. Use less compute. Use slower hardware. Or put in the prompt to pause at certain intervals.
- UltraSane 1y agoIt is rather soul crushing how fast LLMs spit out decent code.
- Bob_LaBLahh 1y agoIn my experience, LLMs are idiot savant coders--but currently more idiot than savant. Claude 3.7 (via cursor and roo) can comment code well, create a starter project 10x faster than I could, and they spit out common crud apps pretty well. However I've come to the conclusion that LLMs are terrible at decision making. I would much rather have an intern architect my code than let AI do it. It's just too unreliable. It seems like 3 out of 4 decisions that it makes are fine. But that 4th decision is usually asinine. That said, I now consider LLMs a mandatory addition to my toolkit because they have improved my developer efficiency so much. I really am a fan. But without a seasoned dev to write detailed instructions, break down the project into manageable chunks, make all of the key design decisions, and review every line of code that it writes, today's AI will only add a mountain of technical debt to your project. I guess I'm trying to say: don't worry because the robots cannot replace use yet. We're still in the middle of the hype cycle. But what do I know? I'm just an average meat coder.
- UltraSane 1y agoLLMs currently can generate a few thousand lines of coherent code but they cannot write a cohesive large scale code base. But LLMs are very good at writing SQL and Cypher queries that I would spend hours or days figuring out how to write.
- Bob_LaBLahh 1y agoAgreed. I find it interesting that LLMs seem pretty good at spitting out SQL that works well enough. But on the other hand LLMs seem pretty awful at working with CSS. I wonder if this is due to a difference in the amount of training data available for SQL vs CSS, or is this because CSS is a finicky pain in the ass when compared to SQL.
- 1y ago
- excitor 1y ago[dead]
- Onewildgamer 1y agoFinally someone said it, they're overconfident in their approach, don't consult us with the details of the implementation, they're trained to create mock APIs that don't follow structure, leading to lot of rework. The LLM actions should be measured, collaborative, ask for details when it's not present. It is impossible to give every single detail in the initial prompt, and a follow up prompt derails the train thought and design of the application. I don't know if I'm using it right, I'd love to know more if that's the case. In a way the LLM should improve on being iterative, take feedback, maybe it's a hard problem to add/update the context. I don't know about that either, but love to learn more.
- shio_desu 1y ago[dead]
- NitpickLawyer 1y agoMost stacks now support some form of "plan" workflows. You'd want to first do this, and see if it improves your experience. One workflow that works well for me, even with small local models, is to start a plan session with something like: "based on @file, and @docs and @examples, I'd like to _ in @path with the following requirements @module_requirements.md. Let's talk through this and make sure we have all the info before starting to code it." Then go back and forth, make sure everything is mentioned, and when satisfied either put it into a .md file (so you can retry the coding flow later) or just say "ok do it", and go grab a cup of coffee or something. You can also make this into a workflow with .rules files or .md files, have a snippets thing from your IDE drop this whenever you start a new task, and so on. The idea with all the advancements in LLMs is that they need lots of context if you want them to be anything other than what they were trained on. And you need to try different flows and see what works on your specific codebase. Something that works for projectA might not work for projectB ootb.
- csomar 1y agoAlso giving them more details seems to confuse them. There is probably a way around this, though. They are pretty good in finding a tiny silver of information out of the ocean. What I hate is that the industry is all geared toward the same model (chat bot). Imagine if we never invented the keyboard, mouse, GUI, touch screen, etc...
- tobyhinloopen 1y agoThis guy needs a custom prompt. I keep a prompt doc around that is constantly updated based on my preferences and corrections. Not a few sentences but many many lines of examples and documentation
- searls 1y agoGist an example of what you mean? My experience with very large prompts and exacting custom instructions has been drastically eroded "intelligence"
- tobyhinloopen 1y agoMany of my prompts include _somewhat_ sensitive details because they're tailor-made for each project. This is a more generic prompt I've been using for my code generation tool: https://gist.github.com/tobyhinloopen/e567d551c9f30390b23a0a88a71ae0b3 https://gist.github.com/tobyhinloopen/e567d551c9f30390b23a0a... More about this prompt: https://bonaroo.nl/2025/05/20/enforced-ai-test-driven-development.html https://bonaroo.nl/2025/05/20/enforced-ai-test-driven-develo... Lately, I've been letting the agent write the prompt by ordering it to "update the prompt document with my expressed preferences and code conventions", manually reviewing the doc. Literally while writing this comment, I'm waiting for the agent to do: > note any findings about this project and my expressed preferences and write them to a new prompt document in doc, named 20250610-<summary>.md I keep a folder of prompt documents because there's so many of them (over 30 as of writing this comment, for a single project). I have more generic ones and more specific ones, and I usually either tell the agent to find relevant prompt documents or tell the agent to read the relevant ones. Usually over 100K tokens is spent on reading the prompts & documentation before performing any task. Here's a snippet of the prompt doc it just generated: https://gist.github.com/tobyhinloopen/c059067037a6edb19065cd40a2b9806f https://gist.github.com/tobyhinloopen/c059067037a6edb19065cd... I'm experimenting a lot with prompts, I have yet to learn what works and what doesn't, but one thing is sure: A good prompt makes a huge difference. It's the difference between constantly babysitting and instructing the agent and telling it to do something and waiting for it to complete. I had many MRs merged with little to no post-prompt guidance. Just fire and forget, commit, read the results, manually test it, and submit as MR. While the code is usually somewhere between "acceptable" and "obviously AI written", it usually works just fine.
- atemerev 1y agoAider does everything right. Stop using Cursor or any other agentic environments. Try Aider, it works exactly as suggested here.
- worldsayshi 1y agoI've been wanting to use Aider but I want to use Copilot as a provider (to stay compliant with the wishes of my employer). Haven't gone down that road yet because Aider copilot support seems a bit tentative. I see they have some docs about it up now though: https://aider.chat/docs/llms/github.html https://aider.chat/docs/llms/github.html "The easiest path is to sign in to Copilot from any JetBrains IDE" Somebody must've made a standalone login script by now right? I wonder if `gh auth login` can be used to get a token?
- darkstarsys 1y agoI prefer Claude Code (the `claude` cmd line version, with Sonnet 4) because it's more like an actual pair-programming session. It uses my claude acct rather than costing extra per token. It also hooks into all my MCP tools (shell (restricted), filesystem, ripgrep, test runners, etc. etc.) which makes it pretty amazing. After turning off its annoying auto-commit-for-everything behavior, aider does work OK but it's harder to really get it to understand what I want during planning. Its new `--watch-files` thing is pretty darn cool though.
- travisgriggs 1y ago> Allow users to pause the agent to ask a clarifying question or push back on its direction without derailing the entire activity or train of thought I think I’ve seen Zed/Claude do kind of this. A couple times, I’ve hit return, and then see that I missed a clarifying statement based on the direction it starts going and I put it in fast, and it corrects.
- 1Sebastian 1y ago[dead]
- Pandabob 1y agoI basically jump away from Cursor to ChatGPT when I need to think thoroughly on something like an architecture decision or an edge case etc. Then when I've used ChatGPT to come up with an implementation plan, I jump back to Cursor and have Claude do the actual coding. O3 and ChatGPT's search functionality are just better (at least for myself) currently for "type 2" thinking tasks.
- rhizome31 1y agoAs a developer who doesn't use AI for coding, except for the occasional non-project specific question to a chat bot, I am wondering if you use it for client projects or only for your own projects. If you do use it for client projects, do you have some kind of agreement that you're going to share their code with a third-party? I'm asking because most clients will make you sign a contract saying that you shouldn't disclose any information about the project to a third-party. I even once had a client who explicitly stated that AI should not be used. Do you find clients willing to make an exception for AI coding agents?
- internet_points 1y agoI don't share anything with openai/anthropic that I wouldn't feel comfortable pasting into a web search prompt.
- rhizome31 1y agoSo no AI autocomplete I suppose? I assume AI autocomplete may send any part of your code base or even all of it to a third-party.
- internet_points 1y agoPrecisely. For work projects, I only send contexts I've specified myself (so I might copy-paste a chunk, clean it, then send), I don't let AI tools pick and choose what they need. If I were using it for some hobby project or open source thing I would probably be more open to experimenting with sending random parts of the codebase.
- cess11 1y agoNo, I don't. This goes for internal projects as well, we're not going to share code unless payed to do so. We commonly work with personal information so it would also introduce rather harsh legal risks if usian corporations could reach it.
- Macha 1y agoI basically only use it in the workplace, and largely because of one of those AI mandates. I don't think it actually saves me enough time (or for many tasks, any time) so I wouldn't pay for it for my own projects, and also for my own projects, the enjoyability is a big factor, and I enjoy doing more than prompting.
- syllogism 1y agoLLM agents are very hard to talk about because they're not any one thing. Your action-space in what you say and what approach you take varies enormously and we have very little body of common knowledge about what other people are doing and how they're doing it. Then the agent changes underneath you or you tweak your prompt and it's different again. In my last few sessions I saw the efficacy of Claude Code plummet on the problem I was working on. I have no idea whether it was just the particular task, a modelling change, or changes I made to the prompt. But suddenly it was glazing every message ("you're absolutely right"), confidently telling me up is down (saying things like "tests now pass" when they completely didn't), it even cheerfully suggested "rm db.sqlite", which would have set me back a fair bit if I said yes. The fact that the LLM agent can churn out a lot of stuff quickly greatly increases 'skill expression' though. The sharper your insight about the task, the more you can direct it to do something specific. For instance, most debugging is basically a binary search across the set of processes being conducted. However, the tricky thing is that the optimal search procedure is going to be weighted by the probability of the problem occurring at the different steps, and the expense of conducting different probes. A common trap when debugging is to take an overly greedy approach. Due to the availability heuristic, our hypotheses about the problem are often too specific. And the more specific the hypothesis, the easier it is to think of a probe that would eliminate it. If you keep doing this you're basically playing Guess Who by asking "Is it Paul? Is it Anne?" etc, instead of "Is the person a man? Does the person have facial hair? etc" I find LLM agents extremely helpful at forming efficient probes of parts of the stack I'm less fluent in. If I need to know whether the service is able to contact the database, asking the LLM agent to write out the necessary cloud commands is much faster than getting that from the docs. It's also much faster at writing specific tests than I would be. This means I can much more neutrally think about how to bisect the space, which makes debugging time more uniform, which in itself is a significant net win. I also find LLM agents to be good at the 'eat your vegetables' stuff -- the things I know I should do but would economise on to save time. Populate the tests with more cases, write more tests in general, write more docs as I go, add more output to the scripts, etc.
- throwawayffffas 1y agoIn my experience the problem is not they are too fast, they are too slow. Honestly, their speed is just the right amount to make them bad. If they were faster, I could focus on following the code they are writing. But they take so much time for every edit that I tune out. On the other hand if they were slower, I could do other work while they are working, but they are done every 50 seconds to a few minutes which means I can't focus on other tasks. If they did smaller faster changes it would probably be better. Ideally though I would prefer them to be more autonomous, and the collaboration mode to be more like going over merge requests than pair programming. I ideally would like to have them take a task and go away for a few hours or even like 30 minutes. The current loop, provide a task, wait 1 to 3 minutes, see a bunch of changes, provide guidance, repeat is the worst case scenario in my view.
- shultays 1y agoA week or so ago I needed to convince chatgpt that following code will indeed initialize x values in struct struct MyStruct { int x = 5; }; ... MyStruct myStructs[100]; It was insisting very passionately that you need MyStruct myStructs[100] = {}; instead. I even showed msvc assembly output and pointed to the place where it is looping & assigning all x values and then it started hallucinating about msvc not conforming the standards. Then I did it for gcc and it said the same. It was surreal how strongly it believed it was correct.
- pegasus 1y agoLLM's don't have beliefs, so "convincing" them of this or that is a a waste of your time. The way to handle such cases is to start anew with a clean context and just add your insight to the prompt so that it lands on the right track from the beginning. Remember these models are ultimately just next-token predictors and anthropomorphizing them will invariably lead to suboptimal interactions.
- johnisgood 1y agoThat is not even valid C code, so you would have to seriously convince me, too. What makes it invalid is "= 5", and lack of "struct" before "MyStruct" (could have used typedef).
- shultays 1y agoIt is a c++ code.
- johnisgood 1y agoI think the point flew by a few.
- searls 1y agoWhenever I land on the front page, I check the comments and brace for HN coming and telling me how stupid I am and lighting me aflame in front of my peers. But sometimes if I manage to nail the right headline, nobody reads my post and just has their own discussion, and I am spared.
- Upvoter33 1y agoI liked your post, a bit of a “how to enjoy pair programming with an AI”. Useful, so thank you!
- thoughtpalette 1y agoHilarious but realistic take. I've noticed a similar trend with other posts. I'm a fan of the discourse either way tbh.
- Traster 1y agoI think this has put into words a reason why I bounced off using AI this way, when I need something done I often have a rough idea of how I want it done, and how AI does it often doesn't match what I want, but because it's gone off and written a 2,000 lines of code it's suddenly more work for me to go through and say "Ok, so first off, strip all these comments out, you're doubling the file with trivial explanations of simple code. I don't want X to be abstracted this way, I want that...." etc. And then when I give it feedback 2,000 lines of code suddenly switch to 700 lines of completely different code and I can't keep up. And I don't want my codebase full of disjoint scripts that I don't really understand and all have weirdly different approaches to the problem. I want an AI that I have similar opinions to, which is obviously tough. It's like working with someone on their first day. I don't know if it's giving the tools less self-confidence per se, but I think it's exposing more the design process. Like ideally you want your designer to go "Ok, I'm thinking of this approach, i'll probably have these sorts of functions or classes, this state will be owned here" and we can approve that first, rather than going straight from prompt -> implementation.
- searls 1y agoYeah, and then you just wind up feeling exhausted AND unsatisfied with where you wind up. You are exactly who I posted this for. 100% of my positive experiences with agent coding are when I don't have reason to care about the intrinsic qualities of the code (one-off scripts or genuine leaf node functions that can't impact anything else.
- artursapek 1y agoYou need to tune it.
- theshrike79 1y agoThe trick is to have rules specific to the project and your programming style & preferences. Think of the AI like an outsourced consultant who will never say no. It'll always do everything it can to solve the problem you've given it. If it doesn't know how, it'll write a thousand lines when a single additional dependency and 2 lines of code would've done it.
- 1y ago
- motbus3 1y agoI have mixed feelings about this situation. I have committed myself to learning how to use it as effectively as possible and to utilising it extensively for at least one month. Through my company, I have access to multiple products, so I am trying them all. I can say that I am more productive in terms of the number of lines written. However, I cannot claim to be more productive overall. For every task it completes, it often performs some inexplicable actions that undo or disrupt other elements, sometimes unrelated ones. The tests it generates initially appear impressive, but upon examining other metrics, such as coverage, it becomes evident that its performance is lacking. The amount of time required to guide it to the correct outcome makes it feel as though I am taking many steps backwards before making any significant progress forward—and not in a beneficial way. On one occasion, it added 50,000 unnecessary import lines into a module that it should not have been altering. On another occasion, one of the agents completely dismantled the object-oriented programming hierarchy, opting instead to use if/else statements throughout, despite the rules I had set. The issue is that you can never be certain of its performance. Sometimes, for the same task, it operates flawlessly, while at other times, it either breaks everything or behaves unpredictably. I have tried various techniques to specify what needs to be done and how to accomplish it, yet often, for similar tasks, its behaviour varies so significantly between runs that I find myself needing to review every change it makes each time. Frustratingly, even if the code is nearly correct and you request an update to just one part, it may still behave erratically. My experience thus far suggests that it is quite effective for small support tools, but when dealing with a medium-sized codebase, one cannot expect it to function reliably every time.
- azhenley 1y agoWriting out hundreds of lines of code is not what I meant by proactive tools… Where are the proactive coding tools? https://austinhenley.com/blog/proactiveai.html https://austinhenley.com/blog/proactiveai.html
- bsenftner 1y agoThe collaborative style of AI use struck me as the obvious correct use of AI, just as the more popular "AI writing code" style struck me as horribly incorrect and indication of yet again the software industry going off on a fool's tangent, as the larger industry so often does. I never have AI write code. I ask it to criticize code I've written, and I use it to strategize about large code organization. As a strategy consult, with careful LLM context construction, one can create amazing effective guides that teach one new information very successfully. That is me using my mind to understand and then do, never giving any AI responsibilities beyond advice. AI is an idiot savant, and must be treated as such.
- pradeepodela 1y agoThe major problem I see with current LLM-based code generation is their overconfidence beyond a certain point. I've experienced agents losing track of what they are developing; a single line change can literally mess up my entire codebase, making debugging a nightmare. I believe we need more structured, policy-driven models that exhibit a bit of self-doubt, prompting them to revert to us for clarification. Furthermore, there should be certain industry standards in place. Another significant issue is testing and handling edge cases. No matter what, today's AI consistently fails when dealing with these scenarios, and security remains a concern. what are some problems you have noticed ??
- SkyBelow 1y ago>Continue to practice pair-programming with your editor, but throttle down from the semi-autonomous "Agent" mode to the turn-based "Edit" or "Ask" modes. This can be done while staying in agent mode. I never used edit mode and only use ask mode when my question has nothing to do with the project I have open. Any other time, I tell it to either make no changes at all as I'm only asking a question to research something, or to limit changes to a much smaller scope and style. It doesn't work perfectly, but it works well enough that it is worth the tradeoff given the extra capabilities agent mode seems to provide (this likely depends upon the specific AI/LLM system you are using, so given another tool I might not arrive at the same conclusion).
- jamil7 1y agoI think one huge issue with pairing for non programmers or junior programmers is that the LLM never pushes back on whatever you throw at it. Like it can't deconstruct and examine what that acutal problem and suggest a more robust or simplar alternative.
- sltr 1y ago> to ask a clarifying question I think one shortfall of LLMs is their reluctance to ask clarifying questions. From my own post [1]: > LLMs are poor communicators, so you have to make up the difference. Unlike a talented direct report, LLMs don't yet seem generally able to ask the question-behind-the-question or to infer a larger context behind a prompt, or even ask for clarification. [1] https://www.slater.dev/dev-skills-for-the-llm-era/ https://www.slater.dev/dev-skills-for-the-llm-era/
- cmrdporcupine 1y agoArticle has some good points. They move fast, and they can easily run off the rails if you don't watch carefully. And I've found that it's just as mentally exhausting programming alongside one as it is doing it yourself. The chief advantage I've found of working alongside Claude is its automation of tedious (to me) tasks.
- woah 1y ago> give up on editor-based agentic pairing in favor of asynchronous workflows like GitHub's new Coding Agent, whose work you can also review via pull request Why not just review the agent's work before making a git commit?
- natch 1y agotldr: author is a bad prompter. Good prompting takes real and ongoing work, thought, foresight, attention, and fastidious communication.
- skeptrune 1y agoTitle of the blog is negative, but the contents seem fairly positive? If a few UX improvements are the only blocker to the author finding LLMs to be useful pair programmers then we are in a good spot.
- epolanski 1y agoI'm conflicted, you can slow down and take all the time you need to understand and ask to clarify further.
- pjmlp 1y agoEven humans are bad pair programmers, I always try to steer away from projects or companies that have drinken the whole XP kool aid.
- BeetleB 1y agoIndeed, this submission is also a good article on why pair programming often fails with humans. It's not that AIs are bad. It's that pair programming is (often) not effective. In the majority of cases, one side dominates the other. In my experience, a modified pair programming system works better where the two of us discuss the problem to be solved, then each of us goes off for a few hours independently coming up with ideas, and doing experiments. We then get together, discuss our findings, and finalize a plan of attack. And then pair programming helps as we're both at the same level and on the same page. But even then, having to watch someone else's screen (or have people interrupt you while you're typing) is a pain.
- jyounker 1y agoI think the author's dislike for pair programming says a great deal more about the author than it does about pair programming or LLMs. If you're pair programming and you're not driving, then it's your job to ask the driver to slow down so you can understand what they're doing. You may have to ask them to explain it to you. You may have to explain it back to them. This back-and-forth is what makes pairing work. If you don't do this, then of course you'll get lost. The author seems to take the same passive position with an LLM, and the results are similar.