Hasty Briefsbeta

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.