Remix.run Logo
▲ jcolot 5 hours ago

Part of this is an alignment problem, but on the human side: the bottleneck is no longer writing code but staying aligned with it, knowing what it does and whether it does what you meant. In my own work, that’s now most of the job, even for code I asked for. For maintainers reviewing large PRs from strangers, it's certainly much worse. A ban is bit harsh, but I understand why they’re rationing their attention.

▲agentultra 4 hours ago | parent | next [-]

Knowing what your software does is such a hard problem. Most developers have an idea but if you ask, how are you sure?, the answers reveal how little they know.

Most often we’re satisfied with signals and indicators that it works and we build theories and mental models that use to try to avoid the effort of proving anything.

Worse is what happens when you start using LLM models to generate the code for you. I find you start losing the mental model short-cuts; you start to trick yourself into understanding the code. You understand little.

And what few studies there are of code review suggest that we have very little impact on code quality after reading more than a couple hundred lines of code over an hour.

So the current mental leap is, “the AI is a better programmer than I am.”

I think it’s still worth becoming a better programmer regardless. And there’s no royal road. You just have to write code and struggle with writing bad code.

▲grvdrm 3 hours ago | parent | next [-]

> how are you sure?

This is not just a software problem. I see it everywhere. Folks in business roles just as much as any other role. There is a surface-level operating framework to get a job done but the why/how is sometimes lost.

I always come back to an example in my past. Somehow automated a report. From Excel to Power BI. Then for months Power BI was wrong. Automation (more code involved for sure) made it run faster but then people forgot about the how - how to check/validate/etc. And since it was code - for many non technical people the whole thing was a lot harder to deal with needing to deep investigate issues.

▲ptero 3 hours ago | parent [-]

But that is how most of the companies work (and did, for centuries). Very few roles affect critical flight safety, nuclear control or other things that need a bunch of nines for reliability, written and fire-drilled fallbacks, etc.

For everything else the general mode is "can we make it work well enough". And when it breaks, well, we will curse and pry it open and either fix or rebuild it. There are many stories of a particular thing that was built long time ago by folks who are long gone and no one knows how it works or even where it physically is.

And it works fine; usually better than ensuring complete reliability from the get-go, when it is not clear if it is a long-term core feature or a kludge that will be obsolete soon. My 2c.

▲whstl 3 hours ago | parent | prev | next [-]

I agree.

But I feel like it's a minority that really know how the software they're writing really works. And it's 10x worse for older legacy software.

Mostly because the people doing it don't care. Not judging, just reporting I guess. I know because I used to work in quite a few companies where the "money maker" app was on maintenance for years and nobody was able to answer questions or didn't even know most corners of it still existed.

This desperation mindset also often correlates with people writing code without care for the next maintainer.

And the scary part is that this also correlates with advocacy for going all-AI.

▲cindyllm 2 hours ago | parent [-]

[dead]

▲asdf88990 4 hours ago | parent | prev [-]

Are we now really this far knees down in the gutter already? Are we?

▲agentultra 4 hours ago | parent | next [-]

Maybe. I’m not certain the pages and pages of informal markdown specifications for the agents really add anything for me.

▲whattheheckheck 4 hours ago | parent [-]

Yes the bar will be raised to formal verification and actually strong mathematical proof skills to be a real software engineer

▲fn-mote 4 hours ago | parent [-]

… and isn’t the AI is already ahead of 99+% of programmers on that front?

I don’t know anything about formal verification myself! But proof? I am sure we have seen that AI capabilities exceed humans on that front.

▲biztos 3 hours ago | parent | prev | next [-]

Alas, I think we (collectively) either are, or will be soon. There will be people who keep 100% knowledge of the code in their projects, but I don't think there will be any monetary reward for that, nor reputational outside of their own niche. And I say that from a position of really wanting to be wrong about it.

I recently started using Claude to write an app. I was going to write it by hand but was having trouble getting motivated, and I knew I had to "up my game" in the vibecodery anyway. So far it's been a lot of back and forth, I keep the leash pretty short because I don't want The Claude AI you see everywhere now.

But even with good intentions and the short leash, I find myself saying "yeah, whatever, it looks like it did what I told it to do" and not actually reading all the code. Some yes, all no. And this is for my own project, nobody is my boss here, and it's nothing I couldn't have done by myself.

Now imagine the incentives for someone who's doing it for money, whose boss is pushing them to do more AI and not less, who probably doesn't actually know how to do all the things the AI is doing for them, who looks around and sees who's getting promoted and who's getting laid off...

And remember that most of us, most of the time, no matter how much we might love computers and software, are that person.

But hey, it could be worse! Have you heard about the Literacy Crisis?

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

> but I don't think there will be any monetary reward for that, nor reputational outside of their own niche

