Log in

goodpods headphones icon

To access all our features

Open the Goodpods app
Close icon
Maintainable - Julia López: Code Tells a Story—Even the White Spaces

Julia López: Code Tells a Story—Even the White Spaces

02/25/25 • 50 min

Maintainable

How much can legacy code tell us beyond just functionality? Julia López, Senior Software Engineer at Harvest, believes that even small details—such as white spaces, variable names, and formatting choices—can reveal a system’s history.

In this episode, Julia and Robby discuss the importance of refactoring and how a strong engineering culture can make or break a team's ability to maintain and improve software over time. Julia shares her experience leading a multi-year overhaul of Harvest’s billing system, balancing stakeholder expectations while ensuring the rewrite delivered real value.

They explore how refactoring decisions evolve as teams grow, how to mentor newer developers to feel empowered to make changes, and why Julia doesn’t always trust her own estimations (for good reason). She also opens up about the complexities of transitioning a live billing system while supporting customers, finance teams, and engineering operations—all without disrupting payments.

Beyond technical decisions, they also dive into the challenges of communication in remote teams, the value of autonomy in software development, and how teams can make a case for technical debt reduction even when leadership isn’t prioritizing it. If you've ever struggled with refactoring legacy systems or advocating for improvements, this conversation is packed with practical lessons.

💡 Key Topics & Timestamps

  • [00:00:22] Meet Julia López – Her background, role at Harvest, and passion for refactoring.
  • [00:00:42] What Makes Software Maintainable? – A test suite you can trust and an engineering culture that values refactoring.
  • [00:06:31] Leading Harvest’s Billing System Overhaul – Why a full rewrite made more sense than incremental improvements.
  • [00:09:54] The Hidden Complexity of Billing Systems – Managing ACH, credit card, and invoice payments.
  • [00:14:05] The Fear Factor in Large-Scale Refactoring – Why organizations hesitate and how to push forward.
  • [00:18:47] Communication Challenges in Remote Teams – Why documentation and transparency matter beyond GitHub.
  • [00:28:30] Finding and Enforcing Engineering Patterns – How teams can encourage consistency in a constantly evolving codebase.
  • [00:35:45] Why Autonomy Matters for Developers – Learning through struggle and when to ask for help.
  • [00:45:25] Advocating for Refactoring When Leadership Says No – Julia's approach: "Ask for forgiveness, not permission—but estimate higher."

🔗 Resources Mentioned

📢 Connect with Julia López

🍇Thanks to Our Sponsor!

Jelly is 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 affordableteam-based pricing means everyone can pitch in with your team’s conversations with customers, clients and beyond.

Bonus for Maintai...

plus icon
bookmark

How much can legacy code tell us beyond just functionality? Julia López, Senior Software Engineer at Harvest, believes that even small details—such as white spaces, variable names, and formatting choices—can reveal a system’s history.

In this episode, Julia and Robby discuss the importance of refactoring and how a strong engineering culture can make or break a team's ability to maintain and improve software over time. Julia shares her experience leading a multi-year overhaul of Harvest’s billing system, balancing stakeholder expectations while ensuring the rewrite delivered real value.

They explore how refactoring decisions evolve as teams grow, how to mentor newer developers to feel empowered to make changes, and why Julia doesn’t always trust her own estimations (for good reason). She also opens up about the complexities of transitioning a live billing system while supporting customers, finance teams, and engineering operations—all without disrupting payments.

Beyond technical decisions, they also dive into the challenges of communication in remote teams, the value of autonomy in software development, and how teams can make a case for technical debt reduction even when leadership isn’t prioritizing it. If you've ever struggled with refactoring legacy systems or advocating for improvements, this conversation is packed with practical lessons.

💡 Key Topics & Timestamps

  • [00:00:22] Meet Julia López – Her background, role at Harvest, and passion for refactoring.
  • [00:00:42] What Makes Software Maintainable? – A test suite you can trust and an engineering culture that values refactoring.
  • [00:06:31] Leading Harvest’s Billing System Overhaul – Why a full rewrite made more sense than incremental improvements.
  • [00:09:54] The Hidden Complexity of Billing Systems – Managing ACH, credit card, and invoice payments.
  • [00:14:05] The Fear Factor in Large-Scale Refactoring – Why organizations hesitate and how to push forward.
  • [00:18:47] Communication Challenges in Remote Teams – Why documentation and transparency matter beyond GitHub.
  • [00:28:30] Finding and Enforcing Engineering Patterns – How teams can encourage consistency in a constantly evolving codebase.
  • [00:35:45] Why Autonomy Matters for Developers – Learning through struggle and when to ask for help.
  • [00:45:25] Advocating for Refactoring When Leadership Says No – Julia's approach: "Ask for forgiveness, not permission—but estimate higher."

🔗 Resources Mentioned

📢 Connect with Julia López

🍇Thanks to Our Sponsor!

Jelly is 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 affordableteam-based pricing means everyone can pitch in with your team’s conversations with customers, clients and beyond.

Bonus for Maintai...

