Remix.run Logo
▲ bitwizeshift 3 hours ago

I’m surprised I haven’t see anyone say this yet, but I don’t let the LLM design the code at all, I let it implement a design I have created.

By that I mean that, rather than let the LLM do the entire structure, I take the time to create the full hierarchy of abstractions and actors that I want my code to do. I decide, at the UML level, how abstractions will sit and interact — and then I make the LLM implement those gaps.

The key thing here is that, by doing this, I DO know how the code works. I may not know how each unit is implemented, but I know each unit’s responsibilities and how they interact with one another. I’ve found that LLMs are HORRIBLE at writing decent abstractions, regardless of how much prompting and skills I’ve given it. It will always get the job done, but it will often be unmaintainable and require bigger and heavier refactors as I introduce more and more requirement changes.

But by flexing my basic design skills, I don’t have those issues. Future refactoring fit into easy abstractions that I’ve designed. And by documenting it up front, I also have what becomes a living document on how this work will turn out.

It takes a few hours up front to plan ahead, but it makes the LLMs job easier and use less tokens, and it makes the code better long term. I don’t care if one unit is suboptimal, as long as the abstraction is right — because at worst I can change an implementation for a better one later.

▲fasterik 2 hours ago | parent | next [-]

I agree with this approach, but I'm a bit surprised this has to be said at all. These are basic software design principles and I imagine it's the default way any experienced programmer would approach the problem. I wonder if the people not using this approach are primarily junior developers who have never seen how real software is built, or if it's leaking into the senior levels as well.

▲swatcoder 2 hours ago | parent | next [-]

Most people in the industry right now, even at FAANG and even among people carrying "senior" titles at these places, have little experience with "software design principles" -- tens of thousands of brilliant Ivy League graduates with surreal compensation packages have spent the last decade pulling tickets off JIRA and pasting least-change-possible patches onto existing code for about 10 hours a week while spending the other 30+ hours barely engaged at meetings.

▲JohnMakin 2 hours ago | parent | next [-]

This hurt to read but checks out in my experience. These types also tend to love tossing debt over silo'd walls and pointing the finger a lot if/when anything goes wrong.

I'm old enough now to be a protected class, so I don't want people accusing me of ageism, because that's not where this is coming from - but there's a type of person that clearly is on their last job of their career and knows it and I try to avoid them like the plague, I've seen it too many times.

▲rdevilla 20 minutes ago | parent | prev [-]

[dead]

▲birdsongs 2 hours ago | parent | prev | next [-]

I work on my code this way, but I have no idea what my colleagues are doing, and it's impossible to review thousands of new/changed lines a week.

I just approve PRs, because I have to. I don't know what else to do. I can barely keep an eye on all my code.

Actively looking, but job market is rough in Northern Europe. I quit caring about quality in any capacity here, the company has clearly chosen its direction, against my very vocal complaints.

My last interview, with what I thought was a great company, failed when I didn't understand what NLP was when they asked me about it.

> NLP? > Natural Language Programming, it's the future. Claude, GPT, etc.

I laughed, he didn't, looked offended and said it was a serious question. I had thought it was a joke, said "oh you mean LLMs". I tried to answer seriously, of course, but that was my third round technical interview and I didn't get a call back.

Just getting a paycheck and producing mediocre work until I get something new. (Senior engineer, 10 YOE, patents, 3 years at a unicorn).

Also considering becoming an electrician.

▲hathawsh an hour ago | parent | next [-]

I will be unhappy if they steal the meaning of NLP. NLP means Natural Language Processing and LLMs are only a subset of NLP. I would have concerns about anyone who claims to have technical knowledge and asserts NLP means "natural language programming." Those are the same kind of people who might suggest Lisp should add mutable objects.

▲riffraff an hour ago | parent [-]

You may be surprised and annoyed that NLP is also "Neuro linguistic programming", I've met technical people talking of NLP and meaning that...

▲hathawsh an hour ago | parent [-]

Yes, but that's in psychology. Different fields have their own terms without causing too many issues. Communication breaks down when we reuse terms for different things within the same field.

▲arcanemachiner an hour ago | parent [-]

