Log in

goodpods headphones icon

To access all our features

Open the Goodpods app
Close icon
Maintainable - Alan Ridlehoover: Building Robust Systems Through Behavior-Centric Testing
plus icon
bookmark

Alan Ridlehoover: Building Robust Systems Through Behavior-Centric Testing

10/08/24 • 48 min

Maintainable

Alan Ridlehoover: Building Robust Systems Through Behavior-Centric Testing

In this episode of Maintainable, Robby speaks with Alan Ridlehoover, Senior Engineering Manager at Cisco Meraki. Alan shares his perspective on building well-maintained software by focusing on behavior-centric testing, clear code ownership, and thoughtful technical decisions that stand the test of time.

Alan discusses his experience working in both startup environments and large-scale engineering teams, including how he navigates the unique challenges of each. He provides practical advice on managing conditional logic in code, scaling with third-party dependencies, and ensuring that testing strategies remain effective as systems grow in complexity.

Key Takeaways:

  • The characteristics of well-maintained software: behavior-centric testing, solid code principles, and ownership boundaries.
  • Balancing the needs of startups vs. large enterprises when it comes to software maintenance.
  • Alan’s approach to handling conditional logic with a technique called "rehydration" to simplify complex code.
  • Why focusing on behavior, not implementation, is critical for scalable, maintainable tests.
  • The importance of interfaces and facades for managing third-party dependencies and future scalability.
  • How to approach technical debt as a conscious trade-off, not an inevitable burden.
  • Best practices for addressing flaky tests, including managing non-determinism, order dependencies, and race conditions.
  • How to set up effective monitoring and alerting systems to maintain a healthy software environment.
  • The role of team structure and product ownership in delivering sustainable, high-quality software.

Episode Highlights:

  • [00:05:32] Introduction to the Guest's Background: Robby and Alan discuss Alan's work at Cisco Meraki and his approach to well-maintained software.
  • [00:15:10] The Importance of Behavior-Centric Testing: Alan explains why focusing on behavior, not implementation, helps in both startups and large-scale environments.
  • [00:24:30] Rehydration: A Strategy for Managing Conditional Logic in Code: Alan shares his method for simplifying code with many conditionals.
  • [00:35:00] Navigating Technical Debt: Alan offers advice on how to strategically manage technical debt without slowing down business needs.
  • [00:45:18] Monitoring and Alerting: Alan’s tips on keeping systems healthy and avoiding customer-facing issues through smart monitoring setups.

Resources Mentioned:

Connect with Alan Ridlehoover:

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.

plus icon
bookmark

Alan Ridlehoover: Building Robust Systems Through Behavior-Centric Testing

In this episode of Maintainable, Robby speaks with Alan Ridlehoover, Senior Engineering Manager at Cisco Meraki. Alan shares his perspective on building well-maintained software by focusing on behavior-centric testing, clear code ownership, and thoughtful technical decisions that stand the test of time.

Alan discusses his experience working in both startup environments and large-scale engineering teams, including how he navigates the unique challenges of each. He provides practical advice on managing conditional logic in code, scaling with third-party dependencies, and ensuring that testing strategies remain effective as systems grow in complexity.

Key Takeaways:

  • The characteristics of well-maintained software: behavior-centric testing, solid code principles, and ownership boundaries.
  • Balancing the needs of startups vs. large enterprises when it comes to software maintenance.
  • Alan’s approach to handling conditional logic with a technique called "rehydration" to simplify complex code.
  • Why focusing on behavior, not implementation, is critical for scalable, maintainable tests.
  • The importance of interfaces and facades for managing third-party dependencies and future scalability.
  • How to approach technical debt as a conscious trade-off, not an inevitable burden.
  • Best practices for addressing flaky tests, including managing non-determinism, order dependencies, and race conditions.
  • How to set up effective monitoring and alerting systems to maintain a healthy software environment.
  • The role of team structure and product ownership in delivering sustainable, high-quality software.

Episode Highlights:

  • [00:05:32] Introduction to the Guest's Background: Robby and Alan discuss Alan's work at Cisco Meraki and his approach to well-maintained software.
  • [00:15:10] The Importance of Behavior-Centric Testing: Alan explains why focusing on behavior, not implementation, helps in both startups and large-scale environments.
  • [00:24:30] Rehydration: A Strategy for Managing Conditional Logic in Code: Alan shares his method for simplifying code with many conditionals.
  • [00:35:00] Navigating Technical Debt: Alan offers advice on how to strategically manage technical debt without slowing down business needs.
  • [00:45:18] Monitoring and Alerting: Alan’s tips on keeping systems healthy and avoiding customer-facing issues through smart monitoring setups.

Resources Mentioned:

Connect with Alan Ridlehoover:

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.

Previous Episode

undefined - April Wensel: Navigating Legacy Code with Compassion

April Wensel: Navigating Legacy Code with Compassion

