Remix.run Logo
tombert 8 hours ago

I suspect if people saw the handwritten code of many, many, many products that they used every day they would be shocked. I've worked at BigCos and startups, and a lot of the terrible code that makes it to production was shocking when I first started.

This isn't a dig at anyone, I've certainly shipped my share of bad code as well. Deadlines, despite my wishes sometimes, continue to exist. Sometimes you have to ship a hack to make a customer or manager happy, and then replacing those hacks with better code just never happens.

For that matter, the first draft of nearly anything I write is usually not great. I might just be stupid, but I doubt I'm unique; when I've written nice, beautiful, optimized code, it's usually a second or third draft, because ultimately I don't think I fully understand the problem and the assumptions I am allowed to make until I've finished the first draft. Usually for my personal projects, my first dozen or so commits will be pretty messy, and then I'll have cleanup branches that I merge to make the code less terrible.

This isn't inherently bad, but a lot of the time I am simply not given time to do a second or third draft of the code, because, again, deadlines, so my initial "just get it working" draft is what ships into production. I don't love it, and I kind of dread of some of the code with my name attached to it at BigCo ever gets leaked, but that's just how it is in the corporate world sometimes.

marcus_holmes 2 hours ago | parent | next [-]

It's an unpopular truth for our industry, but the point of commercial software development is not to write good code; it's to write profitable code.

There are some cases where the most profitable code is also good code. We like those.

But in most (99%+) cases, the code is not going to survive contact with the market and so spending any time on making it good is wasted.

progmetaldev 2 hours ago | parent | prev | next [-]

To me, it instead sounds like you care about the code you produce. You judge it more harshly than you probably do other code. It sounds like you are also meeting deadlines, so I'd call that a success and more production than what a lot of people tend to put out into the world.

I often have a lot of time between projects, and am able to really think about things, and write the code that I'm happy with. Even when I do that, I do some more research, or work on another project, and immediately I'm picking apart sections of my code that I really took the time to "get right." Sometimes it can be worse if you are given vast amounts of time to build your solution, where some form of deadline may have pushed you to make decisions you were able to put off. At least that's my perspective on it, I feel like if you love writing software, you are going to keep improving nearly constantly, and look back at what you've done and be able to pick it apart.

To keep myself from getting too distressed over looking at past code now, I tend to look at the overall architecture and success of the project (in regards to the performing what it was supposed to, not necessarily monetarily). If I see a piece of code that I feel could have been written far better, I look at how it fits into the rest. I tend to work on very small teams, so I'm often making architecture decisions that touch large areas of the code, so this may just be from my perspective of not working on a large team. I still do think if you care about your craft, you will be harsh on yourself, more than you deserve.

cassianoleal 7 hours ago | parent | prev | next [-]

This is the product that's claiming "coding is a solved problem" though.

I get a junior developer or a team of developers with varying levels of experience and a lot of pressure to deliver producing crummy code, but not the very tool that's supposed to be the state-of-the-art coder.

tombert 7 hours ago | parent | next [-]

Sure, but as I stated, even "professional" code is pretty bad a lot of the time. If it's able to generate code that's as good as professional code, then maybe it is solved.

I don't actually think it's a solved problem, I'm saying that the fact that it generates terrible code doesn't necessarily mean that it doesn't have parity with humans.

genxy 3 hours ago | parent | next [-]

You can get AI to generate the best code you have ever seen. It just takes time and direction. I can write "poetic" code, but it takes orders of magnitude more time. I can also write beautiful code with AI, but it is also time and brain intensive.

It generates terrible code when used in a nearly open loop manner, which all coding agents are currently doing.

croes 3 hours ago | parent | prev | next [-]

And look what damage comes from that human generated code.

Now we get hyper mass production of the same quality.

aswanson 4 hours ago | parent | prev [-]

Hard to argue with that.

woeirua 6 hours ago | parent | prev | next [-]

No one cares about code quality. No one has ever cared about code quality. It’s only been tolerated in businesses because no one could objectively say that ignoring code quality can result in high velocity. With coding agents, velocity is now extremely high if you get humans out of the way.

switchbak 6 hours ago | parent | next [-]

"No one cares about code quality" - disagree. As a dev, I care about code quality in that shitty code makes my life suck.