More like parapsychology...

▲annzabelle 23 minutes ago | parent | prev | next [-]

I'm in what I think will be my last tech job before retraining into something else. The aspects I like about the work are gone, I'm coasting at a small company that's not a great fit, has a visa cliff, and is poorly paid, and the steps it would take to become competitive in an LLM driven tech job market are less appealing to me than the steps it would take to switch over to a different career (likely in healthcare).

▲fasterik 2 hours ago | parent | prev | next [-]

Yeah, I imagine it's something that needs to be enforced at the organizational level. I sympathize with anyone who takes pride in their work and needs to deal with mindless coworkers pushing slop without any accountability. I left corporate software development (before LLMs were a thing) over frustration with the general culture and I can only imagine it's gotten worse since then.

▲birdsongs 2 hours ago | parent [-]

It's really bad now, yeah. :( It just really hurts that I spent well over a decade of my life learning and honing skills to engineer safe, quality software and now it's just, useless.

No one cares at best, or I'm callously told "keep up or fall behind" at worst. When that's not even the problem, it just, sucks now. There's no joy in anything I do professionally.

Can I ask where you went? I'm seriously looking for an exit, I just don't know what yet. Maybe a trade, in Scandinavia the pay is actually comparable, I just don't want to go back to school.

▲Silhouette 37 minutes ago | parent | next [-]

It just really hurts that I spent well over a decade of my life learning and honing skills to engineer safe, quality software and now it's just, useless.

It can feel that way with all the hype but I very much doubt that is really true. I see an industry that is rapidly dividing into two camps - "move fast and break things" and "this actually needs to work". Writing everything with agents and merging while barely even checking what is in the PR has become standard practice in the former but it will get you laughed out of the room in the latter.

▲fasterik an hour ago | parent | prev [-]

I was fortunate and saved up enough to live frugally and just work on passion/learning projects for a while. I've been considering going back into commercial software development as a solo dev and leveraging AI, but keeping the focus on quality and craftsmanship. In my opinion there's never been a better time to start a new, ambitious project if you're passionate about quality software.

▲fluoridation 2 hours ago | parent | prev [-]

Sounds like a cushy job. Why would you want to leave?

▲swatcoder 2 hours ago | parent | next [-]

Some people just can't turn off their brains and play drone for dozens of hours a week for decades. It feels existentially, aesthetically, and sometimes ethically crushing to spend a whole life doing work you can't expect yourself to respect or value, no matter how much you get paid or how little the work overtly demands of you.

Often, the lack of meaningfully challenging demands being put on you is punishing on its own. It can feel like a relief for a week or month or year, but if you catch a glimpse of that being your whole future, you can come to recognize yourself as being in a mind-eroding secular purgatory.

This anguish is especially common among on highly capable people, high achievers, and those used to some kind of ambition. And by accident of its history, there's a lot of those people in this industry and some of them are going nuts now.

▲Nevermark an hour ago | parent | next [-]

> This anguish is especially common among on highly capable people, high achievers, and those used to some kind of ambition. And by accident of its history, there's a lot of those people in this industry and some of them are going nuts now.

I went nuts for years, until I sold off my interest in my dream partnership.

10 years of heaven. All the benefits and none of the downsides of my internal colleagues. Then 14 years of bureaucracy aimed at predictability over progress, which was infinitely more difficult for me to dodge as an external player.

Compensation for my interest was very objectively valued, with the rate of stalled progress priced in. Which made complete sense, while also being its own madness.

I walked away from so much value, but I don't regret it for a minute.

▲birdsongs an hour ago | parent | prev | next [-]

> and some of them are going nuts now.

Pretty much this. I know it sounds melodramatic but it literally feels like rotting.

I don't solve anything anymore. I don't get any spark of fixing bugs. I don't DO ANYTHING, and it's fucking chipping away at me.

Also I'm fairly sure people are going to realise soon that if they're happy with slop, they don't actually need highly trained engineers anymore.

This whole thread actually prompted me to look into electrician work, especially in renewables that we have here in Norway.

I might fix my burnout and go to school to get my 2 year qualification. AI can't rewire a hydro dam.