I used to think this but have come around to the opposite. I'm already seeing client projects where they went off and LLMd their way forward. A few hundred KLOC and many rounds of bug fix whack-a-mole later, they have something that's a giant house of cards.

Sure, once in this state the LLMs can repair issues at a faster rate than the humans can, but the damage is already done at that point. And it requires a lot of combined human/agentic effort to unfuck it.

▲yxhuvud 3 hours ago | parent | prev [-]

> 100% knowledge of the code in their projects

That stops working once the code reach a certain size/complexity limit. It is a different limit for different people, but there is a point where there is just too many parts to be possible to fit in a head. There is also a middle stage where everything fits, but can't be accessed all at once but require some time to retrieve specifics when looking at areas not in recent memory. The middle step is more achievable the easier the code is to reason about by black boxing parts.

▲biztos an hour ago | parent [-]

I hear this a lot as a reason to accept that only the robots have read the code: "but it's too much code for one person to understand."

Yes, but it's not ever too much code for a team to understand, or a community. The question is whether you can build a team or community with enough trust and integrity that two things are always true:

1. Alice understands the fluxtron renoberator module she wrote.

2. Bob can also shift his attention there and understand it if necessary, because Alice writes clean code that was reviewed by John and Sally.

You can have Alice, Bob, John and Sally all be robots, and you can decide to trust the robots, but (so far anyway) it's a choice, not an inevitability.

▲TeMPOraL an hour ago | parent [-]

But 1 and 2 were rarely true pre-LLMs, not in any code that has substantial active development. Because 3 months later, the fluxtron renoberator module has been modified, fixed and refactored by 5 other people and looks little like Alice remembers it, and Bob, well, he could never shift attention and actually understand it, nor could anyone else, because that's just a nice story we told ourselves that never worked in practice.

▲jghn 2 minutes ago | parent | next [-]

> But 1 and 2 were rarely true pre-LLMs, not in any code that has substantial active development.

Every large project I ever worked on worked exactly this way. What do you mean it was rare?

▲skydhash 10 minutes ago | parent | prev [-]

> But 1 and 2 were rarely true pre-LLMs, not in any code that has substantial active development.

I'm ready to bet that is untrue. Sure, no one can recite the code, but people can quickly scan the module and refresh their memory as well as understanding the new changes, even after a while. If not, collaboration would have been impossible.

> Because 3 months later, the fluxtron renoberator module has been modified, fixed and refactored by 5 other people and looks little like Alice remembers it

I don't know for which type of projects those things happen, but good design can have a long staying power. Drastic refactoring in a short period is a clear sign of bad engineering.

> and Bob, well, he could never shift attention and actually understand it, nor could anyone else, because that's just a nice story we told ourselves that never worked in practice.

A lot of OpenSource projects are decades old, and while some core maintainers can stay for the lifetime of the project, new contributors came, understood the code, made changes, then left. Same for hires in companies.

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

We already were, even before LLMs, we just deluded ourselves we're not.

▲trentnix 4 hours ago | parent | prev | next [-]

> the bottleneck is no longer writing code but staying aligned with it, knowing what it does and whether it does what you meant.

Perfectly and succinctly said.

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

When I started working in the 80s in my first job, the head of department had banned the PC for administrative tasks. He thought that the old manual process was more reliable and allowed him to better control what was going on. He retired one year later and the PC were introduced successfully shortly after. Was he wrong to push back ? At that time, that was what I thought. But now, 40 years later, I don’t think so anymore. I think that that delay gave the proponents of the PC the time to prepare themselves a lot better and is a reason for the success.

I can’t help drawing a parallel with what is going on now. Even though I’m pro AI, I understand why QGIS is stepping back. There are a lot of places where the processes and tools are not ready yet to fully embrace it and you need time to prepare.

▲ahoka 3 hours ago | parent | prev | next [-]

I think the economics just change drastically. A few years ago a helping programmer was great help and would implement something that was agreed to be needed to be done by the project or something very important for the contributor (the reason they spent the time to contribute). Now anyone can get a 20$ subscription and prompt away, but so do the project's core developers. So why should they bother separating the wheat from chaff? I totally understand that.

▲gonzalohm 4 hours ago | parent | prev | next [-]

I fully agree with you. But I feel like I have taken the opposite approach. Staying aligned with the code is such a burden that I don't think AI is making my job easier so I stopped using it.

▲bushido 3 hours ago | parent | prev | next [-]

Agreed.

The way I like explaining this to people is that I don't think I build products anymore. Now I build the harnesses which build the product. And a massive part of that is ensuring that I can make the AI remain aligned with my way of thinking.

▲pisymbol 3 hours ago | parent [-]

I would even go further that part of the challenge is the "verification" of your way of thinking which is much harder to do since your harness now is "in the way" sorta speak.

