Hacker News new | ask | show | jobs
by nvader 40 days ago
Fortunate to be reminded of this right now, especially the pull-quote about conceptual integrity.

This is the reason why AI-assisted programming has not turned out to be the silver bullet we have been hoping for, at least yet. Muddled prompting by humans gets you the Homer Simpson car you wished for, that will eventually collapse under its own weight.

I've been thinking a lot about Programming as Theory Building [0] as the missing piece in AI-assisted engineering. Perhaps there are approaches which naturally focus on the essence while ignoring the accidents, but I'm still looking for them. Right now the state of the art I see ignores both accident and essence alike, and degrades the ability to make progress.

Please inform me if there are any approaches you know that work! And lest this sound pessimistic, far from it. This state of affairs is actually intoxicatingly motivating. Feels like we have found silver, and just need to start learning to mould bullets.

[0] Another classic required reading of the industry https://pages.cs.wisc.edu/~remzi/Naur.pdf

5 comments

We've found pyrite thinking it gold. Then we bought the whole saloon drinks and hookers.

The hangover tomorrow morning will not be pleasant. And the bar tab even less so.

If only it wasn't a dichotomy!
This is a good way of putting it. I ship individual features faster, but the end to end process of shipping software has remained the roughly same because the vast majority of my time is building the “theory”.
I love that Naur paper! Also love this essay that extends it: https://hiringengineersbook.com/post/autonomy/

I literally maintain a conceptual-model.md that describes the “things” in our entire system, how they relate to each other, and some bits about how that maps to the code (the DB schema maps sort of closely to it but sometimes not that close, and so does the API, and that’s ok). I wrote most of the doc myself, but plan to coauthor with LLMs going forward.

So far it’s saved me tons of typing as I add features. I don’t have enough data yet on how well it will guide myself and others when adding stuff that really stretches the model, but I’m also optimistic that it’s a valuable approach.

This is the kind of practice I was going to get an insight into.

For your conceptual-model.md, do you find natural language is sufficient? Do you use pseudo code, Entity Relationship modeling, or anything like that?

And how do you go about round-tripping it from the source code, keeping it up to say with any changes, and yet at the right later of abstraction?

> Muddled prompting by humans gets you the Homer Simpson car you wished for

Well put! Now that we have a magic tool that can generate tokens on demand, the quality of the underlying idea gains enormous importance relative to the code. Tokens are cheap. Good ideas are not.

I would like to hope that some people take advantage of this newfound agentic power to create better theories. But there's a sizable population that seems intent on generating more and more code, regardless of quality.

Imo the main benefit of AI is allowing faster experimentation and more parallelism, as well as faster iteration.