▲ an hour ago | parent | next [-]
[deleted]
▲tomat_1000 an hour ago | parent | prev [-]

Man, I have the same feeling. A long time in your life you build the career and now it’s just feeling so empty, like you are not a engineer anymore, now everyone can use AI and without checking code they would have good results.

▲ an hour ago | parent | prev [-]
[deleted]
▲lirolero an hour ago | parent [-]

[dead]

▲footy 3 minutes ago | parent | prev [-]

it sounds soul-destroying

▲ 30 minutes ago | parent | prev | next [-]
[deleted]
▲trio8453 2 hours ago | parent | prev [-]

The LLMs know design principles too, being an experienced developer doesn't make you as special as you might think.

▲fasterik 2 hours ago | parent | next [-]

Don't get me wrong, LLMs are way better than me at most things, but I don't think you can deny that the current generation of models makes questionable decisions sometimes. Especially on project structure, API boundaries, and code duplication. I also think they just have bad taste in general, though of course that's more subjective.

▲tokioyoyo an hour ago | parent | next [-]

I’m not sure how to say this without sounding smug, but the last year has shown that most of those things just… don’t matter. It’s just the next level of the “variable naming PR comment battle”, so will become obsolete very soon.

Obviously there are mission critical systems where it matters, but if “your code can be A/B tested” or “slowly rolled out”, chances are, it doesn’t matter.

▲swatcoder an hour ago | parent [-]

You'll find that design matters when token spend starts facing real accounting.

Tech debt is still tech debt, even if there exist models that can wade through, because it's going to require increasingly sophisticated models navigating increasingly large context windows and increasingly speculative workspace operations to keep making progress on it.

Vendors like Anthropic and OpenAI are laying a pit trap when they demonstrate how their models can independently code their whole platform as it becomes increasingly byzantine and inscrutable because not only do they benefit from internal/prerelease models but they have effectively unlimited spend because all that spending acts as a lure to draw you into their trap.

For everybody else, design still matters. People are just working really hard to make you forget.

▲trio8453 2 hours ago | parent | prev [-]

> I don't think you can deny that the current generation of models makes questionable decisions sometimes

Sometimes, not enough to believe you that you can do it better. And even if you could, to believe that it's overall worth it to work in that way.

▲fasterik an hour ago | parent | next [-]

You can work the way you want to work. In my experience, letting the agent make every decision leads to a big ball of mud that requires touching dozens of files to make a change. More context is needed, it burns through tokens much faster, and the agent takes shortcuts and builds technical debt. So the way I prefer to work is to have changes targeted to a single file or small set of files where I've defined the API. Maybe that will change in the future, I'm not set in stone here.

▲zmmmmm 32 minutes ago | parent [-]

> In my experience, letting the agent make every decision leads to a big ball of mud that requires touching dozens of files to make a change

It seems too early to make any conclusion like that. We've still only been doing agentic coding for a year and capability significantly improved during that time. I don't think anybody on either side of this debate can have actual empirical evidence to support conclusions about where it lands longer term.

The main argument I see is that it probably pays to be slightly conservative because the cost of being wrong by maintaining too much oversight and shipping slightly less code is better than the cost of ending up with an entirely unmaintainable system. In some cases it will be more than "slightly less" but in almost all complex pre-existing systems, you are rate limited by a lot of other factors outside of code production, so the effective difference just isn't that high.

▲fasterik 8 minutes ago | parent [-]

When I said "in my experience" I meant literally that, my experience so far. I'm definitely anticipating things improving at a rapid pace, which is why I think it's good to run frequent experiments. If in a month I find that an agent can one-shot a 20k line project without creating an unreadable, unmaintainable mess, I'll be thrilled.

▲jonplackett an hour ago | parent | prev [-]

What still is true for all fields of LLMs: if you can’t tell they do it suboptimally, you are just not that knowledgable in that area.

It still applies to all things LLms can do from law to code to art to ideas.

They can do it - and very acceptably - but only to the untrained eye.

▲ 16 minutes ago | parent | prev | next [-]
[deleted]
▲birdsongs 2 hours ago | parent | prev | next [-]