The software telephone game seems to never end!

▲einpoklum 4 hours ago | parent | prev | next [-]

> the bottleneck is no longer writing code

The bottleneck has never been the writing of the code. It's all the rest that takes the majority of the time. Of course, it is often the writing which lets you expand your understanding or your awareness of challenges and pitfalls, which then puts you back on the drawing board.

▲jebarker 4 hours ago | parent | next [-]

This. We’ve just moved the bottleneck from during writing the code to reviewing. The failure mode here is that you can choose to just do a light review since the code “works” but if you had to write the code yourself you would have been forced to consider the design choices and broader implications of the code more.

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

AI agents can build a whole app and review PRs better than a lot of people, while having access to more context at once.

Honestly, where did the bottleneck end up now ? It sure isn't simply reviewing, or designing, so where is it ?

▲jebarker 17 minutes ago | parent [-]

> AI agents can build a whole app and review PRs better than a lot of people

Assuming you're comparing to experienced human developers that are good at what they do, then I think you have to define what "better" means here. It's clear that you can get correctly functioning software faster in many cases, but it's not clear that the design will be better in terms of conciseness and readability or that it's as useful as a foundation for building upon later if nobody understands what's going on inside.

▲skydhash 4 hours ago | parent | prev [-]

The bottleneck they feel during coding is the lack of knowledge. Knowledge of the technical platform and knowledge of the deeper implications of the task’s requirements.

I’ve mentored juniors and the common trait is that they rush to code without understanding, then they spend days trying to fix things. Coding will seem like a real bottleneck for them.

▲ 2 hours ago | parent | prev [-]
[deleted]
▲skydhash 4 hours ago | parent | prev | next [-]

> but staying aligned with it, knowing what it does and whether it does what you meant

That’s the old “Programming as Theory Building” stated by Peter Naur. Writing code, once you learned a language and a few libraries has always been easy and can be made easier by using tooling. Having a good understanding of what has been written and what needs to be added is the difficult part.

I think for every line of code I’ve written, I spent 2 to 5 hours reading specs and docs. Creating software is always about understanding. If you’re thinking too much about syntax and libraries symbol, you’re just at the beginner phase of coding. Like thinking about grammar when learning a second language or being hyperaware of the car as a beginner driver.

▲pezgordo 3 hours ago | parent | prev | next [-]

It is honestly impossible to review the amount of code that AI generates and we dont know how to adapt yet, review line by line is already outdated imo, we just don't know what should replace it.

My prediction is that in the future we are going to be more focus in the testing part (that should be more human readable) than the code itself.

Whatever it is, the only thing clear to me is that the tooling will have to change.

▲psychoslave 4 hours ago | parent | prev | next [-]

That's why I'm now considering what are the ratio for each language in term of exposing the business logic nub that human can grab (mostly) correctly vs all the clutter that is here mainly to bring additional type safety and please the compiler in some way.

One approach that Ruby took for type introduction was to put that in a different file. That comes to my mind.

Typescript brings some niceties, but also some boilerplate all other the place. Combined with something like Effect, Zod, and the like and line count explode. Not sure OCAML or Haskell would provide more compactness for equivalent safety.

▲duesabati 3 hours ago | parent [-]

What you refer to as "clutter" is what actually documents the code without the need of comments if done correctly i.e. naming things properly i.e. ubiquitous language. Before rushing to throw away things you don't know, learn about them.

▲psychoslave an hour ago | parent [-]

There is no "document with documentation", be it comments or as companion side resource with an obvious cross-reference.

There was no mention here on rushing to anything. Verbosity is not always bringing actual non-duplicating information. And even when the explicit way is taken, it can be put aside from human main analysis observation point. Actually even Typscript allow to organize type information by using .d.ts files for declaration files that contain only type information, while implementation files use the .ts extension.

Then there is the tradeoff between grepable explicit type and spare implementation with as much type inference as possible.

▲kafkaesque 3 hours ago | parent | prev [-]

So, you ask an LLM "what does this code do?" and it spits back a long list of things.

Is the fear that it is (maybe wilfully) misinterpreting the code, being too general, not going into specifics or is just not smart enough to catch all the nuances, privacy issues and hidden mistakes? Is it a token issue? A combination of all this?

▲mastax an hour ago | parent [-]

Suppose you're taking a math class and the instructor writes on the board:

> An eigenvector or characteristic vector is a (nonzero) vector that has its direction unchanged (or reversed) by a given linear transformation.

Do you understand eigenvectors now? Speaking for myself: certainly not. To really understand even that definition I'd need to do the calculations, play around with how they can be used in different circumstances, and allow my brain time to sit with all this new information and become comfortable with it.

I think LLM code descriptions are similar. They don't really bring understanding. Sometimes that is fine.