How Good Engineers Write Bad Code at Big Companies - Article Recap

A recap of Sean Goedecke's article on why big tech companies produce surprisingly poor code despite having highly competent engineers, due to structural and organizational factors rather than individual incompetence.

  • Core thesis: Big tech companies often produce surprisingly poor code, even with highly competent engineers on staff—this isn't due to individual failure but a structural, organizational outcome.
  • Short tenure problem: Most engineers at big companies don't stay on a single team or codebase for long—average tenure is 1-2 years due to company incentives like 4-year stock vesting.
  • Lack of deep expertise: Internal mobility and frequent team changes mean engineers seldom become experts in any given codebase, yet the software itself lasts for years or decades.
  • Constant beginners: Most code changes are made by "beginners"—people new to the company, codebase, or programming language within the past six months.
  • Undervalued old hands: Some long-term engineers develop deep expertise on particular systems, but their knowledge is informal and undervalued—they're often shuffled to new teams or overloaded.
  • Unsustainable expertise: These "old hands" can't review every change or be involved in every decision, yet their knowledge is crucial to maintain code quality.
  • Speed over quality: Management rewards engineers and teams for shipping features and visible results, not necessarily for quality work—those who "move fast" (even if sloppy) are recognized.
  • Technical debt accumulation: Pressure to deliver means shortcuts are routine, cleanup is delayed or deprioritized, and technical debt builds up continuously.
  • The velocity paradox: Big companies believe they're trading quality for speed, but this is a misconception—healthy codebases produce fewer bugs and enable faster development.
  • Speed theater: Unhealthy code slows everything down yet is more common due to prioritizing "looking fast" over actually being efficient.
  • Massive economic cost: Technical debt consumes about 40% of IT budgets, costing trillions annually; developers spend substantial time coping with bad code instead of making progress.
  • Accountability mismatch: Engineers are held accountable for problems caused by predecessors, and technical debt is sometimes used to block promotions or criticize current staff.
  • Architectural blind spots: Code reviews typically focus on syntax, not design—architectural decisions leading to long-term issues are rarely caught, so root causes persist.
  • Systemic outcome: The overwhelming majority of engineers work in unfamiliar territory, leading to constant "figuring it out," ad-hoc fixes, and bad code.
  • Not a tech problem: This results from how companies optimize for flexibility over expertise, chasing maximum growth at the expense of code health.
  • Community response: Discussions acknowledge the accuracy of this pessimistic view while seeking more hopeful solutions and alternative management approaches.
  • Industry pattern: Companies like Google and Meta are structurally set up to chase growth, which exacerbates these issues across the industry.
  • Developer morale: Poor code quality leads to regressions, outages, and infinite loops of technical debt, hurting morale and effectiveness.

The full article is available here.