How good engineers write bad code at big companies

Architectural patterns & overengineering

  • Some commenters push back on “drive-by attacks” on CQRS/DDD/TDD, arguing they’re useful patterns when applied pragmatically, but often turned into dogma that drives needless complexity.
  • The article is seen by some as conflating “pure engineering” (reducing systems to cohesive concepts) with “architecture astronaut” overdesign, which they view as opposites.

Primary causes of bad code

  • Many argue the main driver is rushing to meet deadlines and shifting or ill-defined requirements, not lack of skill or unfamiliarity with the codebase.
  • Short-term incentives (shipping features, promotions, looking good to management) routinely beat long-term code health, even when this hurts delivery speed later.
  • Some claim the worst code comes from unstable foundations and constant requirement changes; others say that’s exactly where responsible engineers should push back, but doing so is often punished.

Seniority, expertise & tenure

  • Debate over whether a good senior can “avoid bad code from day one”: critics say “good” is contextual and deep understanding of a large codebase simply takes time.
  • Institutional knowledge is seen as undervalued; frequent reorgs, fungibility, and layoffs destroy expertise and encourage shallow, duct-tape solutions.
  • Some dispute the article’s “1–2 year tenure” framing as misleading, noting growth effects and citing longer real tenures in some big-tech teams.

Business incentives vs code quality

  • Repeated theme: management doesn’t know how to assess code quality, only visible outcomes (features, metrics), so maintainability and refactoring are deprioritized.
  • Engineers who ship quick-and-dirty code often get rewarded; those who invest in cleaning things up struggle to justify it unless they can tie it directly to revenue, churn, or roadmap acceleration.
  • Others argue “bad” or “ugly” code is often economically rational “good enough for now,” analogous to cheap but acceptable physical products.

Process, culture & management

  • Many anecdotes of refactors blocked (“too late to change”), legacy schemas frozen due to fear of breaking changes, and architecture decisions never revisited.
  • Code review culture is criticized for fixating on style/naming while ignoring design/requirements and big-picture correctness.
  • AI assistance is seen by some as amplifying the volume of syntactically correct but conceptually poor code, especially in the hands of “tactical tornadoes.”

Craft, motivation & burnout

  • Several commenters describe a trajectory from caring deeply about code quality to nihilism: realizing the organization neither rewards nor protects that effort.
  • There’s tension between seeing programming as a craft (like fine cooking) versus as production work (bricklaying under time pressure); most agree some compromise is inevitable, but feel current incentives are skewed heavily against long-term quality.