Essence and accident in language model-assisted coding
2 days ago
- #AI
- #productivity
- #software-engineering
- Fred Brooks argued in 1986 that there is 'no silver bullet' in software engineering, meaning no single tool or process can drastically improve productivity.
- He categorized complexity into essential (inherent to the problem) and accidental (related to the solution method).
- Brooks discussed two types of AI: AI-1 (solving human-intelligence problems like speech recognition) and AI-2 (rule-based programming, similar to today's programming assistants).
- AI-1 was deemed less useful for tackling complexity due to lack of domain transferability, while AI-2 could aid inexperienced programmers but didn't address core complexity.
- Automatic programming, akin to modern AI coding tools, was seen as limited in 1986 but is now feasible.
- Coding assistants may not reduce accidental complexity and could even add to it through prompt engineering, but they allow leveraging collective expertise.
- To truly address accidental complexity, programming assistants might need to generate binaries directly, bypassing source code.
- Language models can help uncover essential complexity quickly, though often in a flawed 'monkey-paw' manner, speeding up iterative development.
- Modern tools enable faster iteration compared to traditional methods like Spec-Driven Development, aligning with Brooks' predictions about higher-level programming.