Podcast: What Does It Really Mean To Program With AI: A Conversation with Joy Ebertz
Introduction
Welcome to The Architect’s Podcast, where we explore the role of architects in the software development landscape. In this episode, Michael Stiefel interviews Joy Ebertz, a principal software engineer at Imprint, who specializes in backend development and microservice architecture.
Joy has a diverse background, having previously worked at companies like Harness, Split, and Box. She is passionate about software design, coding, and sharing insights through her blog. Outside of work, she enjoys traveling, reading, and running long distances.
Career Path to Architecture
Joy shares her journey into architecture, noting that it was not a straightforward path. Initially drawn to the idea of being an architect, she explored various roles, including a brief stint in management at Box, which she found unfulfilling. As she progressed in her career, she gravitated towards roles that encompassed broader responsibilities, eventually participating in a project focused on breaking a monolith into microservices. This experience deepened her understanding of architecture, even though she has never held an official architect title.
Michael points out that many who act as architects do not have that title, referencing a phase in Agile where architecture was expected to emerge organically. Joy agrees, emphasizing the importance of having someone responsible for architecture to ensure it is adequately addressed.
The Role of an Architect
Joy describes the architect’s role as one that involves long-term thinking, considering not just immediate technical needs but also the broader business context. She highlights the importance of understanding how different teams’ work fits together and how to align technical decisions with business goals.
Michael adds that architects are responsible for aspects that cannot be captured in use cases, such as security, scalability, and user experience. Joy concurs, stressing the need for architects to bridge the gap between technical and business perspectives.
Monoliths vs. Microservices in AI Development
The conversation shifts to the debate between monoliths and microservices, particularly in the context of AI development. Joy notes that while there has been a trend of moving back towards monoliths, microservices may offer advantages for AI, as they provide clearer boundaries for code generation.
Joy acknowledges that AI performs better when it is given constrained problems to solve, similar to humans. However, she also shares an example from her current work where merging separate services into a single repository allowed AI to learn and apply best practices across the codebase.
Challenges with AI-Generated Code
Michael raises concerns about how AI-generated code can complicate bug fixes and maintenance, particularly in monolithic structures. He suggests that regenerating microservices in response to bug reports may be more efficient than making incremental changes to monolithic code.
Joy expresses interest in the idea of AI completely regenerating code but emphasizes the necessity of robust testing to ensure that the new code meets all requirements. She points out that defining clear use cases and tests is crucial for successful AI integration.
The Importance of Documentation and Requirements
The discussion continues with a focus on the challenges of defining precise requirements for AI-generated code. Joy reflects on the historical issues of documentation in software development, noting that as the pace of development accelerates, the lack of clear requirements could become a significant barrier to effective AI utilization.
Michael agrees, sharing his long-standing experience with documentation challenges in the industry. Joy concludes that as AI begins to play a larger role in code generation, the need for clear documentation and well-defined requirements will become increasingly critical.
In summary, the podcast highlights the evolving role of architects in the age of AI, emphasizing the importance of long-term thinking, effective communication between technical and business teams, and the necessity of clear documentation and testing in AI-driven development.
Source: infoq.com