Manifesto for AI Software Development

2 min read Original article ↗

Traditional software engineering is changing. When code becomes cheap to generate, specifications become more valuable than implementation. These principles treat code as disposable while intent, feedback loops, and machine comprehension are the durable assets.

Treat code as expendable, optimize for easy creation and deletion, not preservation.

  • Embrace prototyping, throwaway regeneration, and exploration that are low-cost.

  • Easy creation must mean easy deletion.

  • Follow the Unix philosophy: Small, focused programs that compose together rather than expanding existing systems with new features and maintenance burdens.

Specifications and requirements are the true codebase, iterate on these, not the implementation.

  • Requirements are the new code: behavior specs, design docs, performance targets, security constraints, relevant patterns and successful examples as context.

  • Code reviews focus on outcomes: specifications, properties, APIs, and behavior instead of code formatting.

Structuring projects for comprehension is helpful for humans, but essential for AI.

  • Use conventions that lower onboarding cost.

  • Basic documentation will outperform no documentation.

  • Provide full context: Requirements, history, discussion, and similar information accessible together.

Replace subjective judgment with measurable feedback, let systems and data validate correctness.

  • During planning, validate the problem itself, challenge assumptions.

  • Let compilers automatically find errors with strongly typed languages, immutable data structures, etc.

  • Utilize stateless, functional, predictable code patterns where changes can be more reliably verified.

  • Use external feedback for general testing, use property tests and fuzzing over unit tests.

  • Use SMT solvers and theorem provers to validate AI-generated code against mathematical specifications, providing immediate correctness feedback without human review or testing delays.

  • Instrument production to obtain signals such as metrics and logs.

  • Requirements emerge from real usage patterns and market analysis: User behavior informs goal states, not preconceived plans.

Fast, cheap iteration is the compounding advantage.

  • Time from decision to validation is the critical path: Eliminated delays in everything from compiler errors to customer feedback.

  • Eliminate human induced delay that could be automatic: Automated release and rollback based on metrics, reduce release planning, reduce unnecessary human code reviews.

  • Fast failure detection: Report new failures and regressions in seconds, not weeks, or months.

  • Minimize deployment batch size: Don’t delay work simply to batch for convenience.

Of course, this manifesto is just a starting point, reinforcement learning from real-world application will reveal far richer, more nuanced principles that will eclipse these initial insights. The organizations that master AI development patterns will be the ones defining the next several decades of software engineering.

Discussion about this post

Ready for more?