
Justine Gehring: Refactoring Software at Scale with AI
11/12/24 • 48 min
Robby sits down with Justine Gehring, an AI Research Engineer at Moderne, to explore how AI tools are transforming code maintenance and scalability. They dive into the unique ways AI can support refactoring for massive and legacy codebases, from retrieval-augmented generation (RAG) to lossless semantic trees, and discuss how developers can benefit from AI-assisted planning and refactoring.
Justine shares her background transitioning from academia to industry and reflects on the essential role of reproducibility in AI, why maintainable code is often overlooked in research, and the challenges of balancing innovation with real-world reliability in software projects.
Topics Discussed
- What Makes Software Maintainable: Justine’s take on good documentation, reusable code, and ensuring new team members can quickly navigate a codebase. [00:00:42]
- Academia vs. Industry in Code Maintainability: Why reproducibility and code maintenance often diverge in research settings, and how industry standards address this gap. [00:01:14]
- From Academia to AI Engineering: Justine shares her journey and how her background in machine learning led to a career in AI-focused software maintenance. [00:04:48]
- Scaling Refactoring with OpenRewrite: An introduction to OpenRewrite, the open-source tool that facilitates large-scale code transformations, developed by Moderne. [00:12:15]
- Lossless Semantic Trees: The benefits of LSTs for detailed code analysis, retaining essential syntax and type information critical for reliable AI refactoring. [00:20:24]
- Retrieval-Augmented Generation (RAG): Justine explains RAG’s significance in allowing AI models to provide context-specific responses without heavy re-training. [00:26:00]
- Trust and Validation in AI-Generated Code: The importance of robust test cases and human oversight when leveraging AI-generated code to avoid cascading errors. [00:31:36]
- AI as a Planning Tool for Refactoring Projects: Justine’s insights on using AI as a collaborative coding assistant, offering developers suggestions for planning refactoring and maintenance tasks. [00:35:24]
- Real-World Example of Scaling Refactoring: Justine recounts a case study where Moderne used OpenRewrite to facilitate large-scale code migration involving multiple frameworks. [00:42:00]
- Advocating for AI Tools in Code Maintenance: Tips for developers interested in introducing AI tools and approaches within their teams or organizations. [00:42:31]
Key Takeaways
- AI Supports Reproducibility and Reliability: Ensuring reproducibility in AI-driven tools can enhance both credibility and usability for complex codebases.
- Prioritize Planning Before Refactoring: Understanding code dependencies and structure is key to successful refactoring; AI tools like OpenRewrite can automate targeted changes.
- Human Expertise Remains Essential: AI can be an effective coding assistant, but human oversight is necessary to ensure accuracy and quality.
- Experiment and Scale: Start with small, impactful AI-assisted refactoring recipes and scale up once the process is reliable, saving significant development hours over time.
Resources
- Moderne
- Justine Gehring’s LinkedIn
- OpenRewrite Documentation
- Getting to Yes by Roger Fisher and William Ury
Thanks to Our Sponsor!
Turn hours of debugging into just minutes! AppSignal is a performance monitoring and error-tracking tool designed for Ruby, Elixir, Python, Node.js, Javascript, and other frameworks.
It offers six powerful features with one simple interface, providing developers with real-time insights into the performance and health of web applications.
Keep your coding cool and error-free, one line at a time!
Use the code maintainable to get a 10% discount for your first year. Check them out!
Subscribe to Maintainable on:
Robby sits down with Justine Gehring, an AI Research Engineer at Moderne, to explore how AI tools are transforming code maintenance and scalability. They dive into the unique ways AI can support refactoring for massive and legacy codebases, from retrieval-augmented generation (RAG) to lossless semantic trees, and discuss how developers can benefit from AI-assisted planning and refactoring.
Justine shares her background transitioning from academia to industry and reflects on the essential role of reproducibility in AI, why maintainable code is often overlooked in research, and the challenges of balancing innovation with real-world reliability in software projects.
Topics Discussed
- What Makes Software Maintainable: Justine’s take on good documentation, reusable code, and ensuring new team members can quickly navigate a codebase. [00:00:42]
- Academia vs. Industry in Code Maintainability: Why reproducibility and code maintenance often diverge in research settings, and how industry standards address this gap. [00:01:14]
- From Academia to AI Engineering: Justine shares her journey and how her background in machine learning led to a career in AI-focused software maintenance. [00:04:48]
- Scaling Refactoring with OpenRewrite: An introduction to OpenRewrite, the open-source tool that facilitates large-scale code transformations, developed by Moderne. [00:12:15]
- Lossless Semantic Trees: The benefits of LSTs for detailed code analysis, retaining essential syntax and type information critical for reliable AI refactoring. [00:20:24]
- Retrieval-Augmented Generation (RAG): Justine explains RAG’s significance in allowing AI models to provide context-specific responses without heavy re-training. [00:26:00]
- Trust and Validation in AI-Generated Code: The importance of robust test cases and human oversight when leveraging AI-generated code to avoid cascading errors. [00:31:36]
- AI as a Planning Tool for Refactoring Projects: Justine’s insights on using AI as a collaborative coding assistant, offering developers suggestions for planning refactoring and maintenance tasks. [00:35:24]
- Real-World Example of Scaling Refactoring: Justine recounts a case study where Moderne used OpenRewrite to facilitate large-scale code migration involving multiple frameworks. [00:42:00]
- Advocating for AI Tools in Code Maintenance: Tips for developers interested in introducing AI tools and approaches within their teams or organizations. [00:42:31]
Key Takeaways
- AI Supports Reproducibility and Reliability: Ensuring reproducibility in AI-driven tools can enhance both credibility and usability for complex codebases.
- Prioritize Planning Before Refactoring: Understanding code dependencies and structure is key to successful refactoring; AI tools like OpenRewrite can automate targeted changes.
- Human Expertise Remains Essential: AI can be an effective coding assistant, but human oversight is necessary to ensure accuracy and quality.
- Experiment and Scale: Start with small, impactful AI-assisted refactoring recipes and scale up once the process is reliable, saving significant development hours over time.
Resources
- Moderne
- Justine Gehring’s LinkedIn
- OpenRewrite Documentation
- Getting to Yes by Roger Fisher and William Ury
Thanks to Our Sponsor!
Turn hours of debugging into just minutes! AppSignal is a performance monitoring and error-tracking tool designed for Ruby, Elixir, Python, Node.js, Javascript, and other frameworks.
It offers six powerful features with one simple interface, providing developers with real-time insights into the performance and health of web applications.
Keep your coding cool and error-free, one line at a time!
Use the code maintainable to get a 10% discount for your first year. Check them out!
Subscribe to Maintainable on:
Previous Episode