Previous Episode

undefined - Marty Haught: Rethinking Technical Debt—Is It Really Just Drift?

Marty Haught: Rethinking Technical Debt—Is It Really Just Drift?

Episode Overview

Marty Haught joins Robby to discuss the sustainability of open-source projects, the challenges of maintaining RubyGems, and why the metaphor of technical debt may not fully capture how software ages. Instead, he suggests thinking of it as drift—the natural misalignment of software with its evolving purpose over time.

They also dig into security challenges in package management, including how Ruby Central worked with Trail of Bits to audit RubyGems. Marty also shares insights on the EU Cyber Resilience Act and how it might affect open-source maintainers worldwide. Finally, they explore how companies can support open-source sustainability through corporate sponsorships and individual contributions.

Topics Discussed

  • [00:01:00] The two pillars of maintainable software: good tests and readability.
  • [00:02:40] From Perl to Ruby: How readability changed Marty's approach to programming.
  • [00:07:20] Is technical debt the right metaphor? Why "drift" might be a better fit.
  • [00:11:00] What does it take to maintain RubyGems? Marty's role at Ruby Central.
  • [00:14:00] Security in package management: How RubyGems handles vulnerabilities.
  • [00:16:40] The role of external audits: Partnering with Trail of Bits for security improvements.
  • [00:20:40] EU Cyber Resilience Act: How new regulations might affect open-source projects.
  • [00:34:00] Funding open source: Why corporate sponsorships are becoming essential.
  • [00:38:20] Processes in distributed teams: Balancing structure with flexibility.
  • [00:44:45] Advocating for technical debt work in teams: How to make a compelling case.

Key Takeaways

  • Technical debt is often misunderstood. The real issue may not be shortcuts taken in the past, but the way software naturally drifts from its original purpose.
  • Security in package management is a growing concern. Open-source ecosystems like RubyGems require continuous investment to remain secure.
  • Open source needs sustainable funding. Relying on volunteers is not a long-term solution—companies need to contribute via corporate sponsorships.
  • Advocating for code improvements requires strategy. Engineers should frame technical debt discussions around business impact, not just code quality.

Resources Mentioned

Connect with Marty

Next Episode

undefined - Noémi Ványi: Only Fix Problems That Are Actually Problems

Noémi Ványi: Only Fix Problems That Are Actually Problems

Not every messy piece of code needs a refactor. Noémi Ványi, Senior Software Engineer at Xata, joins Robby to discuss how to develop the intuition to know when refactoring is truly necessary and when it’s just unnecessary churn. She shares her approach to balancing pragmatism and maintainability, how product teams and developers can work better together, and why developer autonomy is key to sustainable software.

Drawing from her experience working on both open-source and closed-source projects, Noémi reflects on the unique challenges each presents—whether it's dealing with unresponsive GitHub issue reporters, handling unanticipated user behaviors, or navigating large-scale refactors in existing systems. She also shares her philosophy on technical debt: not all of it needs to be paid down, and some of it can actually be strategic.

Robby and Noémi also explore the importance of writing meaningful commit messages, the hidden benefits of reviewing open-source pull requests, and why developers should stop waiting for permission to clean up their codebases.

Episode Highlights

  • [00:01:00] The characteristics of well-maintained software: modular design, good tests, and observability.
  • [00:02:00] Open source vs. closed source software: Why communication matters more than you think.
  • [00:04:50] Not all technical debt is worth paying down—how to decide when to refactor.
  • [00:06:20] Developing engineering intuition: How experience shapes decision-making.
  • [00:11:08] Lessons from refactoring a log processing system at Elastic.
  • [00:17:09] Strategies for modernizing legacy systems without unnecessary rewrites.
  • [00:19:52] Why maintainability is a business requirement, not an afterthought.
  • [00:24:03] Should developers ask for permission to clean up code or just do it?
  • [00:27:00] The impact of good commit messages and pull request documentation (GitHub PR Templates).
  • [00:30:00] Are issue templates in open source a helpful guardrail or a barrier?
  • [00:32:00] How to gain autonomy as a developer and advocate for technical improvements.
  • [00:39:00] Noémi’s advice: Only fix problems that are actually problems.

Resources Mentioned

Book Recommendation

Lost in Thought: The Hidden Pleasures of an Intellectual Life by Zena Hitz

🍇Thanks to Our Sponsor!

Jelly is 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 affordableteam-based pricing means everyone can pitch in with your team’s conversations with customers, clients, and beyond.

Bonus for Maintainable listeners Get ...

Episode Comments

Generate a badge

Get a badge for your website that links back to this episode

Select type & size
Open dropdown icon
share badge image

<a href="https://goodpods.com/podcasts/maintainable-333012/julia-l%c3%b3pez-code-tells-a-storyeven-the-white-spaces-86198862"> <img src="https://storage.googleapis.com/goodpods-images-bucket/badges/generic-badge-1.svg" alt="listen to julia lópez: code tells a story—even the white spaces on goodpods" style="width: 225px" /> </a>

Copy