Remix.run Logo
skydhash 2 hours ago

It’s not a mess as in spaghetti code, which you will find with novice programmers. It’s a mess as in complex and disjointed codebase. Happy path works somewhat, but it crumbles if you run it long enough or encounters an edge case.

You need a very good level of insight to build a codebase to do what is supposed to do, to not do what it shouldn’t do, and to still be comprehensible. Because a software is a system and building system well is what engineering is about.

pmg101 an hour ago | parent [-]

Isn't "spaghetti code" a casual term to describe "complex and disjointed codebase"? What's the difference? Have I been using the term wrong all this time?

skydhash an hour ago | parent [-]

Not really. Spaghetti code is usually related to the big ball of mud. Meaning anything you need to understand, you need to go up and down the files while being distracted by irrelevant concerns. There’s no abstraction, no separation of concerns,…

Complex and disjointed codebase is the usual over engineering. The requirement calls for a quick printf, but the implemented module is equivalent to ncurses. And then every calling point turns into a complex ceremony. And most of them are subtly wrong in some way.

Those are two distinct mode of failures. The first was the sin of novice programmers before LLM. The second was the sin of not so novice programmers before LLMs, at least until the pain of living with their mistakes taught them better.

But with agentic tooling, the output is often the second. I believe mostly because no one publish the simple generic version of their codebase. Instead it’s the one that is aligned with their specs, simple in that context, but too complex in any other.

pmg101 38 minutes ago | parent [-]

Thanks. I do think I see the distinction you're making.