logoalt Hacker News

ofjcihenyesterday at 9:45 PM8 repliesview on HN

I see this comparison made constantly and for me it misses the mark.

When you use abstractions you are still deterministically creating something you understand in depth with individual pieces you understand.

When you vibe something you understand only the prompt that started it and whether or not it spits out what you were expecting.

Hence feeling lost when you suddenly lose access to frontier models and take a look at your code for the first time.

I’m not saying that’s necessarily always bad, just that the abstraction argument is wrong.


Replies

DenisMyesterday at 11:47 PM

> you are still deterministically creating something you understand in depth with individual pieces you understand

You’re overestimating determinism. In practice most of our code is written such that it works most of the time. This is why we have bugs in the best and most critical software.

I used to think that being able to write a deterministic hello world app translates to writing deterministic larger system. It’s not true. Humans make mistakes. From an executives point of view you have humans who make mistakes and agents who make mistakes.

Self driving cars don’t need to be perfect they just need to make fewer mistakes.

show 1 reply
jasonfarnonyesterday at 11:23 PM

"When you use abstractions you are still deterministically creating something you understand in depth with individual pieces you understand."

I always thought the point of abstraction is that you can black-box it via an interface. Understanding it "in depth" is a distraction or obstacle to successful abstraction.

moritonalyesterday at 9:50 PM

I think it's more: when I don't have access to a compiler I am useless. It's better to go for a walk than learn assembly. AI agents turn our high-level language into code, with various hints, much like the compiler.

show 5 replies
jen729wtoday at 12:04 AM

There's a false dichotomy here between 'deterministic creation' and 'vibing'.

I use Claude all day. It has written, under my close supervision¹, the majority of my new web app. As a result I estimate the process took 10x less time than had I not used Claude, and I estimate the code to be 5x better quality (as I am a frankly mediocre developer).

But I understand what the code does. It's just Astro and TypeScript. It's not magic. I understand the entire thing; not just 'the prompt that started it'.

¹I never fire-and-forget. I prompt-and-watch. Opus 4.7 still needs to be monitored.

superfrankyesterday at 10:12 PM

> When you use abstractions you are still deterministically creating something you understand in depth with individual pieces you understand

Hard disagree on that second part. Take something like using a library to make an HTTP call. I think there are plenty of engineers who have more than a cursory understanding of what's actually going on under the hood.

show 1 reply
simondotauyesterday at 9:50 PM

Perhaps then, the better analogy is like being promoted at your company and having people under you doing the grunt work.

show 2 replies
doug_durhamtoday at 1:23 AM

In what world to developers “understand” pieces like React, Pandas, or Cuda? Developers only have a superficial understanding of the tools they are developing with.

show 1 reply
ComplexSystemsyesterday at 10:08 PM

It seems like some kind of technique is needed that maximizes information transfer between huge LLM generated codebases and a human trying to make sense of them. Something beyond just deep diving into the codebase with no documentation.