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

Alan Ridlehoover: Building Robust Systems Through Behavior-Centric Testing

Maintainable

10/08/24 • 48 min

plus icon
bookmark
Share icon

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.

10/08/24 • 48 min

plus icon
bookmark
Share icon

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