# AWS's Marc Brooker: Specs, Not Code, Are the Hard Part

## Executive summary

The core argument is that the hardest part of modern software development is no longer writing code, but defining the specification—a complete, detailed description of what the system should do. Marc Brooker, VP and Distinguished Engineer at AWS, emphasizes that advanced automation, particularly agentic AI, is making the building and maintenance of reliable implementations increasingly automated. This shifts the engineering focus to specification, rigorous testing, and managing complex system failures, such as metastable failures. Key technical advancements include specialized policy languages (like Dogwood) and advanced memory systems that allow agents to learn from historical postmortems and organizational context.

## Key takeaways

- The Shift to Specification: The most challenging aspect of software development is creating a complete, detailed specification of what is desired. Once this specification is established, the building and maintenance of reliable implementations are expected to become increasingly automated (00:32:14).
- The Importance of Postmortems: Analyzing thousands of postmortems teaches engineers a 'deep sense of humility' regarding system failures and highlights the need to understand complex failure modes like metastable failures (00:11:23).
- Agentic Policy vs. Classic Authorization: Classic authorization models are insufficient for autonomous agents. Agentic policy requires a specialized language (like Dogwood) to deterministically define what an agent is allowed to do, and in what order, providing necessary boundaries for trust (00:20:14).
- Learning from Failure: Agents can be trained to learn from postmortems by using tools to semantically search historical incidents and build procedural memory, allowing them to anticipate and circumvent past failures (01:14:32).

## Technical details

- Agentic AI Development: Marc Brooker has focused on agentic AI and development tools, including Strands, an open-source AWS agent framework designed to simplify building production-ready agents (00:04:36).
- Metastable Failures: These are large system failures where the immediate cause is repaired, but the system fails to recover because it gets stuck in a stable down state. Understanding these requires analyzing real-world incident dynamics (00:11:23).
- Agentic Policy Languages: Dogwood is a specialized policy language designed to describe with mathematical certainty what an agent is allowed to do, including the order of operations (00:20:14).
- Context and Memory Management: Effective agent development requires mechanisms to capture and share organizational context and memories across teams, utilizing patterns like 'agent wikis' and semantic search (RAG) over internal documentation (01:28:00).
- AWS Agent Tools: AWS DevOps agent can automate day-to-day aspects of on-call, but human reasoning is still required for large-scale failure analysis and performance improvement (00:00:00).

## Practical implications

- Focus development efforts on defining clear, deterministic specifications and robust testing, rather than optimizing code implementation details.
- Implement specialized policy languages and strict boundaries (agentic policy) to ensure autonomous agents operate within defined, trustworthy parameters.
- Establish organizational processes (like agent wiki patterns) to capture and share institutional knowledge and lessons learned from incidents across teams.
- Treat the process of learning from failures (postmortems) as a core, repeatable engineering loop, feeding insights back into development and design.

## Topics

AI Development, Software Architecture, Reliability Engineering, Agentic Systems, Specification, Strands, AWS AgentCore, Dogwood, AWS Context

Source: https://www.youtube.com/watch?v=nSRpnjkLqgc
