Why engineers can't be rational about programming languages

Scope of the debate

  • Several commenters note many responses fixate on “rewrites” instead of the article’s main claim: engineers’ language choices are strongly driven by identity and emotion, then rationalized after the fact.
  • Others push back on the charged title, saying they’ve seen plenty of rational, pragmatic language decisions, and that the article overgeneralizes from a few anecdotes.

How important is language choice, economically?

  • The claim that “a programming language is the single most expensive choice a company makes” is widely disputed.
  • Many argue leadership quality, team composition, architecture, and infrastructure decisions dwarf language choice in impact.
  • Some concede language can be costly at the extremes (e.g., dead ecosystems, very mismatched performance needs, exotic databases), but say most mainstream languages are “good enough” for typical business software.
  • A minority argue tool choice can indeed make or break some projects (e.g., high‑performance DBs, real‑time systems), and treating language as interchangeable is itself bad engineering.

Rewrites and migrations

  • Strong consensus: rewriting solely to change language is usually a terrible idea; only justified when the platform/ecosystem is clearly dead, fundamentally wrong for the domain, or non‑maintainable.
  • Success stories exist but are treated as rare, special‑circumstance exceptions, often done incrementally.
  • Many emphasize that rewrites mostly re-learn hard‑won lessons and risk years of delay.

Identity, tribalism, and cognitive bias

  • Many endorse the article’s idea that language allegiance is tied to professional identity and fragile expertise; unfamiliar languages temporarily make people feel less competent.
  • Others liken languages and their communities to cults with charismatic leaders, dogma, aesthetics, and “holy texts.”
  • There’s discussion of Dunning–Kruger and emotional reasoning, but also criticism that the article pathologizes disagreement without rigorously proving its claims.

Who should choose, and based on what?

  • Tension between:
    • “Use what the team already knows” / minimize cognitive and hiring cost.
    • “Pick the right tool for the job” / avoid forcing everything into one stack.
  • Several note management often drives hype‑based choices (Rust, React, Rails, etc.), or imports biases from peers (“language X doesn’t scale”).
  • Some stress the real failure is hiring “language technicians” instead of language‑agnostic engineers who can move across stacks and treat tools instrumentally.