> doesn't make you as special as you might think.

Way to come off as incredibly insecure. There's no need to randomly put people down.

▲trio8453 2 hours ago | parent [-]

I'm not the one who's claiming to be above the latest models in some aspect of coding in this interaction.

▲birdsongs 2 hours ago | parent | next [-]

No one at all claimed that, certainly not the person you responded to. They're talking about how to use these tools in a way that gives you insight into what they produce. So, as an engineer, you know the shape of the output, before it's made.

That's it. Maybe you should go re-read?

▲alfjal an hour ago | parent | prev | next [-]

Why is that so hard to believe? I don't always do this, but I do course-correct Claude on almost every big change. YOLOing it would superficially look fine, until the latent issues catch up with you.

▲dwaltrip 26 minutes ago | parent | prev [-]

Maybe they are?

▲hathawsh an hour ago | parent | prev | next [-]

The LLMs have been trained on all kinds of code. They often choose a hacky solution because that's what they encountered in similar situations in their training. It generally only takes a few words to guide them to a better design than what they saw in the wild, but if you don't guide them, they follow the herd.

▲Silhouette 15 minutes ago | parent [-]

It generally only takes a few words to guide them to a better design than what they saw in the wild, but if you don't guide them, they follow the herd.

That certainly can be true but I would challenge "generally". If you're working on something novel then it's not exactly unusual for even SOTA models to produce a first attempt that makes some very bad assumptions but then get stuck when instructed to use correct axioms instead. This looks a lot like the suduko meme - without any real insight into the problem the models end up just iterating around in circles and never finding a solution.

You probably won't see this very often if you're working on simple CRUD web application where there are millions if not billions of lines of code in the training data set. IME you will probably see it quite frequently if you're working on - for example - software to control some kind of equipment or analyse the results of some kind of experiment where the LLM might have little if any training data about the field you're operating in.

▲chasd00 2 hours ago | parent | prev | next [-]

I've been doing this a long time and i would say since the last 3 months or so i've spent more time learning from llm code than correcting llm code. It's not bad and takes approaches and makes decisions i wouldn't have thought of. I'm not too ashamed to admit that, a model just as access wider and deeper experience with code than I do.

▲ 2 hours ago | parent | prev [-]
[deleted]
▲bobmarleybiceps 28 minutes ago | parent | prev | next [-]

Agreed. I generally feel pretty comfortable with letting LLMs implement stuff like individual functions or algorithms. But I feel like it takes some effort to make sure separate things stay separated... (I do think it also helps LLMs if the code to stays nicely abstracted.)

On the other hand, I do some stuff with physics simulations and LLMs will spit out arrays like

static constexpr std::array<int, Q> cx{0, 1, 0, -1, 0, 1, -1, -1, 1};

static constexpr std::array<int, Q> cy{0, 0, 1, 0, -1, 1, 1, -1, -1};

static constexpr std::array<real_t, Q> w{ real_t(4) / 9, real_t(1) / 9, real_t(1) / 9, real_t(1) / 9, real_t(1) / 9, real_t(1) / 36, real_t(1) / 36, real_t(1) / 36, real_t(1) / 36};

static constexpr std::array<int, Q> opp{0, 3, 4, 1, 2, 7, 8, 5, 6};

and it's like ??? I know what these are for, but I have no clue if any of the numbers are right :-)

▲smashed 2 hours ago | parent | prev | next [-]

Agreed. Even with opus 5.5 which everyone praises for its wonderful coding abilities, I keep catching awful coding abstractions or missing abstractions.

It can keep patching everything left and right whenever a new requirement comes up so it does not "need" to build abstractions, and it will only do it to please the human reviewer.

▲greymalik 32 minutes ago | parent | prev | next [-]

Sounds a bit like the brain sandwich: https://terriblesoftware.org/2026/10/02/the-brain-sandwich/

▲easterncalculus an hour ago | parent | prev | next [-]

> rather than let the LLM do the entire structure, I take the time to create the full hierarchy of abstractions and actors that I want my code to do. I decide, at the UML level, how abstractions will sit and interact — and then I make the LLM implement those gaps.

