The 5 Techniques Separating Top Agentic Engineers Right Now
How to Maximize Your AI Coding Assistant's Potential
Introduction to AI Coding Assistants
- The speaker emphasizes that many users are not fully utilizing the potential of their AI coding assistants, such as Claude, Code Hero, or Cursor.
- Assumes a basic understanding of coding agents and aims to provide practical techniques used by experienced engineers.
Importance of PRD (Product Requirement Document)
- Defines PRD as a markdown document outlining the entire scope of work for a project, crucial for both greenfield and brownfield development.
- For greenfield projects, the PRD includes everything needed for proof of concept or MVP; it serves as a guiding document for feature development.
- Highlights the importance of breaking down projects into granular features to avoid overwhelming the coding agent.
Creating and Utilizing PRDs
- In brownfield development, the focus shifts to documenting existing codebases and planning future developments while maintaining a clear project direction.
- A GitHub repository is mentioned where users can find demo projects and commands related to creating effective PRDs.
Workflow Commands for AI Development
- Introduces core slash commands used daily in AI coding workflows, including one specifically designed for creating PRDs.
- Describes how to engage with an AI assistant by discussing project goals before generating a comprehensive PRD using the
/create PRDcommand.
Structuring Feature Development Around PRDs
- Once the PRD is established, it becomes essential for guiding subsequent feature development with the help of an AI coding assistant.
Priming Your Coding Agent
- Discusses using a "prime" command at the start of conversations with an AI assistant to load necessary context from the project files like the PRD.
Modular Rules Architecture
- Introduces modular rules architecture as a way to keep global rules concise and relevant across different tasks without overwhelming the LLM (Large Language Model).
Best Practices in Rule Management
- Advises keeping global rule files short and focused on universal constraints while splitting task-specific rules into separate documents.
Example: Habit Tracker Application Rules
- Provides insight into managing rules effectively through examples from a habit tracker application, emphasizing lightweight rule files.
Understanding Project Structure for Coding Agents
Importance of Project Context
- The speaker emphasizes the need for coding agents to understand project structure, including commands for front-end and back-end operations, server types, code conventions, and logging standards.
- A reference section is introduced where task-specific context is loaded only when necessary, allowing the coding agent to access relevant information based on the feature being developed.
Managing Reference Information
- The reference folder in the codebase contains extensive documentation (nearly a thousand lines), which provides detailed instructions specific to API development.
- Keeping global rules concise while maintaining access to comprehensive context is crucial; this helps protect the coding agent's context window from becoming overloaded.
Commandification of Processes
- The speaker advocates for "commandifying" repetitive prompts sent to the coding agent, suggesting that any prompt used more than twice should be converted into a reusable command or workflow.
- By documenting core commands in markdown format within a repository, developers can streamline their workflows and save time during development tasks like git commits and code reviews.
Comprehensive Workflow Documentation
- The speaker shares that all essential commands are documented in a repository for others to customize according to their needs. This includes various aspects of feature development cycles.
- Techniques covered include executing planning phases, validating processes, and evolving systems over time with AI assistance.
Context Management Techniques
- A critical technique discussed is resetting context between planning and execution phases by outputting a document containing all necessary information before starting code writing.
- This approach ensures minimal context load during execution allows the coding agent ample room for reasoning and self-validation without unnecessary distractions.
Execution Planning Process
- During execution planning, no additional priming is done; instead, a structured plan document serves as the sole input for the coding agent.
- The process involves using commands like
/cleto clear previous contexts before executing new plans based solely on previously defined documents.
This structured approach aims at enhancing efficiency in working with AI-driven coding agents while ensuring clarity and focus throughout development processes.
System Evolution and Coding Agents
The Importance of System Improvement
- Treating bugs as opportunities for enhancement can significantly strengthen coding agents. Instead of merely fixing issues, developers should analyze the system to prevent future occurrences.
- Identifying patterns in recurring issues allows for targeted improvements in global rules or workflows, enhancing the overall reliability of the coding agent.
Strategies for Addressing Bugs
- When a coding agent encounters an error, it often indicates a misunderstanding of rules or validation processes that need refinement.
- Examples include adding new rules for import styles or updating templates to ensure testing is included in execution plans.
Continuous Learning and Adaptation
- After completing feature development, it's crucial to review any discrepancies between expected outcomes and actual results. This reflection helps identify areas for improvement.
- Developers should engage their coding agents in self-reflection by comparing execution against established plans and rules to address bugs effectively.
Mindset Shift: Fixing Systems Over Bugs
- Emphasizing a mindset where developers focus on improving systems rather than just fixing individual bugs leads to more powerful and reliable coding agents over time.
- Techniques shared are commonly used by top engineers, highlighting the importance of systematic thinking in software development.