Katerina Skroumpelou: Bridging Engineering and Advocacy for Scalable Software
As a product advocate at Nx, Katerina Skroumpelou combines her engineering skills with a knack for connecting with clients. In this episode, she shares how clear documentation, scalable architectures, and a collaborative culture can transform software development for the better.
Key Takeaways
[00:01:25] Katerina’s Background: Robby and Katerina discuss her career journey, starting in engineering and recently moving into product advocacy.
[00:02:29] Characteristics of Well-Maintained Software: Katerina highlights key aspects of maintainable software—readability, scalability, and reliability.
[00:04:39] Product Advocacy at Nx: Katerina describes her unique role, bridging technical support and customer outreach to ensure clients make the most of Nx tools.
[00:07:01] White Glove Approach: The “white glove” service approach allows Katerina to dive deep into clients' codebases, offering a hands-on approach to using Nx effectively.
[00:09:52] Scalable Documentation Practices: Balancing clarity and detail, Katerina provides tips on structuring code comments and READMEs to be concise yet thorough.
[00:12:09] Managing Technical Debt: Robby and Katerina discuss the importance of keeping code up-to-date and scalable, especially in large systems with high demands.
[00:16:00] The Importance of Collaboration: Moving from solo work to team-based code reviews taught Katerina the value of a collaborative approach to maintainable code.
[00:19:15] Nx’s Monorepo Solution: How Nx provides cache and build tools to optimize mono-repo performance, boosting both speed and organization within projects.
[00:22:12] Nx Cloud and CI: Katerina discusses Nx Cloud’s role in enhancing CI workflows by allowing parallel tasks and cache sharing across teams.
[00:24:07] When to Consider Monorepos: Katerina explains the benefits of monorepos for organizing codebases and improving scalability.
[00:26:37] AI Tools in Development: Katerina shares her enthusiasm for new AI tools like StackBlitz’s Bolt and their potential to streamline app development.
[00:29:00] Finding Motivation at Work: Advice for developers who feel stuck or unmotivated in their current roles and ways to reconnect with the work they enjoy.
Resources Mentioned
Books:
- The Three-Body Problem by Cixin Liu
- Cryptonomicon by Neal Stephenson
- Slaughterhouse-Five by Kurt Vonnegut
Katerina's social profiles:
Thanks to Our Sponsor!
Turn hours of debugging into just minutes! AppSignal is a performance monitoring and error-tracking tool designed for Ruby, Elixir, Python, Node.js, Javascript, and other frameworks.
It offers six powerful features with one simple interface, providing developers with real-time insights into the performance and health of web applications.
Keep your coding cool and error-free, one line at a time!
Use the code maintainable to get a 10% discount for your first year. Check them out!
Subscribe to Maintainable on:
Or search "Maintainable" wherever you stream your podcasts.
Keep up to date with the Maintainable Podcast by joining the newsletter.
Next Episode

