David Gewirtz, long-time programmer and computer scientist, shares his experiences on how agentic AI coding tools, particularly OpenAI’s Codex and Claude Code, have revolutionized his software development process. Since adopting these AI tools in September, Gewirtz has significantly increased his productivity, completing multiple major software projects across various Apple platforms within a short timeframe while maintaining a day job in executive and educational sectors.
Gewirtz discusses seven best practices he has developed to effectively collaborate with AI in software development. These practices ensure both efficiency and high quality in the created products. Each practice revolves around structured approaches that integrate tightly with AI capabilities, enhancing the software development workflow and project management.
1. **Manage Single Agent Process**: Gewirtz learned from experiences of system crashes and unresponsiveness that managing a single AI agent at a time is more reliable than running multiple agents simultaneously. This approach prioritizes manageability and visibility over speed, mitigating potential issues arising from less transparent, parallel processes.
2. **Document Cross-platform Changes**: For apps developed across multiple platforms such as iPhone, iPad, Mac, and Apple Watch, Gewirtz stresses the importance of meticulous documentation. He logs every significant change in a dedicated file, noting which platforms are affected and details of the changes to ensure consistency and coherence across different devices.
3. **Build a Structured AI Memory System**: Recognizing the stateless nature of typical AI operations, Gewirtz instructs the AI to maintain a knowledge base in a MEMORY.md file, organized by topics, not chronologically. This allows easy access and application of learned lessons and techniques across projects, preventing redundancy and facilitating continuous improvement.
4. **Detailed Instruction Logging**: Each AI session’s prompts and instructions are logged with timestamps in a PROMPT_LOG.md file. This method acts as a version control system, enabling easy referencing and debugging of past interactions, ensuring clarity and traceability of the development process.
5. **Define Clear User Profiles**: Gewirtz emphasizes the importance of AI recognizing distinct user profiles for different apps. By specifying user demographics and preferences, the AI can tailor design and functionality to meet specific user needs, enhancing user experience and app usability.
6. **Enforce Consistent Design Language**: To maintain visual and functional consistency, Gewirtz embeds detailed design guidelines directly into the AI’s project prompt files. This preemptive measure ensures that each new interface component conforms to predefined design standards, streamlining the development process and preserving design integrity across updates.
7. **Encode and Apply Lessons Learned**: Lessons from development mishaps are encoded into the AI’s instruction files as permanent rules. This practice turns temporary fixes into long-term safeguards, enhancing the robustness of the software and preventing recurrent issues.
Beyond these practices, Gewirtz reveals a bonus technique: using AI for code reviews. Periodically, he instructs the AI to analyze the entire project for potential issues, leveraging the AI’s “fresh eyes” to improve code quality and reliability effectively.
Gewirtz’s structured approach to AI-assisted coding transcends conventional vibe coding, where instructions are casually given and AI-generated outputs are unpredictably varied. Instead, his method resembles a disciplined software engineering management regimen, fostering a resilient and cooperative working relationship with the AI. This systematic collaboration not only accelerates development timelines but also elevates the quality and reliability of the final software products.
Through his experience and suggested practices, Gewirtz invites other developers to consider how structured, disciplined workflows with AI can transform their coding projects from casual endeavors into elite productions. His insights into managing AI tools reflect a significant shift in software development paradigms, where AI is not just a tool but a vital collaborator that enhances human capabilities and creativity.
Read the full post on zdnet.com


