# Maintaining Backward Compatibility in Software Projects: Strategies from Industry Experts - ML 164 Page: https://stenobird.com/podcast/adventures-in-machine-learning/maintaining-backward-compatibility-in-software-projects-strategies-from-industry-experts-ml-164 Text version: https://stenobird.com/podcast/adventures-in-machine-learning/maintaining-backward-compatibility-in-software-projects-strategies-from-industry-experts-ml-164.md Podcast: [Adventures in Machine Learning](https://stenobird.com/podcast/adventures-in-machine-learning) Published: 2024-08-29T10:00:00+00:00 Episode link: https://www.spreaker.com/episode/maintaining-backward-compatibility-in-software-projects-strategies-from-industry-experts-ml-164--61197759 Audio file: https://dts.podtrac.com/redirect.mp3/api.spreaker.com/download/episode/61197759/ml_164.mp3 Processing state: processed JSON: https://stenobird.com/v1/public/podcasts/adventures-in-machine-learning/episodes/maintaining-backward-compatibility-in-software-projects-strategies-from-industry-experts-ml-164 Duration seconds: 3592 ## Resource Software engineering maturity requires transitioning from rapid experimentation to disciplined stability. This episode explores how to manage API evolution, implement compatibility layers, and use automation to enforce code quality. ## Highlights - Practical takeaway: Use 'experimental' tags for new features to allow for iteration without breaking the stable API contract - Failure mode: Relying on manual code reviews for style instead of using pre-commit hooks and linters to automate enforcement - Main idea: A compatibility layer (like Dagster's Pydantic shim) can bridge the gap between breaking third-party dependency updates - Practical takeaway: Write documentation and marketing materials before writing code to validate feature demand and use cases - Main idea: High-quality naming conventions act as anchors that help maintainer clarity even as codebases grow complex ## Topics Software Engineering, API Design, Backward Compatibility, Open Source, Dependency Management, Code Quality, Data Engineering, Python ## Chapters - 1:05 — The Value of Open Source: A discussion on why contributing to open source provides a lasting, reusable impact compared to proprietary software. - 6:00 — Unified Tooling for Data Scales: The benefits of using the same tools for both small and large-scale data processing to reduce refactoring overhead. - 11:05 — Managing API Evolution: Strategies for transitioning from a proof-of-concept to a stable product by managing feature maturity and user feedback. - 21:20 — Handling Dependency Breaking Changes: How to implement a compatibility layer to support multiple versions of critical libraries like Pydantic. - 36:00 — The Satisfaction of Refactoring: The psychological and technical rewards of deleting or refactoring old code to improve system health. - 45:45 — Code Review and Longevity: Addressing selection bias in reviews and focusing on long-term code maintainability over superficial correctness. - 1:01:05 — Prioritizing Maintainability: Why building maintainable, working software is more important than optimizing complex algorithmic efficiency. ## Actions - request_transcript: `POST https://stenobird.com/v1/public/podcasts/adventures-in-machine-learning/episodes/maintaining-backward-compatibility-in-software-projects-strategies-from-industry-experts-ml-164/transcription-requests` — Idempotently request low-priority transcript generation for this episode. - read_markdown: `GET https://stenobird.com/podcast/adventures-in-machine-learning/maintaining-backward-compatibility-in-software-projects-strategies-from-industry-experts-ml-164.md` — Read the agent-friendly Markdown representation of this episode resource. A page view does not enqueue transcription. Agents should invoke `request_transcript` explicitly when they need this episode processed. ## Transcript Full transcripts are not published on public pages unless there is a clear rights basis.