Do you do this with every repository that's brand-new to you? You refuse to, for example, use an agent to learn where the feature should generally live? This seems absurdly slow for that purpose, because even though humans can still get a deeper understanding of a codebase after several months, an agent can get a much deeper understanding over a timeline of the initial few days. Unless everything is already meticulously documented for you, I suppose.

▲bitwizeshift 43 minutes ago | parent [-]

I don’t believe I said I don’t use agents for things like research? There’s a difference between trying to get your bearings in a new codebase with an LLM pointing you in the right direction so that you can understand things, and just letting an LLM like Claude take the wheel to do a change for you.

Yes, new codebase we take the time to learn, as every good developer should. Ramp-up doesn’t have to be that long to get one’s bearings.

Also, changes don’t have to be deadbolted into bad designs. If the code was bad before and you have a change to make, it can sometimes be faster in the long run to redesign it and rebuild it so that it can scale better with future requirements. LLMs make this part fast and easy — but again, requires design, and designs require human brain involvement and understanding of the codebase

▲threethirtytwo 3 minutes ago | parent | prev | next [-]

The issue is the LLM can often design thing superior to anything you can do. By limiting yourself to code only YOU design you are cutting off a major portion of of AI capabilities that you could leverage.

The pace of AI is literally changing so fast that we can't keep up. Your strategy here was probably true around 3 to 4 months ago. Right now it's no longer true. Not many people understand navier stokes and that's what AI can offer, it can offer some superior problem solving methodology with the level of complexity of navier stokes that you have no hope of understanding without years of study and education to get yourself up that level.

This is not a trivial question with a trivial answer.

Unfortunately your answer is outdated. I think if trendlines continue, the answer is eventually is trending violently towards putting more and more trust towards AI.

▲roadside_picnic 2 hours ago | parent | prev | next [-]

> I have created.

Are you working on a team? I've found that for solo projects this works but, even when you own the design of your piece, integrating with the work of several people doing this ultimately leads to even the part you initially designed no longer working exactly as you remember it.

A good chunk of my time now is spend working with an LLM to understand how other parts of the code base work and how they relate to and interact with the product features I manage. But I'm still on a small enough team that this is possible. I'm not surprised at all that an engineer at an org the size of Meta would not even be able to perform this level of work in understanding what's happening.

▲bitwizeshift an hour ago | parent [-]

Yes this is on a team that I lead. We have augmented our practice so that teams do the design reviews together to ensure we are all understanding the changes. It’s also helped uplevel devs to think in terms of design practices.

It still has sharp edges but IMO it’s the best we have at the moment, and it works. It also means we deliver larger volumes of code, but we mostly look for alignment with the original review — so our reviews are more focused on what tests say behavior should be

▲apinstein 2 hours ago | parent | prev | next [-]

Same here. I review plans w rendered diagrams. Data structures, flowcharts, uml sequences, and component architecture docs.

I have found that making the AI look the plantuml and the rendering and reviewing before presenting it to me results in much more legible designs. To me the peak of this would be a shared interactive whiteboard w the ai during design.

▲forestry 2 hours ago | parent | prev | next [-]

This is where myself and a colleague have settled. We design for longevity but it can still type, search, and debug faster than we can.

▲d1algo12 2 hours ago | parent | prev | next [-]

LLMs certainly helps with designing and is the best brainstorming tool one can have beside their own brains.

▲mentos 2 hours ago | parent | prev | next [-]

Same. I let the LLM work inside a framework that I made.

Of course I only arrived at the framework after trial and error with an LLM showed me the shape of the problem and the framework presented itself to me.

▲eggplantemoji69 2 hours ago | parent | prev | next [-]

This is too the paradigm I’ve settled upon after a year of using these tools.

▲cindyllm an hour ago | parent [-]

[dead]

▲j45 2 hours ago | parent | prev | next [-]

Agreed, otherwise the risk is receiving the average of what LLMs think are best practice.

Planning is fundamentally so critical to ensuring alignment and outcomes, that over time how one plans can be better trained into the process to help do more and more of it.

▲ls-a an hour ago | parent | prev [-]

[dead]