Survival vs. Excellence as Engineering Modes
Software development has two modes (survival and excellence), and the choice should be deliberate, not a default. Survival optimizes for speed to a specific outcome: sacred deadlines, end-to-end functionality for one use case, every shortcut accruing tech debt with compounding interest. Excellence is decomposition-driven: understand the problem space, tease apart essential vs. incidental complexity, build composable abstractions that let you pivot and parallelize.
Choose survival when resources are truly constrained and failure is acceptable, when environmental uncertainty is high, or when solving a genuinely one-time problem. But the choice is rarely binary. You can almost always negotiate on deadlines, scope, or expectations. Without considering negotiation, the framing is incomplete.