Some software bloat is OK

Interpreting “Premature Optimization”

  • Many argue the famous Knuth line is widely abused: people hear “don’t optimize” instead of “don’t optimize before profiling / identifying critical paths.”
  • Several commenters stress:
    • Always think about performance while designing.
    • Optimize only once correctness and requirements are stable.
    • Avoid “stupid slow” patterns when a faster alternative is equally clear and simple.
  • Others note that business pressure often ships products after “make it work,” skipping “make it right” and “make it fast” entirely.

Bloat, Complexity, and Maintainability

  • One camp: layers, frameworks, and abstraction can improve modularity, extensibility, and maintainability.
  • Counterpoint: those layers also create “unknowable” systems — too many indirections, dependencies, and frameworks make debugging into archaeology.
  • Several argue bloat and complexity are intertwined: complexity is not treated as a first-class problem, so each “reasonable” local decision leads to globally bloated systems.

Web, Electron, and Frontend Frameworks

  • Strong debate around Electron and web stacks:
    • Pro: Electron/React/etc. ship faster, enable cross-platform UI, and are “good enough” for many CRUD‑style apps and internal tools.
    • Con: large installers, RAM use, sluggish UIs, and battery drain are seen as unjustified for simple apps; many cite Teams, Firefox-as-snap, etc. as horror stories.
  • Some advocate native webviews or Tauri as a more size‑efficient middle ground, while others note memory use is still dominated by browser engines.
  • React and similar frameworks are heavily criticized by some as overcomplex, wasteful, and unnecessary for most sites; they advocate SSR + light JS or DOM‑attached components instead.
  • Others defend Vue/Svelte as distinct from React and argue that once you have real client-side logic, bare DOM APIs are painful.

Context and Lifecycle Matter

  • Several emphasize that “some bloat is OK” only relative to:
    • App lifecycle (quick POC vs. core OS component).
    • Usage pattern (niche scientific visualization vs. casual portal).
    • User base (internal enterprise vs. billions of end users).
  • Bloat is seen as more acceptable when alternatives are clearly worse or development speed is critical; less so when it becomes a permanent dependency or core system tool.

User Experience, Hardware, and Environment

  • Many resent that everyday tools feel slower than decades-old games/OSes despite vastly better hardware.
  • Concerns include: UIs lagging behind keystrokes, battery life (especially for Electron apps), bandwidth and storage assumptions that ignore rural/low‑resource users.
  • Some note that “using all resources” is not inherently good: users may prefer many lightweight apps over a few heavyweight ones.

“Bloat Needs Bloat” and System-Level Effects

  • Commenters point out that:
    • Security, containers, and elaborate error reporting are partly reactions to existing bloat and dependency sprawl.
    • Frameworks that ship their own stacks duplicate what OS/toolkits once shared.
  • There is nostalgia for earlier Android and desktop eras where modest hardware still felt fast; today’s resource gains are perceived as mostly soaked up by layered abstractions.

Philosophical Takes

  • Some argue all bloat is bad, but tradeoffs sometimes justify accepting it knowingly (like tech debt).
  • Others link bloat to Conway’s law and standardization: general-purpose standards and libraries are inevitably heavier but convenient and reusable.
  • There’s a recurring call for a culture that prizes simplicity, negative lines of code, and deep understanding over stacking abstractions “because developer time is expensive.”