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.