As a user of terrible products, I only care about code quality in as much as the product is crap (Spotify I'm looking at you), or it takes forever for it to evolve/improve.

Biz people don't care about quality, but they're notoriously short sighted. Whoever nerfed Google's search is angering millions of people as we speak.

anonymars 4 hours ago | parent [-]

> Whoever nerfed Google's search is angering millions of people as we speak

This guy, supposedly:

https://news.ycombinator.com/item?id=40133976

pron 2 hours ago | parent | prev | next [-]

"Code quality" here isn't referring to some aesthetic value. Coding agents write code that doesn't converge, meaning code that they cannot evolve after a while. They get to the point where fixing one bug causes another, and then the codebase is in such a state that no human or agent can salvage.

People who say they don't care about the quality of code produced by agents are those who haven't been evolving non-trivial codebases with agents long enough to see just how catastrophically they implode after a while. At that point, everyone cares, and that point always comes with today's agents given enough lines and enough changes.

signatoremo an hour ago | parent | next [-]

> Coding agents write code that doesn't converge, meaning code that they cannot evolve after a while

That's not true, and I'm not sure what that even means. It's totally up to you the human to ensure AI code mergable or evolvable, or meet your quality standard in general. I certainly have had to tell Claude to use different approaches for maintainability, and the result is not different than if I do it myself.

socketcluster an hour ago | parent | prev | next [-]

Yep. Good quality, succinct code saves time and money. Always has and always will.

alexchen_dev an hour ago | parent | prev [-]

[dead]

hiq 5 hours ago | parent | prev | next [-]

Nobody cares about costs until they pay them themselves.

Regarding code quality and tech debt, it's sensible not to care if it doesn't lead to anything observable. Do you really care of some "bad" code somewhere that hasn't changed for 5 years but keeps working fine, and has no new requirements?

On the other hand, if you work on an active codebase where fixing one bug inevitably leads to another, maybe it's worth asking whether the code quality is simply too low to deliver on the product expectations.

It's not even obvious to me in which direction coding agents move the needle. Do you want higher quality, at least at a higher (design) level, when you heavily use agents, so that you know know the mess will at least compartmentalized, and easier to deal with later if needed? Or do you just assume the agent will always do the work and you won't need to dig into the code yourself? So far I've mostly done the former, but I understand that for some projects, the latter can make sense.

pydry 6 hours ago | parent | prev [-]

It really shows that nobody cares about uptime at github or the jankiness of claude.

I wouldnt say that customers are indifferent, but it wouldnt be the first time that investor expectations are prioritized far above customer satisfaction.

H8crilA 6 hours ago | parent | prev | next [-]

> crummy code, but not the very tool that's supposed to be the state-of-the-art coder

Why not? It is subject to the same pressures, in fact it is subject to more time pressure than most corp code out there. Also, it's the model that's doing the coding, not the frontend tool.

Eufrat 4 hours ago | parent | next [-]

I thought the sales pitch of all of this is that the AI was supposed to relieve people from having to do a bunch of annoying bootstrap coding and to do it in a way that we could extended easily.

I have a subscription to Claude Code and despite my skepticism, it has been pretty good at just getting a goofy PoC thing going. When I look at the code, it’s usually insane unless the prompt was so narrow and specific like about writing a function that does one thing and only one thing.

Outside of small, personal projects, I am still really uncomfortable at having agents run wild. I see the result, and then I spend a bunch of time having to gain the context of what is going on, especially if I ask it to implement features in spaces I have general knowledge, but not expertise. So, the problem remains the same. These things still need handholding by people who understand the domain, but having people become glorified PR reviewers is not an acceptable path forward.

Arguing that there is lots of bad production code kinda avoids the actual issue that is going on here. Yes, a lot of sloppy code can and has been written by people. I’ve seen it myself, but it feels like the actual thing is that, we are now enabling that at scale and calling it “abundance” when instead we are really generating an abundance of completely avoidable security holes and logic errors.

cassianoleal 3 hours ago | parent | prev [-]

Does the pressure affect the LLM's judgement in the same way it does a developer whose job is on the line?

andrekandre 3 hours ago | parent [-]

i once scolded an ai for being too late when i figured out an issue before it could come back with an answer: it made an excuse that it took too long to start up, lol

i would guess telling it to "hurry up" would produce even worse code than already does without hand-holding or maybe it would make an excuse again...

progmetaldev 2 hours ago | parent | prev | next [-]

I mean, hasn't it learned from reading other's code? I don't think it can be any better than the common patterns and practices that it has been trained on. Some outlier of amazing code is probably not going to make much of a difference, unless I am completely misunderstanding LLMs (which I very well may be, and would gladly take any criticism on my take here).

SpicyLemonZest 6 hours ago | parent | prev [-]

The bet is that it will be trivial for them to invest in cleaning up Claude Code whenever they face real competitive pressure to do so. My best guess is that it's a bad bet - I don't think LLM agents have solved any of the fundamental problems that make it hard to convert janky bad code to polished good code. But Claude Code is capable in my experience of producing clean code when appropriately guided, so it's not that there's no choice but jank. They're intentionally underinvesting in code quality right now for the sake of iteration speed.

woeirua 6 hours ago | parent [-]

Have you tried just asking CC to make a codebase more elegant? It’s surprisingly effective up to a point. No reason to think that won’t work better down the road.

SpicyLemonZest 5 hours ago | parent [-]

Down the road AI is smarter than all of us. Today (including one time literally today), my experience is that it’s occasionally helpful at cleaning up its own mess but often tries to change behavior in a way that’s unacceptable for a production project.

andrekandre 3 hours ago | parent [-]

  > often tries to change behavior
yes, and (in my experience) at the same time re-write the unit tests that are supposed to guarantee behavior doesn't change...
faangguyindia an hour ago | parent | prev | next [-]

i worked at companies in US

where uptime monitoring was Page Refresh by QA team.

where there was no centralized logs

postgres had no backup or replication or anything

xienze 7 hours ago | parent | prev | next [-]

> I suspect if people saw the handwritten code of many, many, many products that they used every day they would be shocked.

Absolutely. The difference is that the amount of bad code that could be generated had an upper limit on it — how fast a human can type it out. With LLMs bad code can be shat out at warp speed.

tombert 7 hours ago | parent [-]

Oh I don't disagree with that. I am getting pretty tired of people making multi-thousand-line pull requests with lots of clearly AI-generated code and expecting it to be merged in.

I think the better unit to commit and work with is the prompt itself, and I think that the prompt is the thing that should be PR'd at this point, because ultimately the spec is what's important.

xienze 7 hours ago | parent [-]

> I think that the prompt is the thing that should be PR'd at this point, because ultimately the spec is what's important.

The fundamental problem there is the code generation step is non-deterministic. You might make a two sentence change to the prompt to fix a bug and the generation introduces two more. Generate again and everything is fine. Way too much uncertainty to have confidence in that approach.

tombert 7 hours ago | parent [-]

If you make the prompts specific enough and provide tests that it has to run before it passes, then it should be fairly close to deterministic.

Also, people aren't actually reading through most of the code that is generated or merged, so if there's a fear of deploying buggy code generated by AI, then I assure you that's already happening. A lot.

ben-schaaf 4 hours ago | parent [-]

How is "fairly close to deterministic" anywhere near good enough? LLMS aren't anywhere near cheap enough to do this either.

That said it's so trivial to do, why haven't you done that already?

tombert an hour ago | parent [-]

I have actually, for my personal projects. I have been writing a library called "assume" where you can specify a type signature, give it a prompt, and it generates a function on the fly in the background with Claude Code, so you still write some code, but whenever you need a function you "assume" that such a function exists. I have a Java version that works right now and I will likely be pushing it within the next week.

But more generally, I actually have been building some CI stuff to automate how I'm saying.

I don't have much of a say how this is handled at work so they're just committing the generated code, but I actually am doing what I am talking about.

ben-schaaf 35 minutes ago | parent [-]

Sounds like a fun project. And are you committing code for this library? Because it sounds like you are, and if that's the case I don't think you're actually doing what you're talking about.

awesome_dude 7 hours ago | parent | prev | next [-]

> and then replacing those hacks with better code just never happens

Yeah, we even have an idiom for this - "Temporary is always permanent"

switchbak 6 hours ago | parent | next [-]

We'll fix it later.

But as a great man once said: Later == Never.

parineum 3 hours ago | parent | prev [-]

"There's nothing more permanent than a temporary solution."

whatisthiseven 5 hours ago | parent | prev | next [-]

> I suspect if people saw the handwritten code

Somehow, everyone has forgotten the terrible code quality that existed prior to 2020.

https://www.youtube.com/watch?v=UjZQGRATlwA

Like, come on. Software has been shit for decades. AI hasn't observably reduced the quality of software I use everyday in a way that is meaningfully separable from normal incidents in the past.

0xDEAFBEAD 5 hours ago | parent | next [-]

>AI hasn't observably reduced the quality of software I use everyday in a way that is meaningfully separable from normal incidents in the past.

I have noticed a spike in web apps exhibiting random failures and glitchy behavior over the past few months.

jfkddkdjdj 5 hours ago | parent | prev [-]

[dead]

benjiro3000 3 hours ago | parent | prev [-]

[dead]