hsjobeki
← cd ..

How have we gone so bad?

, 2 min #culture #llm

We have become bad at engineering.

Not because the tools got worse - they got dramatically better. Not because the knowledge disappeared - it is all still there, one search away, better documented than ever. We got bad because somewhere along the way we collectively decided that being good is optional now.

I want to be precise about what I mean: “everything was better in the old days” is not what i want to say.

Engineering has not changed

The things that made a system good in 1996 still make a system good in 2026:

  • Understand the problem before you build.
  • Know your invariants and your failure modes.
  • Read the code before it ships.
  • Own what you ship.

None of this expired. No model release deprecated it. When your database loses writes or your checkout form drops orders, the postmortem looks exactly like it would have 20 years ago. Nothing has changed.

What changed is what people expect from themselves and from each other.

Expectations changed

Speed became the metric. A prototype now takes an afternoon, so the baseline for “what a week of work looks like” reset - quality silently fell out of the equation, because quality is a property you cannot see in a screenshot.

“It runs” replaced “it is correct”. A demo replaced a design. And once your peers ship at that speed, matching them by cutting the invisible work feels rational. Nobody is honest here: “we lowered the bar” so we can move faster.

The math: Quality x Speed was always a trade off. The harder you push on the speed, the less quality you get.

Adding LLMs didn’t change that equation.

The erosion is voluntary

Here is the part people don’t like to hear: every step of this erosion is a choice someone makes.

  • Merging code you have not read is a choice.
  • Skipping the design discussion because the agent already produced 2000 lines is a choice.
  • Accepting whatever the model decided your app should be, instead of specifying it, is a choice.
  • Telling juniors to prompt instead of teaching them to understand is a choice.
  • “The model wrote it” as an answer. Accepting it is a choice.

In my LLM UX study I measured what happens when you leave gaps in a prompt: the model fills every single one with its house style. Same fonts, same layout, same missing password-change section, 54 apps that were really 6. The model filling the gap is not even a failure - it a necessary feature.

Keeping culture is a decision

The fix is not an AI policy, it is the boring old standards:

  • You read what you ship. No exceptions for generated code.
  • You specify what you want. Unspecified means the model decides, and the model has its own favourites.
  • You keep review. A rubber stamp on 2000 generated lines is hostile, because it launders responsibility.
  • You need to say no, to your own output.

This is not slower in the way people fear. Understanding compounds. Slop compounds too.

Use LLMs but use them right. Going slow with an LLM can now produces incredible results, try it!

Cheers