30s Ad: $25 - $30
60s Ad: $29 - $35
CPM Category: Technology
Different podcast categories command different CPM (cost per mille) rates based on advertiser demand and audience value.
Do you feel like you're hitting a wall with your existing software projects? Are you curious to hear how other people are navigating this? You're not alone.
On the Maintainable Software Podcast, Robby speaks with seasoned practitioners who have overcome the technical and cultural problems often associated with software development.
Our guests will share stories in each episode and outline tangible, real-world approaches to software challenges. In turn, you'll uncover new ways of thinking about how to improve your software project's maintainability.
Do you feel like you're hitting a wall with your existing software projects? Are you curious to hear how other people are navigating this? You're not alone.
On the Maintainable Software Podcast, Robby speaks with seasoned practitioners who have overcome the technical and cultural problems often associated with software development.
Our guests will share stories in each episode and outline tangible, real-world approaches to software challenges. In turn, you'll uncover new ways of thinking about how to improve your software project's maintainability.
Producers, Hosts, and Production Team
Searching
Searching for producer information... This may take a moment.
No producer information available yet. Click "Find producers" to search for the production team.
Emails, Phones, and Addresses
Contact Page Emails
Emails listed specifically on the website's official contact page.
Emails
Phone Numbers
No phone numbers found.
Addresses
No addresses found.
Form
No form detected on this page.
General Website Emails
Emails found on general website pages (e.g., about, info), not the main contact page.
No website emails found.
Externally Sourced Emails
Emails discovered using automated web scraping across the internet.
No external emails found.
RSS Emails
Email addresses extracted directly from the website's or podcast's RSS feed(s).
Here's a quick summary of the last 5 episodes on Maintainable.
Hosts
Robby
Previous Guests
Freedom Dumlao
Freedom Dumlao is the Chief Technology Officer (CTO) at Vestmark, where he has two decades of experience in supporting financial systems. He has a strong background in software development, particularly in managing large-scale systems, including a Java monolith that oversees $1.6 trillion in assets. Freedom is known for his innovative approach to software architecture, having led a significant project that consolidated over 70 Java microservices into a single Ruby on Rails application, resulting in increased velocity and ownership among developers. He emphasizes the importance of respecting legacy code and the strategic management of technical debt.
Freedom Dumlao is the Chief Technology Officer (CTO) at Vestmark, where he has two decades of experience in supporting financial systems. He has a strong background in software development, particularly in managing large-scale systems, including a Java monolith that oversees $1.6 trillion in assets. Freedom is known for his innovative approach to software architecture, having led a significant project that consolidated over 70 Java microservices into a single Ruby on Rails application, resulting in increased velocity and ownership among developers. He emphasizes the importance of respecting legacy code and the strategic management of technical debt.
Mercedes Bernard
Mercedes Bernard is a Staff Software Engineer at Kit with over a decade of experience in consulting. She specializes in working with legacy codebases and managing technical debt. Mercedes is known for her thoughtful and practical approach to software development, emphasizing the importance of maintainability and creating inclusive code that is friendly to early-career developers. Her expertise includes auditing and stabilizing older systems, advocating for maintenance work, and navigating incomplete documentation and competing patterns in codebases.
Mercedes Bernard is a Staff Software Engineer at Kit with over a decade of experience in consulting. She specializes in working with legacy codebases and managing technical debt. Mercedes is known for her thoughtful and practical approach to software development, emphasizing the importance of maintainability and creating inclusive code that is friendly to early-career developers. Her expertise includes auditing and stabilizing older systems, advocating for maintenance work, and navigating incomplete documentation and competing patterns in codebases.
Evan Phoenix
Evan Phoenix is the CEO of Miren, a company focused on creating maintainable software solutions. He is known for his insights into software development practices, particularly the importance of clarity in code and the implications of technical decisions on maintainability. Evan has a background in software engineering and has contributed to discussions on the intersection of programming and artistry, emphasizing the need for developers to learn from various disciplines. He is also an advocate for hiring junior developers to foster growth in the tech industry.
Evan Phoenix is the CEO of Miren, a company focused on creating maintainable software solutions. He is known for his insights into software development practices, particularly the importance of clarity in code and the implications of technical decisions on maintainability. Evan has a background in software engineering and has contributed to discussions on the intersection of programming and artistry, emphasizing the need for developers to learn from various disciplines. He is also an advocate for hiring junior developers to foster growth in the tech industry.
Chris Salvato
Chris Salvato is a Senior Staff Engineer at Shopify, known for his expertise in software development and maintainability. He emphasizes the importance of understanding the problem space before diving into coding solutions. With a focus on team collaboration and effective communication, Chris advocates for mapping out domain boundaries and addressing underlying issues in legacy codebases. His approach involves engaging with various stakeholders to uncover hidden friction points and improve overall productivity. Chris is also interested in the integration of AI-driven coding assistants and how they can enhance development processes when used in well-organized codebases.
Chris Salvato is a Senior Staff Engineer at Shopify, known for his expertise in software development and maintainability. He emphasizes the importance of understanding the problem space before diving into coding solutions. With a focus on team collaboration and effective communication, Chris advocates for mapping out domain boundaries and addressing underlying issues in legacy codebases. His approach involves engaging with various stakeholders to uncover hidden friction points and improve overall productivity. Chris is also interested in the integration of AI-driven coding assistants and how they can enhance development processes when used in well-organized codebases.
Heimir Thor Sverrisson
Heimir Thor Sverrisson is a seasoned software engineer with over four decades of experience in the industry. He has a deep understanding of software architecture and its critical role in long-term maintainability. Throughout his career, Heimir has mentored engineers and tackled various technical challenges, including addressing technical debt and solving large-scale performance issues. He has worked at MojoTech, where he emphasizes the importance of code reviews and team development. Additionally, Heimir is involved in volunteer efforts to design radiation-tolerant software for satellites, showcasing his commitment to both technology and community service.
Heimir Thor Sverrisson is a seasoned software engineer with over four decades of experience in the industry. He has a deep understanding of software architecture and its critical role in long-term maintainability. Throughout his career, Heimir has mentored engineers and tackled various technical challenges, including addressing technical debt and solving large-scale performance issues. He has worked at MojoTech, where he emphasizes the importance of code reviews and team development. Additionally, Heimir is involved in volunteer efforts to design radiation-tolerant software for satellites, showcasing his commitment to both technology and community service.
Topics Discussed
Java services
focus
software maintenance
legacy code
technical debt
microservices
Ruby on Rails
AI in software development
legacy codebases
team culture
maintainability
early-career developers
auditing systems
developer experiences
architecture patterns
performance regressions
infrastructure load
clarity in code
monolith
testing
open source
junior developers
developer paradise
problem space
software maintainability
code organization
AI coding assistants
domain logic
team collaboration
legacy codebase
software architecture
performance problems
code reviews
consulting
radiation-tolerant software
satellites
Freedom Dumlao: What 70 Java Services Taught Me About Focus
Hosts
Hosts of this podcast episode
Robby
Guests
Guests of this podcast episode
Freedom Dumlao
Keywords
Keywords of this podcast episode
Java servicesfocussoftware maintenancelegacy codetechnical debtmicroservicesRuby on RailsAI in software development
Freedom Dumlao (CTO at Vestmark) joins Robby to explore what it means to maintain software at scale—and why teams sometimes need to unlearn the hype.
With two decades of experience supporting financial systems, Freedom shares how his team manages a Java monolith that oversees $1.6 trillion in assets. But what’s most surprising? His story of how a team working on 70+ microservices rebuilt their platform as a single Ruby on Rails monolith—and started shipping faster than ever before.
Episode Highlights
[00:02:00] Why Respecting Legacy Code Matters Freedom reflects on a lesson he learned at Amazon: "Respect what came before." He discusses the value of honoring the decisions of past developers—especially when their context is unknown.
[00:05:00] How Tests Help (and Where They Don’t) Freedom discusses how tests can clarify system behavior but not always intent—especially when market logic or business-specific rules come into play.
[00:07:00] The Value of Understudies in Engineering Freedom shares how his team intentionally pairs subject matter experts with understudies to reduce risk and transfer knowledge.
[00:09:30] Rethinking Technical Debt He challenges the fear-based framing of technical debt, comparing it instead to a strategic mortgage.
[00:17:00] From 70 Services to 1 Monolith At FlexCar, Freedom led an unconventional rewrite—consolidating 70 Java microservices into a single Rails app. The result? A dramatic increase in velocity and ownership.
[00:25:00] Choosing Rails Over Phoenix, Laravel, and Django After evaluating multiple frameworks, Rails' cohesiveness, Hotwire, and quick developer ramp-up made it the clear winner—even converting skeptical team members.
[00:31:00] How Rails Changed Team Dynamics By reducing dependency handoffs, the new Rails app enabled solo engineers to own complete features. The impact? Faster delivery and more engaged developers.
[00:36:30] Why Rails Still Makes Sense at a 20-Year-Old Company Even with a large Java codebase, Vestmark uses Rails for rapid prototyping and new product development.
[00:41:00] Using AI to Navigate Legacy Systems Freedom explains how his team uses retrieval-augmented generation (RAG) to surface relevant code—but also the limitations of AI on older or less common codebases.
[00:51:00] Seek Feedback, Not Consensus Freedom explains why aiming for alignment slows teams down—and how decision-makers can be inclusive without waiting for full agreement.
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!
Freedom Dumlao (CTO at Vestmark) joins Robby to explore what it means to maintain software at scale—and why teams sometimes need to unlearn the hype.
With two decades of experience supporting financial systems, Freedom shares how his team manages a Java monolith that oversees $1.6 trillion in assets. But what’s most surprising? His story of how a team working on 70+ microservices rebuilt their platform as a single Ruby on Rails monolith—and started shipping faster than ever before.
Episode Highlights
[00:02:00] Why Respecting Legacy Code Matters Freedom reflects on a lesson he learned at Amazon: "Respect what came before." He discusses the value of honoring the decisions of past developers—especially when their context is unknown.
[00:05:00] How Tests Help (and Where They Don’t) Freedom discusses how tests can clarify system behavior but not always intent—especially when market logic or business-specific rules come into play.
[00:07:00] The Value of Understudies in Engineering Freedom shares how his team intentionally pairs subject matter experts with understudies to reduce risk and transfer knowledge.
[00:09:30] Rethinking Technical Debt He challenges the fear-based framing of technical debt, comparing it instead to a strategic mortgage.
[00:17:00] From 70 Services to 1 Monolith At FlexCar, Freedom led an unconventional rewrite—consolidating 70 Java microservices into a single Rails app. The result? A dramatic increase in velocity and ownership.
[00:25:00] Choosing Rails Over Phoenix, Laravel, and Django After evaluating multiple frameworks, Rails' cohesiveness, Hotwire, and quick developer ramp-up made it the clear winner—even converting skeptical team members.
[00:31:00] How Rails Changed Team Dynamics By reducing dependency handoffs, the new Rails app enabled solo engineers to own complete features. The impact? Faster delivery and more engaged developers.
[00:36:30] Why Rails Still Makes Sense at a 20-Year-Old Company Even with a large Java codebase, Vestmark uses Rails for rapid prototyping and new product development.
[00:41:00] Using AI to Navigate Legacy Systems Freedom explains how his team uses retrieval-augmented generation (RAG) to surface relevant code—but also the limitations of AI on older or less common codebases.
[00:51:00] Seek Feedback, Not Consensus Freedom explains why aiming for alignment slows teams down—and how decision-makers can be inclusive without waiting for full agreement.
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!
Mercedes Bernard, Staff Software Engineer at Kit, joins Robby to talk about what it really means to write code that lasts—and who it should be written for.
In this episode of Maintainable, Mercedes shares a thoughtful and practical perspective on working with legacy codebases, managing technical debt, and creating a team culture that values maintainability without fear or shame. Her guiding principle? Well-maintained software is friendly software—code that is understandable and approachable, especially for early-career developers.
Together, they discuss how to audit and stabilize older systems, avoid full rewrites, and create consistent developer experiences in large applications. Mercedes reflects on her decade in consulting and how that shaped her approach to navigating incomplete documentation, missing historical context, and multiple competing patterns in a codebase. She breaks down different types of technical debt, explains why not all of it is inherently bad, and offers strategies for advocating for maintenance work across engineering and product teams.
The conversation also touches on architecture patterns like job fan-out, measuring performance regressions, reducing infrastructure load, and building momentum for improvements even when leadership isn’t actively prioritizing them.
If you’ve ever felt overwhelmed by a messy project or struggled to justify maintenance work, this episode will leave you with a fresh mindset—and a few practical tactics—for making code more sustainable and inclusive.
Episode Highlights
[00:01:08] Defining Well-Maintained Software Mercedes explains her top metric: software that feels friendly, especially to early-career developers navigating the codebase for the first time.
[00:03:00] What Friendly Code Actually Looks Like She shares why consistency, discoverability, and light documentation (like class comments or UML snippets) can make a huge difference.
[00:05:00] Assessing Code Like a House Tour Mercedes introduces her metaphor of giving a house tour to evaluate code: does everything feel like it’s in the right place—or is the stove in the cabinet?
[00:06:53] Consulting Mindset: Being a Guest in the Codebase With a decade of consulting experience, Mercedes shares how she navigates legacy systems when historical context is long gone.
[00:10:40] Stabilizing a Startup’s Tangled Architecture She walks through an in-depth case study where she helped a client with multiple abandoned services get back to stability—without a rewrite.
[00:17:00] The Power of a One-Line Fix Mercedes shares how a missing check caused a job to fan out 30 million no-op background jobs a day—and how one line of code reduced that by 75%.
[00:23:40] Why State Checks Belong Everywhere She explains how defense-in-depth patterns help avoid job queue flooding and protect system resources early in the fan-out process.
[00:24:59] Reframing Technical Debt Not all debt is bad. Mercedes outlines three types—intentional, evolutionary, and time-based—and how to approach each one differently.
[00:28:00] Why Teams Fall Behind Without Realizing It Mercedes and Robby talk about communication gaps between engineers and product stakeholders—and why it’s not always clear when tech debt starts piling up.
[00:34:00] Quantifying Developer Friction Mercedes recommends expressing technical debt in terms of lost time, slow features, and increased cost rather than vague frustrations.
[00:42:00] Getting Momentum Without Permission Her advice to individual contributors: start small. Break down your frustrations into bite-sized RFCs or tickets and show the impact.
[00:45:40] Letting the Team Drive Standards Mercedes encourages team-led conventions over top-down declarations, and explains why having any decision is better than indecision.
[00:47:54] Recommended Reading She shares a surprising favorite: The Secret Life of Groceries, a systems-thinking deep dive into the grocery industry by Benjamin Lorr.
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!
Mercedes Bernard, Staff Software Engineer at Kit, joins Robby to talk about what it really means to write code that lasts—and who it should be written for.
In this episode of Maintainable, Mercedes shares a thoughtful and practical perspective on working with legacy codebases, managing technical debt, and creating a team culture that values maintainability without fear or shame. Her guiding principle? Well-maintained software is friendly software—code that is understandable and approachable, especially for early-career developers.
Together, they discuss how to audit and stabilize older systems, avoid full rewrites, and create consistent developer experiences in large applications. Mercedes reflects on her decade in consulting and how that shaped her approach to navigating incomplete documentation, missing historical context, and multiple competing patterns in a codebase. She breaks down different types of technical debt, explains why not all of it is inherently bad, and offers strategies for advocating for maintenance work across engineering and product teams.
The conversation also touches on architecture patterns like job fan-out, measuring performance regressions, reducing infrastructure load, and building momentum for improvements even when leadership isn’t actively prioritizing them.
If you’ve ever felt overwhelmed by a messy project or struggled to justify maintenance work, this episode will leave you with a fresh mindset—and a few practical tactics—for making code more sustainable and inclusive.
Episode Highlights
[00:01:08] Defining Well-Maintained Software Mercedes explains her top metric: software that feels friendly, especially to early-career developers navigating the codebase for the first time.
[00:03:00] What Friendly Code Actually Looks Like She shares why consistency, discoverability, and light documentation (like class comments or UML snippets) can make a huge difference.
[00:05:00] Assessing Code Like a House Tour Mercedes introduces her metaphor of giving a house tour to evaluate code: does everything feel like it’s in the right place—or is the stove in the cabinet?
[00:06:53] Consulting Mindset: Being a Guest in the Codebase With a decade of consulting experience, Mercedes shares how she navigates legacy systems when historical context is long gone.
[00:10:40] Stabilizing a Startup’s Tangled Architecture She walks through an in-depth case study where she helped a client with multiple abandoned services get back to stability—without a rewrite.
[00:17:00] The Power of a One-Line Fix Mercedes shares how a missing check caused a job to fan out 30 million no-op background jobs a day—and how one line of code reduced that by 75%.
[00:23:40] Why State Checks Belong Everywhere She explains how defense-in-depth patterns help avoid job queue flooding and protect system resources early in the fan-out process.
[00:24:59] Reframing Technical Debt Not all debt is bad. Mercedes outlines three types—intentional, evolutionary, and time-based—and how to approach each one differently.
[00:28:00] Why Teams Fall Behind Without Realizing It Mercedes and Robby talk about communication gaps between engineers and product stakeholders—and why it’s not always clear when tech debt starts piling up.
[00:34:00] Quantifying Developer Friction Mercedes recommends expressing technical debt in terms of lost time, slow features, and increased cost rather than vague frustrations.
[00:42:00] Getting Momentum Without Permission Her advice to individual contributors: start small. Break down your frustrations into bite-sized RFCs or tickets and show the impact.
[00:45:40] Letting the Team Drive Standards Mercedes encourages team-led conventions over top-down declarations, and explains why having any decision is better than indecision.
[00:47:54] Recommended Reading She shares a surprising favorite: The Secret Life of Groceries, a systems-thinking deep dive into the grocery industry by Benjamin Lorr.
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!
maintainabilityclarity in codemonolithtechnical debttestingopen sourcejunior developers
Evan Phoenix (@evanphx), CEO of Miren, joins Robby to explore the subtle but powerful difference between writing code that works and writing code that explains itself. They discuss the role of clarity in maintainable systems, why splitting a monolith can backfire, and what developers can learn from artists and tradespeople alike.
Episode Highlights
[00:01:30] What Makes Software Maintainable? Evan defines maintainability as how easily a newcomer can make a change with minimal context.
[00:02:30] Why Business Logic Should Be Obvious A discussion on domain knowledge leakage and abstracting rules like “can we sell today?”
[00:05:00] Programming 'Mouthfeel' and the Trap of Prefactoring Evan explains why prematurely optimizing for reuse can lead to unnecessary complexity.
[00:07:00] When to Extract Logic: The Copy/Paste Signal A practical approach to identifying reusable components by spotting repeated code.
[00:08:00] Technical Debt as a Reflection of Cognitive Load Why forgetting your own code doesn’t automatically mean it’s “bad” code.
[00:10:30] Testing as Emotional Insurance How writing even basic checks can build team confidence—especially when test coverage is weak.
[00:13:00] Daily Integration Tests: A Low-Pressure Safety Net Using nightly integration runs to catch invisible bugs in complex systems.
[00:14:00] Confidence > 100% Test Coverage Why fast feedback loops matter more than aiming for exhaustive tests.
[00:20:00] Splitting the Monolith: A Cautionary Tale Evan shares how decoupling apps without decoupling the database created chaos.
[00:22:00] Shared Models, Split Repos, and Hidden Pitfalls The unexpected bugs that emerge when two apps maintain duplicate models and validations.
[00:23:00] Better Alternatives to Splitting Codebases How separate deployments and tooling can mimic team separation without architectural debt.
[00:28:00] The Hidden Cost of Diverging Business Domains When apps evolve independently, business logic begins to drift—undermining consistency.
[00:29:00] Building Miren and Staying Motivated How Evan approaches early-stage product development with curiosity and detachment.
[00:36:00] How to Know When Your Open Source Project Is “Done” Reframing “dead” projects as complete—and why stability is often a feature.
[01:01:00] Signals for Trusting Open Source Dependencies Evan’s mental checklist for evaluating if a library is worth adopting.
[01:07:00] The Importance of Hiring Junior Developers Why investing in beginners is crucial for the future of our industry.
[01:08:00] Book Recommendations Evan recommends The Inner Game of Tennis and Snow Crash.
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!
Evan Phoenix (@evanphx), CEO of Miren, joins Robby to explore the subtle but powerful difference between writing code that works and writing code that explains itself. They discuss the role of clarity in maintainable systems, why splitting a monolith can backfire, and what developers can learn from artists and tradespeople alike.
Episode Highlights
[00:01:30] What Makes Software Maintainable? Evan defines maintainability as how easily a newcomer can make a change with minimal context.
[00:02:30] Why Business Logic Should Be Obvious A discussion on domain knowledge leakage and abstracting rules like “can we sell today?”
[00:05:00] Programming 'Mouthfeel' and the Trap of Prefactoring Evan explains why prematurely optimizing for reuse can lead to unnecessary complexity.
[00:07:00] When to Extract Logic: The Copy/Paste Signal A practical approach to identifying reusable components by spotting repeated code.
[00:08:00] Technical Debt as a Reflection of Cognitive Load Why forgetting your own code doesn’t automatically mean it’s “bad” code.
[00:10:30] Testing as Emotional Insurance How writing even basic checks can build team confidence—especially when test coverage is weak.
[00:13:00] Daily Integration Tests: A Low-Pressure Safety Net Using nightly integration runs to catch invisible bugs in complex systems.
[00:14:00] Confidence > 100% Test Coverage Why fast feedback loops matter more than aiming for exhaustive tests.
[00:20:00] Splitting the Monolith: A Cautionary Tale Evan shares how decoupling apps without decoupling the database created chaos.
[00:22:00] Shared Models, Split Repos, and Hidden Pitfalls The unexpected bugs that emerge when two apps maintain duplicate models and validations.
[00:23:00] Better Alternatives to Splitting Codebases How separate deployments and tooling can mimic team separation without architectural debt.
[00:28:00] The Hidden Cost of Diverging Business Domains When apps evolve independently, business logic begins to drift—undermining consistency.
[00:29:00] Building Miren and Staying Motivated How Evan approaches early-stage product development with curiosity and detachment.
[00:36:00] How to Know When Your Open Source Project Is “Done” Reframing “dead” projects as complete—and why stability is often a feature.
[01:01:00] Signals for Trusting Open Source Dependencies Evan’s mental checklist for evaluating if a library is worth adopting.
[01:07:00] The Importance of Hiring Junior Developers Why investing in beginners is crucial for the future of our industry.
[01:08:00] Book Recommendations Evan recommends The Inner Game of Tennis and Snow Crash.
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!
Software isn’t always about rapid iteration. Sometimes, the real challenge lies in carefully assessing the existing environment. Chris Salvato, a Senior Staff Engineer at Shopify, believes that spending time in the “problem space” is vital for any long-lived application. Rather than diving immediately into controllers and tests, he begins by talking to everyone who interacts with the code—engineers, product owners, even directors who oversee strategy. This approach reveals hidden friction points that rarely come to light in larger, more formal meetings.
When code grows organically over years, a range of issues emerges. Small workarounds might accumulate, new features can overlap with older ones, and domain boundaries become murky. Chris suggests mapping these overlaps through in-depth conversations so the team can pinpoint what genuinely obstructs productivity. He emphasizes that many developers may focus on surface fixes—updating a library here, renaming a class there—without acknowledging underlying confusion in the domain model itself. Removing extraneous code, clarifying domain entities, and aligning the team’s understanding can drastically reduce missteps.
An interesting aspect of Chris’s method is his view of “developer paradise.” A codebase reaches this state when new contributors can navigate it with minimal help. Instead of sifting through endless documentation or complex wikis, they can figure out how classes, modules, and services connect simply by reading the code. Chris notes that achieving this often involves pruning unnecessary files or responsibilities. The end result is software that “self-documents,” easing onboarding and reducing reliance on external explanations.
The conversation also touches on how large language models (LLMs) fit into the puzzle. Many organizations see AI-driven coding assistants as a way to accelerate development. Chris agrees they have potential, yet highlights a critical requirement: the code must be well-organized. If the system is sprawling and inconsistent, these tools may only add confusion. Lean, carefully segmented projects let both people and AI more effectively track what’s happening under the hood.
Reducing code bloat leads naturally to discussions about prioritizing. Chris encourages teams not to tackle every annoyance at once. He references the importance of framing a unifying question, such as “Which feature or aspect of the app causes the greatest confusion among team members?” Spending too little time on this question, he warns, results in half-hearted improvements that eventually revert back to chaos. By contrast, devoting a few dedicated sprints—guided by thoughtful one-on-one interviews—can create lasting changes that set the entire codebase on a better trajectory.
One intriguing theme is how personal growth ties into organizational impact. Chris acknowledges that developers often switch companies every few years, which might discourage them from investing deeply in a legacy codebase they won’t maintain long-term. Yet taking the lead in clarifying domain logic or reorganizing outdated sections is a skill-building opportunity. Future employers also notice engineers who can transform messy architectures into clear, future-friendly systems. In that sense, there’s a mutual benefit: the company gains maintainable software, while the developer acquires project leadership experience.
The idea of “sitting in the problem space” resonates throughout Chris’s remarks. He encourages engineers to resist the reflex to propose solutions too early. Instead, they should keep asking why a particular annoyance or bug persists. Is it a symptom of a misaligned feature set, or is it rooted in limited domain knowledge among contributors? By reframing those frustrations as questions about responsibilities, the team often discovers simpler fixes than a heavy-handed rewrite. Conversely, where deeper rewrites are indeed warranted, Chris believes it’s best for the team to see that direction as unanimous rather than dictated from the top.
Long-standing software also carries emotional baggage. People might have strong feelings about how something “ought” to be done, or they may have encountered recurring hurdles. Chris advocates using one-on-one conversations to let these concerns surface naturally, free from the pressure of group settings where quieter voices might hold back. Once everyone’s perspective is heard, common threads become clearer, enabling the team to converge on a smaller list of genuinely important tasks. When the group reconvenes, the sense of shared purpose helps unify efforts in a way that scattered brainstorming rarely achieves.
The conversation also highlights resourceful domain modeling, which draws some inspiration from the microservices world but doesn’t necessarily require the code to be broken up into tiny services. Instead, Chris suggests that well-defined boundaries within a monolith can deliver comparable clarity—if the team respects those boundaries. He points to examples like Stripe or reading materials on Domain-Driven Design to show how cohesive object structures can help avoid big architectural hurdles.
His closing thoughts revolve around long-term sustainability. Even if an engineer isn’t planning to remain on a project indefinitely, they can leave a meaningful legacy by clarifying crucial parts of the code, championing simpler naming conventions, and encouraging more open dialogue among team members. The impact, Chris notes, goes beyond the immediate project: every person who touches that code later benefits from these improvements, often for years to come.
Time-Stamped Highlights
[00:00:00] Welcome and Well-Maintained Software: Robby opens by asking Chris about foundational traits of dependable, long-lasting codebases.
[00:00:58] Defining “Well Maintained”: They explore how clear conventions and minimal bloat not only reduce confusion but also prolong the life of a system.
[00:01:28] LLMs and Context Windows: Chris delves into why large codebases challenge AI-driven coding assistants—and how trim, well-modeled systems sidestep this pitfall.
[00:02:00] Joining Shopify and Facing Legacy Systems: Chris recalls his early days at Shopify, realizing that older Rails apps demanded a more structured method of discovery.
[00:03:08] Concept of “Developer Paradise”: He shares his perspective on how removing unneeded documentation and extraneous complexity makes daily development more enjoyable.
[00:05:32] Framework for Tackling Old Code: Chris outlines his signature approach: booking numerous 1-on-1 meetings to gather honest feedback from stakeholders before touching the code.
[00:07:15] Finding High-Leverage Problems: Robby and Chris discuss distilling this feedback into a shortlist of real bottlenecks that the team can tackle together.
[00:15:00] From Problem Space to Solutions: They spotlight the value of framing a single unifying question—like “How do we reduce confusion?”—to keep everyone working toward the same outcome.
[00:20:07] Balancing Personal Goals and Company Needs: Chris underlines how aligning individual ambitions with business objectives fosters commitment to sustained improvement.
[00:32:00] Long-Term Value and Leadership: Closing out, Robby and Chris consider how short-tenure engineers can leave a lasting impact by helping a team focus on its biggest pain points.
Jellyis the simplest, most affordable way to deal with your “contact@...” emails.
Tired of sharing an email login, or CCing colleagues to loop them into conversations? Terrified by the dizzying total cost of big-name “customer support” tools? Jelly is the answer. Whether it's for customer support, community organizing, or even managing band emails, Jelly helps your team share an email inbox and manage your conversations in a simple, elegant way. Use the "I got this” feature to communicate responsibility and private comments for internal discussions. Jelly is perfect for small teams — because it was built by a small team. And Jelly is actually affordable —team-based pricing means everyone can pitch in with your team’s conversations with customers, clients, and beyond.
Software isn’t always about rapid iteration. Sometimes, the real challenge lies in carefully assessing the existing environment. Chris Salvato, a Senior Staff Engineer at Shopify, believes that spending time in the “problem space” is vital for any long-lived application. Rather than diving immediately into controllers and tests, he begins by talking to everyone who interacts with the code—engineers, product owners, even directors who oversee strategy. This approach reveals hidden friction points that rarely come to light in larger, more formal meetings.
When code grows organically over years, a range of issues emerges. Small workarounds might accumulate, new features can overlap with older ones, and domain boundaries become murky. Chris suggests mapping these overlaps through in-depth conversations so the team can pinpoint what genuinely obstructs productivity. He emphasizes that many developers may focus on surface fixes—updating a library here, renaming a class there—without acknowledging underlying confusion in the domain model itself. Removing extraneous code, clarifying domain entities, and aligning the team’s understanding can drastically reduce missteps.
An interesting aspect of Chris’s method is his view of “developer paradise.” A codebase reaches this state when new contributors can navigate it with minimal help. Instead of sifting through endless documentation or complex wikis, they can figure out how classes, modules, and services connect simply by reading the code. Chris notes that achieving this often involves pruning unnecessary files or responsibilities. The end result is software that “self-documents,” easing onboarding and reducing reliance on external explanations.
The conversation also touches on how large language models (LLMs) fit into the puzzle. Many organizations see AI-driven coding assistants as a way to accelerate development. Chris agrees they have potential, yet highlights a critical requirement: the code must be well-organized. If the system is sprawling and inconsistent, these tools may only add confusion. Lean, carefully segmented projects let both people and AI more effectively track what’s happening under the hood.
Reducing code bloat leads naturally to discussions about prioritizing. Chris encourages teams not to tackle every annoyance at once. He references the importance of framing a unifying question, such as “Which feature or aspect of the app causes the greatest confusion among team members?” Spending too little time on this question, he warns, results in half-hearted improvements that eventually revert back to chaos. By contrast, devoting a few dedicated sprints—guided by thoughtful one-on-one interviews—can create lasting changes that set the entire codebase on a better trajectory.
One intriguing theme is how personal growth ties into organizational impact. Chris acknowledges that developers often switch companies every few years, which might discourage them from investing deeply in a legacy codebase they won’t maintain long-term. Yet taking the lead in clarifying domain logic or reorganizing outdated sections is a skill-building opportunity. Future employers also notice engineers who can transform messy architectures into clear, future-friendly systems. In that sense, there’s a mutual benefit: the company gains maintainable software, while the developer acquires project leadership experience.
The idea of “sitting in the problem space” resonates throughout Chris’s remarks. He encourages engineers to resist the reflex to propose solutions too early. Instead, they should keep asking why a particular annoyance or bug persists. Is it a symptom of a misaligned feature set, or is it rooted in limited domain knowledge among contributors? By reframing those frustrations as questions about responsibilities, the team often discovers simpler fixes than a heavy-handed rewrite. Conversely, where deeper rewrites are indeed warranted, Chris believes it’s best for the team to see that direction as unanimous rather than dictated from the top.
Long-standing software also carries emotional baggage. People might have strong feelings about how something “ought” to be done, or they may have encountered recurring hurdles. Chris advocates using one-on-one conversations to let these concerns surface naturally, free from the pressure of group settings where quieter voices might hold back. Once everyone’s perspective is heard, common threads become clearer, enabling the team to converge on a smaller list of genuinely important tasks. When the group reconvenes, the sense of shared purpose helps unify efforts in a way that scattered brainstorming rarely achieves.
The conversation also highlights resourceful domain modeling, which draws some inspiration from the microservices world but doesn’t necessarily require the code to be broken up into tiny services. Instead, Chris suggests that well-defined boundaries within a monolith can deliver comparable clarity—if the team respects those boundaries. He points to examples like Stripe or reading materials on Domain-Driven Design to show how cohesive object structures can help avoid big architectural hurdles.
His closing thoughts revolve around long-term sustainability. Even if an engineer isn’t planning to remain on a project indefinitely, they can leave a meaningful legacy by clarifying crucial parts of the code, championing simpler naming conventions, and encouraging more open dialogue among team members. The impact, Chris notes, goes beyond the immediate project: every person who touches that code later benefits from these improvements, often for years to come.
Time-Stamped Highlights
[00:00:00] Welcome and Well-Maintained Software: Robby opens by asking Chris about foundational traits of dependable, long-lasting codebases.
[00:00:58] Defining “Well Maintained”: They explore how clear conventions and minimal bloat not only reduce confusion but also prolong the life of a system.
[00:01:28] LLMs and Context Windows: Chris delves into why large codebases challenge AI-driven coding assistants—and how trim, well-modeled systems sidestep this pitfall.
[00:02:00] Joining Shopify and Facing Legacy Systems: Chris recalls his early days at Shopify, realizing that older Rails apps demanded a more structured method of discovery.
[00:03:08] Concept of “Developer Paradise”: He shares his perspective on how removing unneeded documentation and extraneous complexity makes daily development more enjoyable.
[00:05:32] Framework for Tackling Old Code: Chris outlines his signature approach: booking numerous 1-on-1 meetings to gather honest feedback from stakeholders before touching the code.
[00:07:15] Finding High-Leverage Problems: Robby and Chris discuss distilling this feedback into a shortlist of real bottlenecks that the team can tackle together.
[00:15:00] From Problem Space to Solutions: They spotlight the value of framing a single unifying question—like “How do we reduce confusion?”—to keep everyone working toward the same outcome.
[00:20:07] Balancing Personal Goals and Company Needs: Chris underlines how aligning individual ambitions with business objectives fosters commitment to sustained improvement.
[00:32:00] Long-Term Value and Leadership: Closing out, Robby and Chris consider how short-tenure engineers can leave a lasting impact by helping a team focus on its biggest pain points.
Jellyis the simplest, most affordable way to deal with your “contact@...” emails.
Tired of sharing an email login, or CCing colleagues to loop them into conversations? Terrified by the dizzying total cost of big-name “customer support” tools? Jelly is the answer. Whether it's for customer support, community organizing, or even managing band emails, Jelly helps your team share an email inbox and manage your conversations in a simple, elegant way. Use the "I got this” feature to communicate responsibility and private comments for internal discussions. Jelly is perfect for small teams — because it was built by a small team. And Jelly is actually affordable —team-based pricing means everyone can pitch in with your team’s conversations with customers, clients, and beyond.
Heimir Thor Sverrisson joins Robby to discuss the importance of software architecture in long-term maintainability. With over four decades in the industry, Heimir has witnessed firsthand how poor architectural decisions can set teams up for failure. He shares his experiences mentoring engineers, tackling technical debt, and solving large-scale performance problems—including one bank’s misguided attempt to fix system slowness by simply adding more CPUs.
Heimir also discusses his work at MojoTech, the value of code reviews in consulting, and his volunteer efforts designing radiation-tolerant software for satellites.
Episode Highlights
[00:01:12] Why architecture is the foundation of maintainability – Heimir explains why starting with the wrong architecture dooms software projects.
[00:02:20] Upfront design vs. agile methodologies – The tension between planning and iterative development.
[00:03:33] When architecture becomes the problem – How business pivots can render initial designs obsolete.
[00:05:06] The rising demand for rapid software delivery – Why modern projects have less time for deep architectural planning.
[00:06:15] Defining technical debt in practical terms – How to clean up code without waiting for permission.
[00:09:56] The rewrite that never launched – What happens when a company cancels a multi-million-dollar software project.
[00:12:43] How a major bank tackled system slowness the wrong way – Adding CPUs didn’t solve their performance problems.
[00:15:00] Performance tuning as an ongoing process – Why fixing one bottleneck only reveals the next.
[00:22:34] How MojoTech mentors instead of manages – Heimir explains how their consultancy approaches team development.
[00:27:54] Building software for space – How AMSAT develops radiation-resistant software for satellites.
[00:32:52] Staying relevant after four decades in tech – The power of curiosity in a constantly changing industry.
[00:34:26] How AI might (or might not) help maintainable software – Heimir shares his cautious optimism.
[00:37:14] Non-technical book recommendation – The Man Who Broke Capitalism and its relevance to the tech industry.
Jellyis the simplest, most affordable way to deal with your “contact@...” emails.
Tired of sharing an email login, or CCing colleagues to loop them into conversations? Terrified by the dizzying total cost of big-name “customer support” tools? Jelly is the answer. Whether it's for customer support, community organizing, or even managing band emails, Jelly helps your team share an email inbox and manage your conversations in a simple, elegant way. Use the "I got this” feature to communicate responsibility and private comments for internal discussions. Jelly is perfect for small teams — because it was built by a small team. And Jelly is actually affordable —team-based pricing means everyone can pitch in with your team’s conversations with customers, clients, and beyond.
Heimir Thor Sverrisson joins Robby to discuss the importance of software architecture in long-term maintainability. With over four decades in the industry, Heimir has witnessed firsthand how poor architectural decisions can set teams up for failure. He shares his experiences mentoring engineers, tackling technical debt, and solving large-scale performance problems—including one bank’s misguided attempt to fix system slowness by simply adding more CPUs.
Heimir also discusses his work at MojoTech, the value of code reviews in consulting, and his volunteer efforts designing radiation-tolerant software for satellites.
Episode Highlights
[00:01:12] Why architecture is the foundation of maintainability – Heimir explains why starting with the wrong architecture dooms software projects.
[00:02:20] Upfront design vs. agile methodologies – The tension between planning and iterative development.
[00:03:33] When architecture becomes the problem – How business pivots can render initial designs obsolete.
[00:05:06] The rising demand for rapid software delivery – Why modern projects have less time for deep architectural planning.
[00:06:15] Defining technical debt in practical terms – How to clean up code without waiting for permission.
[00:09:56] The rewrite that never launched – What happens when a company cancels a multi-million-dollar software project.
[00:12:43] How a major bank tackled system slowness the wrong way – Adding CPUs didn’t solve their performance problems.
[00:15:00] Performance tuning as an ongoing process – Why fixing one bottleneck only reveals the next.
[00:22:34] How MojoTech mentors instead of manages – Heimir explains how their consultancy approaches team development.
[00:27:54] Building software for space – How AMSAT develops radiation-resistant software for satellites.
[00:32:52] Staying relevant after four decades in tech – The power of curiosity in a constantly changing industry.
[00:34:26] How AI might (or might not) help maintainable software – Heimir shares his cautious optimism.
[00:37:14] Non-technical book recommendation – The Man Who Broke Capitalism and its relevance to the tech industry.
Jellyis the simplest, most affordable way to deal with your “contact@...” emails.
Tired of sharing an email login, or CCing colleagues to loop them into conversations? Terrified by the dizzying total cost of big-name “customer support” tools? Jelly is the answer. Whether it's for customer support, community organizing, or even managing band emails, Jelly helps your team share an email inbox and manage your conversations in a simple, elegant way. Use the "I got this” feature to communicate responsibility and private comments for internal discussions. Jelly is perfect for small teams — because it was built by a small team. And Jelly is actually affordable —team-based pricing means everyone can pitch in with your team’s conversations with customers, clients, and beyond.