909 karma · joined December 16, 2023
Next question?
“Have you tried turning it off and then on again” became such a common response to Windows 95+ being kind of crap that they started to include the option for convenience.
So a vibe-coded codebase?
You seem supremely confident that that will be the outcome, though. A lot of us see a lot of other possible ways this could end up, and that seem more likely considering the way the people who have the most influence have been behaving.
If anything, critical thinking is _more_ important in the LLM age. So you can question what the machine is telling you. So you can determine when it’s bullshitting, hallucinating, or plain wrong — even about topics you don’t already know intimately. So you can evaluate the queries it picks for and the sources it picks from a web search. And whether the sources it picks actually support the conclusions it draws (hint: too often not).
Probably something to do with the way we tend not to retain memories from before about 2 y/o.
And yes, obviously absurd, one would think. Yet something that it’s important for modern medicine to have evidence of.
If for no other reason than that our code can have major impacts on people’s real lives. We’re not developing games or something.
I feel free to curse at it precisely because I’m confident it doesn’t have feelings, and it’s like swearing out loud at an inanimate object like when a shoddy screwdriver breaks, or strips a screw, or whatever.
Declarative code has low cyclomatic complexity per unit of business logic. It also tends to have low state management demands (which the functional devotees will tell you is the root of all evil).
You can use a DSL or other abstraction so that you can declare what will happen in what circumstances, in a way that’s succinct and easily comprehensible. And all the repeatable loops and conditionals that make the declared thing happen in the appropriate circumstances are under the hood and needn’t be concern or be loaded into mental context by the person designing or updating the requirements.
It’s not the right solution to every problem, but when you can apply it effectively it’s a huge win.
However, agents and most SWEs are trained on imperative (wrapped in procedural/functional/OOP paradigms), and most will default to imperative because it’s familiar.
As I get deeper in my career I find myself gravitating toward a style that’s declarative where possible, falling back on functional, and then only when necessary imperative/procedural/OOP. It’s nice that many modern languages allow you to mix and match features of all those paradigms.
TL;DR: Mental load is the bane of programmers everywhere, and declarative programming minimizes mental load.
Anyway, why are you ashamed of it?