Essential Until It Wasn't
9 hours ago
- #Artificial Intelligence
- #Essential Complexity
- #Programming Evolution
- The nature of 'programming' has evolved over time, with each era's practitioners believing their skills to be the permanent core of the craft, such as memorizing opcodes or managing memory manually.
- Fred Brooks' distinction between essential complexity (inherent to the problem) and accidental complexity (tool-related friction) is useful, but the boundary between them shifts as tools absorb tasks, making what was once essential become accidental.
- Historical examples show this boundary shift: opcode memorization, manual memory management, and API knowledge have all transitioned from essential to accidental as new tools emerged, often met with gatekeeping complaints like 'they're not real programmers.'
- AI is now moving the boundary past implementation-level reasoning, making tasks like writing code character-by-character and manual debugging accidental, while the essential work shifts to specification, architecture, and theory-building.
- This transition unbundles traits: implementation-specific traits (e.g., patience with syntax) become less relevant, while architecture-level traits (e.g., systems thinking, curiosity) persist, causing disorientation for practitioners adapted to the old boundary.
- The essay argues that programming's essence lies in theory-building and conceptual integrity, not code-writing, and that the current boundary shift is not final—future shifts may affect even architecture or specification.
- A recipe for understanding such transitions involves identifying fixed distinctions, exploring historical precedents, listening to gatekeeping complaints, and determining what remains essential after the boundary moves.