Gulcin Yildirim Jelinek: Maintaining Postgres for Modern Workloads
In this episode of Maintainable, Robby speaks with Gulcin Yildirim Jelinek, a Staff Database Engineer at Xata. Joining from Prague, Czech Republic, Gulcin discusses her experiences working with legacy databases, the evolution of Postgres, and her passion for building accessible tech communities.
Gulcin shares practical insights into modern database management, including the rise of automation tools like YAML and Pgroll, as well as how extensions like pgvector are unlocking new possibilities for Postgres users. Her work with the Prague PostgreSQL Meetup and Diva Conference highlights her dedication to fostering inclusive and welcoming tech communities.
Episode Highlights
- [00:05:32] What Makes Databases Maintainable? Gulcin reflects on documentation, onboarding, and usability.
- [00:15:10] From Legacy to Modern: Challenges with legacy systems in hospitals and banks and the transition to Postgres.
- [00:22:18] Pgvector and Vector Search: Introducing Postgres extensions to enable vector-based queries.
- [00:28:12] Scaling Automation with YAML: How YAML transformed database management and DevOps workflows.
- [00:33:00] Fostering Community and Accessibility: Gulcin’s work with Postgres Europe and Diva Conference.
- [00:36:15] Mythology with a Twist: Book recommendations featuring Circe and Elektra.
Key Takeaways
- Documentation Matters: A well-documented system ensures effective onboarding for both developers and end-users.
- Automation is Key: Tools like YAML and Pgroll streamline database operations, minimizing downtime and manual intervention.
- Inclusivity in Tech: Conferences and communities should prioritize accessibility, from catering to translation services.
- Vector Databases in Postgres: Pgvector is making Postgres a viable option for AI-driven workloads, eliminating the need for separate systems.
Resources Mentioned
- Xata Blog
- Pgroll
- Prague PostgreSQL Meetup
- Diva: Dive into AI Conference
- Kadin Yazilimci (Women Developers of Turkey)
- Circe by Madeline Miller
- Elektra by Jennifer Saint
Connect with Gulcin
Book Recommendations:
Links:
- Kadin Yazilimci (Women Developers of Turkey)
- Diva: Dive into AI Conference
- Prague PostgreSQL Meetup
- On X
- Xata Blog
- Pgroll
Thanks to Our Sponsor!
Turn hours of debugging into just minutes! AppSignal is a performance monitoring and error-tracking tool designed for Ruby, Elixir, Python, Node.js, Javascript, and other frameworks.
It offers six powerful features with one simple interface, providing developers with real-time insights into the performance and health of web applications.
Keep your coding cool and error-free, one line at a time!
Use the code maintainable to get a 10% discount for your first year. Check them out!
Subscribe to Maintainable on:
Or search "Maintainable" wherever you stream your podcasts.
Keep up to date with the Maintainable Podcast by joining the newsletter.
If you like this episode you’ll love
Episode Comments
Generate a badge
Get a badge for your website that links back to this episode
<a href="https://goodpods.com/podcasts/maintainable-333012/justine-gehring-refactoring-software-at-scale-with-ai-78267736"> <img src="https://storage.googleapis.com/goodpods-images-bucket/badges/generic-badge-1.svg" alt="listen to justine gehring: refactoring software at scale with ai on goodpods" style="width: 225px" /> </a>
Copy