In this episode of Maintainable, Robby speaks with April Wensel, Founder and Owner of Compassionate Coding. April shares her journey in the software industry and how she came to embrace compassion as a core value in coding and team dynamics. She explains why empathy is critical when working with legacy code, mentoring junior developers, and addressing technical debt.

Episode Highlights

  • [00:05:32] Introduction to Compassionate Coding: April discusses the mission behind Compassionate Coding and why human-centered development is essential.
  • [00:13:36] Compassion and Technical Debt: How fostering a compassionate mindset helps teams navigate the challenges of maintaining legacy code and tackling technical debt.
  • [00:20:10] Empathy in Code Reviews: April talks about the role of compassion in creating healthy, constructive code review cultures.
  • [00:26:30] Onboarding with Compassion: The importance of pairing and empathy in onboarding new engineers, whether junior or senior.
  • [00:31:55] The Refactor vs. Rewrite Debate: April explains why she usually sides with refactoring over rewriting code, and how compassion can inform that decision.
  • [00:41:20] The Role of Leadership in Code Quality: How leaders can set the tone for compassionate coding by prioritizing better documentation and creating a supportive team environment.
  • [00:44:56] Community Service and Building Empathy: April shares how volunteering outside of tech has helped her develop empathy that translates into better teamwork and communication in the workplace.

Key Takeaways:

  • Compassion in coding isn’t just about clean code; it's about how we treat ourselves and others in the process of writing and maintaining software.
  • Legacy code doesn’t have to be a source of frustration; by embracing empathy and self-compassion, teams can tackle it with a positive mindset.
  • Pairing and mentorship are powerful tools in onboarding, helping to bring new team members into a supportive, inclusive environment.
  • Effective communication with stakeholders about technical debt requires empathy and understanding of their priorities.
  • Compassionate coding also extends beyond the development team, influencing interactions with non-engineers, users, and the broader community.

Resources:

Follow April Wensel:

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

undefined - Kate Holterhoff: From Front-End Engineering to Developer Advocacy

Kate Holterhoff: From Front-End Engineering to Developer Advocacy

Welcome to another engaging episode of Maintainable! Robby sits down with Kate Holterhoff, Ph.D., a Senior Analyst at RedMonk and former front-end engineer, to explore the intricate world of software maintenance, documentation, and the future of developer roles. Kate brings her unique perspective from her time as a practitioner at a digital marketing agency, her academic background, and her current role in developer advocacy.

Topics Explored

[00:00:00] Introduction to Kate's Background: Robby and Kate discuss her journey from academia to front-end engineering and now to being a Senior Analyst at RedMonk. Kate shares how her experiences have shaped her perspective on software maintenance.

[00:04:00] Well-Maintained Software: Kate dives into her definition of well-maintained software, emphasizing modularity, semantic readability, and the importance of considering future developers who will interact with the code.

[00:11:30] The Challenges of Agency Work: Kate reflects on her time at a digital marketing agency, where she often worked on projects that had passed through many hands. She discusses the importance of balancing quick deliverables with maintainability.

[00:20:45] The Role of Documentation: Kate shares insights on the value of documentation for distributed teams, highlighting her experience organizing documentation sessions ("documentation paloozas") to capture team knowledge and ensure maintainability.

[00:30:00] RedMonk and Developer Advocacy: Kate explains her role at RedMonk and how the firm differs from traditional analyst firms like Gartner. She discusses RedMonk's focus on developers as key decision-makers in the tech landscape.

[00:39:15] Front-End Developers as Kingmakers: Robby and Kate explore how front-end engineers are increasingly influencing the adoption of tools and technologies within organizations. Kate describes this trend as front-end developers becoming "kingmakers" in the industry.

[00:49:50] AI and Developer Tools: Kate discusses the integration of AI into developer tools, the potential benefits, and challenges for junior developers. She emphasizes the importance of understanding how to read code in an AI-assisted world.

Key Takeaways:

  • Emphasize modularity and semantic readability to ensure code can be easily maintained by future developers.
  • Documentation is crucial for maintainability, especially in distributed and contractor-heavy teams.
  • Front-end developers are becoming key decision-makers, influencing tool and technology adoption.
  • AI is increasingly integrated into developer workflows, making it essential for developers to focus on reading and understanding code.
  • The definition of a 'developer' is evolving, with more abstracted tools and AI playing a larger role in development processes.

Resources Mentioned:

Episode Highlights:

[00:00:00] Introduction to Kate's Background

[00:04:00] Characteristics of Well-Maintained Software

[00:20:45] The Importance of Documentation

[00:30:00] What Does a Senior Analyst at RedMonk Do?

[00:39:15] Front-End Developers as Kingmakers

[00:49:50] The Role of AI in Developer Tools

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.

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/alan-ridlehoover-building-robust-systems-through-behavior-centric-test-76027782"> <img src="https://storage.googleapis.com/goodpods-images-bucket/badges/generic-badge-1.svg" alt="listen to alan ridlehoover: building robust systems through behavior-centric testing on goodpods" style="width: 225px" /> </a>

Copy