This episode explores the impact of AI and Large Language Models (LLMs) on software engineering, particularly focusing on the evolving role of software design. Against the backdrop of readily available AI code generation tools, the discussion centers on whether these tools will replace higher-level design tasks or simply automate low-level coding. More significantly, the conversation highlights the increasing importance of software design, emphasizing the need for better education in this area. For instance, the concept of "tactical tornadoes" – highly productive but messy programmers – is contrasted with the ideal of "10x engineers" who prioritize clean, efficient designs. As the discussion pivoted to practical design strategies, the interview delves into concepts like deep vs. shallow modules, the value of iterative design ("designing it twice"), and the importance of considering error handling from the user's perspective. In contrast to proponents of test-driven development (TDD), the guest argues that focusing on high-level design is crucial for creating robust, maintainable software. Ultimately, the episode underscores the need for a more holistic approach to software engineering, emphasizing design thinking, collaboration, and a willingness to learn from mistakes. What this means for the future of software development is a shift towards prioritizing design skills and a more thoughtful approach to code creation, even in the age of AI-powered tools.