Writes large correct programs (2008)

Role of Software Architects

  • Disagreement over whether “software architect” should be a distinct non-coding role.
  • Some argue good developers naturally do architecture; “architect” titles often mask jargon-heavy, low-skill roles.
  • Others note that strong architecture skills, while distinct from coding, are often best exercised by hands-on developers.
  • Frustration that many titled architects don’t write or never wrote code, compared to “chess coaches who don’t play.”

Maintainability, Tests, and Refactoring

  • Many value maintainability over initial correctness; real systems must evolve.
  • “We don’t dare change it” is interpreted as “we don’t understand it and lack tests.”
  • Fixing legacy “warts” is technically straightforward but socially hard: needs time, buy-in, cross-team coordination, and carries career risk if refactors cause incidents.
  • Testing and refactoring are framed as a social/organizational challenge more than an algorithmic one.
  • Good tests, asserts, and crash dumps are seen as core tools to keep large programs correct over time.

Education, CS Degrees, and Real-World Skills

  • Repeated stories of CS/engineering graduates unable to build non-trivial software, use version control, or start projects without scaffolding.
  • Some universities heavily emphasize theory (theorems, proofs) with almost no practical programming.
  • Others highlight rigorous “learn-by-building” curricula (e.g., simplified OS from scratch) as more aligned with software engineering.
  • Observations that many academics and CS grads write fragile, one-off code, while industry rewards those who can deliver robust systems.

Computer Science vs Software Engineering

  • Common analogy: CS : SWE :: Physics : Civil Engineering.
  • CS is about theory and algorithms; SWE is about delivering reliable, maintainable systems under constraints.
  • Many companies hire CS grads but expect engineering skills; this mismatch is blamed for shoddy code and poor predictability.
  • Debate over whether “software engineering” is truly an engineering discipline yet, or still mostly a craft.

Process, Roles, and Organizational Complexity

  • Some see project managers, process owners, scrum masters, and certain “architects” as pseudo-jobs that slow delivery.
  • Others report that good PMs/product roles are “worth their weight in gold” for coordination at scale.
  • Side discussion on pseudo-jobs as a byproduct of current labor markets, and whether UBI would reduce or increase such roles.