Avsnitt

  • As a product advocate at Nx, Katerina Skroumpelou combines her engineering skills with a knack for connecting with clients. In this episode, she shares how clear documentation, scalable architectures, and a collaborative culture can transform software development for the better.

    Key Takeaways

    [00:01:25] Katerina’s Background: Robby and Katerina discuss her career journey, starting in engineering and recently moving into product advocacy.
    [00:02:29] Characteristics of Well-Maintained Software: Katerina highlights key aspects of maintainable software—readability, scalability, and reliability.
    [00:04:39] Product Advocacy at Nx: Katerina describes her unique role, bridging technical support and customer outreach to ensure clients make the most of Nx tools.
    [00:07:01] White Glove Approach: The “white glove” service approach allows Katerina to dive deep into clients' codebases, offering a hands-on approach to using Nx effectively.
    [00:09:52] Scalable Documentation Practices: Balancing clarity and detail, Katerina provides tips on structuring code comments and READMEs to be concise yet thorough.
    [00:12:09] Managing Technical Debt: Robby and Katerina discuss the importance of keeping code up-to-date and scalable, especially in large systems with high demands.
    [00:16:00] The Importance of Collaboration: Moving from solo work to team-based code reviews taught Katerina the value of a collaborative approach to maintainable code.
    [00:19:15] Nx’s Monorepo Solution: How Nx provides cache and build tools to optimize mono-repo performance, boosting both speed and organization within projects.
    [00:22:12] Nx Cloud and CI: Katerina discusses Nx Cloud’s role in enhancing CI workflows by allowing parallel tasks and cache sharing across teams.
    [00:24:07] When to Consider Monorepos: Katerina explains the benefits of monorepos for organizing codebases and improving scalability.
    [00:26:37] AI Tools in Development: Katerina shares her enthusiasm for new AI tools like StackBlitz’s Bolt and their potential to streamline app development.
    [00:29:00] Finding Motivation at Work: Advice for developers who feel stuck or unmotivated in their current roles and ways to reconnect with the work they enjoy.

    Resources MentionedNx DevStackBlitz Bolt.newBooks:The Three-Body Problem by Cixin LiuCryptonomicon by Neal StephensonSlaughterhouse-Five by Kurt VonnegutKaterina's social profiles:

    LinkedIn
    Twitter
    Bluesky

    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:

    Apple PodcastsSpotify

    Or search "Maintainable" wherever you stream your podcasts.

    Keep up to date with the Maintainable Podcast by joining the newsletter.

  • Welcome to another engaging episode of the Maintainable Software Podcast! In this episode, Robby sits down with Moriel Schottlender, Principal Software Engineer at the Wikimedia Foundation, to explore the complex journey of modernizing MediaWiki, the software behind Wikipedia. Moriel shares her insights on what it takes to keep an enormous monolithic codebase maintainable while supporting an ever-growing and diverse set of global users. She highlights the importance of modularization, ownership, and the delicate balance between flexibility and stability in open-source software.

    Key Takeaways

    [00:00:51] Characteristics of Well-Maintained Software: Moriel discusses the three crucial characteristics of well-maintained software: ownership, modularization, and documentation.

    [00:01:09] Ownership and Rules for Contribution: Ownership goes beyond just fixing bugs—it involves understanding the architectural purpose and maintaining consistency even as teams change.

    [00:03:35] Product Vision's Role in Maintainability: Why a clear product vision is essential for maintaining software, even in the face of organic growth.

    [00:07:14] Balancing Experimentation and Long-Term Planning: Moriel shares insights into how Wikimedia balances rapid experimentation with careful, long-term architectural planning.

    [00:07:32] The Evolution of MediaWiki: MediaWiki's growth from a small project to the backbone of Wikipedia, now supporting over 900 wikis, and the challenges that come with scaling.

    [00:14:18] Modernizing a 23-Year-Old Monolith: Robby and Moriel dive into the challenges of modernizing MediaWiki’s architecture, including the difficulties of updating a monolithic structure.

    [00:17:15]Wikitext vs. Markdown: Moriel explains why MediaWiki uses its own Wikitext language instead of Markdown and the unique challenges it presents.

    [00:22:25] Architectural Flexibility for the Future: The importance of having a flexible architecture that can adapt to the evolving needs of users and technologies.

    [00:26:04] Technical Debt and Modularization: How Wikimedia approaches technical debt in MediaWiki and prioritizes architectural interventions to improve modularity and maintainability.

    [00:39:00] Community Contributions to MediaWiki: Strategies for increasing developer contributions and how Wikimedia empowers volunteers while maintaining software quality.

    [00:41:59] Advice for Aspiring Open Source Contributors: Moriel shares encouraging words for anyone looking to contribute to open-source projects, emphasizing that everyone can make a meaningful impact.

    [00:35:44] The Role of Documentation: Moriel discusses Wikimedia's efforts to improve documentation and ensure it's useful for both developers and end-users, leveraging the strengths of wiki-based contributions.

    [00:30:29] Celebrating Small Wins: Moriel talks about how Wikimedia celebrates small victories to keep team morale high in the face of big challenges.

    Resources MentionedMoriel's WebsiteMoriel on MastodonMediaWiki DocumentationBook Recommendation:Year Zero by Rob ReidConnect with MorielMoriel on LinkedInInstagramTwitterGitHubMastodonThanks 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:

    Apple PodcastsSpotify

    Or search "Maintainable" wherever you stream your podcasts.

    Keep up to date with the Maintainable Podcast by joining the newsletter.

  • Saknas det avsnitt?

    Klicka här för att uppdatera flödet manuellt.

  • 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:RedMonkKate Holterhoff on LinkedInKate Holterhoff on TwitterDarwin's The Origin of SpeciesEpisode 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:

    Apple PodcastsSpotify

    Or search "Maintainable" wherever you stream your podcasts.

    Keep up to date with the Maintainable Podcast by joining the newsletter.

  • 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:

    Radical Candor by Kim ScottThe Code Gardener

    Connect with Alan Ridlehoover:

    LinkedInThe Code Gardener BlogThanks 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:

    Apple PodcastsSpotify

    Or search "Maintainable" wherever you stream your podcasts.

    Keep up to date with the Maintainable Podcast by joining the newsletter.

  • 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:

    Compassionate CodingApril's Twitter12 Steps to a Compassionate Life by Karen Armstrong

    Follow April Wensel:

    LinkedInTwitterWebsiteThanks 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:

    Apple PodcastsSpotify

    Or search "Maintainable" wherever you stream your podcasts.

    Keep up to date with the Maintainable Podcast by joining the newsletter.

  • In this episode of the Maintainable Software Podcast, Robby sits down with Saron Yitbarek, founder and CEO of DiscoLink, to explore the challenges of maintaining early-stage software while balancing multiple streams of income. Saron shares her journey from being a solo developer to hiring her first teammate and the lessons learned along the way about code maintainability and business logic.

    Episode Highlights[00:05:32] Introduction to Saron's Background: Robby and Saron discuss her startup, DiscoLink, and the initial development of its MVP.[00:10:50] The Importance of Context in Code: Saron emphasizes why understanding the business decisions behind code is crucial for maintainability.[00:15:10] Onboarding a New Developer: Saron shares her experience hiring her first developer and how it changed her approach to software maintenance.[00:20:32] Multiple Streams of Income: Saron explains her motivation behind building DiscoLink to help professionals manage different revenue streams.[00:25:40] Transparency Around Money: A candid conversation about developers’ fears around charging for their work and how to overcome them.[00:30:45] Ethics and Side Projects: Robby and Saron discuss ethical considerations when working on side projects while employed full-time.[00:35:12] How Podcasting Shaped Saron's Career: Saron talks about how being a podcast host impacted her career growth and networking.Key TakeawaysMaintainability Beyond Code: Saron highlights the importance of documenting not just the code but also the business rationale behind decisions.Onboarding Challenges: Bringing a new developer into a solo-built project requires strong communication, context sharing, and flexible documentation practices.The Power of Multiple Income Streams: Saron’s vision with DiscoLink focuses on helping tech professionals build financial security through various revenue channels.Confronting Money Anxiety: Many developers struggle with charging for their work, but transparency and community conversations help break down those barriers.Ethical Side Projects: It's important to consider the ethical implications of using work-learned skills for personal projects.ResourcesSaron Yitbarek on LinkedInSaron Yitbarek on TwitterDiscoLink WebsiteBook Recommendation: Formerly Known as Food by Kristin Lawless

    Links:

    My newsletter: https://themultihyphenate.ck.page/newsletterThanks 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:

    Apple PodcastsSpotify

    Or search "Maintainable" wherever you stream your podcasts.

    Keep up to date with the Maintainable Podcast by joining the newsletter.

  • Introduction

    In this episode of Maintainable, Robby speaks with Lutz Hühnken, Head of Engineering Excellence at Upvest, about the transformative power of event-driven architecture in software development. Lutz brings his extensive experience to the table, discussing how breaking down complex systems into manageable modules and leveraging event-driven design can lead to more resilient and maintainable software.

    Topics Discussed[00:05:32] Introduction to Well-Maintained Software: Lutz shares his thoughts on the key characteristics of maintainable software, emphasizing modularity and simplicity.[00:10:24] Challenges with "Magic" in Code: The pitfalls of relying too much on frameworks and ORMs, including examples from Lutz’s experience with Hibernate.[00:11:16] Understanding Event-Driven Architecture: Lutz explains the fundamentals of event-driven architecture and its advantages over traditional command-driven approaches.[00:13:50] The Role of Promises in Event-Driven Systems: How clear design-time responsibilities ensure reliability in event-driven communication.[00:15:43] Choreography vs. Orchestration: The debate between these two approaches to managing workflows and why Lutz favors choreography for most systems.[00:17:57] Onboarding Developers in Event-Driven Systems: Tips for effectively integrating new team members into an event-driven architecture.[00:26:52] The Role of Engineering Excellence at Upvest: Lutz discusses his new role and the importance of systems thinking in guiding architectural decisions.[00:34:55] Managing Technical Debt: Lutz offers insights into balancing feature development with addressing technical debt, emphasizing the importance of a healthy investment distribution.Key TakeawaysBreaking down large systems into smaller modules with clear boundaries can significantly enhance maintainability.Event-driven architecture offers a powerful way to decouple system components, making them more resilient and scalable.Developers should be cautious of "magic" in code, such as heavy reliance on ORMs, which can obscure underlying complexities and hinder maintainability.Choreography often provides a more scalable and maintainable approach than orchestration in managing complex workflows.Technical debt should be managed proactively, with regular investments in refactoring and productivity enhancements to maintain long-term software health.Resources MentionedLutz Hühnken's BlogEvent-Driven Architecture by Martin FowlerThe Open Society and Its Enemies by Karl PopperEvent-Driven Architecture Reading ListConnect with Lutz HühnkenLinkedInMastodonBlueskyThanks 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:

    Apple PodcastsSpotify

    Or search "Maintainable" wherever you stream your podcasts.

    Keep up to date with the Maintainable Podcast by joining the newsletter.

  • In this episode of the Maintainable Software Podcast, Robby is joined by Noel Rappin, Staff Engineer at Chime Financial, and the mind behind the latest edition of the classic Programming Ruby book, affectionately known as the "Pickaxe." Noel delves into the intricate process of modernizing a legacy technical book and the lessons learned along the way.

    Episode Highlights[00:05:32] A Legacy Revisited: Noel Rappin reflects on the process of updating the Programming Ruby book, navigating the balance between preserving its legacy and making it relevant for today’s Ruby community.[00:10:17] The Challenges of Modernizing: Noel discusses the complexities of working on a legacy book, including maintaining a consistent tone, updating technical content, and making strategic decisions about what to include or omit.[00:16:12] Parallels with Legacy Code: Noel shares his insights on the similarities between updating a legacy book and maintaining legacy software, emphasizing the importance of understanding past decisions before making changes.[00:21:00] Curating Ruby's Evolution: How Noel approached the task of deciding which Ruby features and practices to highlight in the new edition, considering the evolution of the Ruby community since the book's last update.[00:27:00] The Ruby Ecosystem as a Legacy System: Exploring the idea that the entire Ruby ecosystem can be seen as a legacy system, shaped by past decisions and community standards.[00:33:47] Advice for Aspiring Technical Authors: Noel offers practical tips for those interested in contributing to or updating legacy technical books, including how to pitch ideas to publishers and navigate the challenges of working on established projects.[00:40:00] Maintaining Relevance: Strategies for keeping both software and technical books up-to-date, including Noel's thoughts on the importance of documentation and regular updates.Key TakeawaysUpdating a legacy technical book requires a deep understanding of the community's current needs and the ability to balance respect for the original work with the necessity of modern relevance.The process of modernizing a book like Programming Ruby shares many similarities with maintaining legacy software, including the importance of understanding past decisions and the challenges of working with outdated practices.Community standards play a crucial role in both software maintenance and technical writing, guiding the evolution of both fields.Noel emphasizes the importance of documentation in legacy projects, whether in software or publishing, as a tool for preserving context and aiding future contributors.Resources MentionedProgramming Ruby 3.3 (5th Edition) - The latest "Pickaxe" book, authored by Noel Rappin. Use promo code maintainablefm2024 to get 35% off the ebook.Chime FinancialMurderbot Diaries by Martha WellsWayfarers series by Becky ChambersRubular - Ruby Regular Expression EditorNoel Rappin's WebsiteNoel Rappin on LinkedInNoel Rappin on Twitter

    For more episodes like this, be sure to subscribe to the Maintainable Software Podcast.

    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:

    Apple PodcastsSpotify

    Or search "Maintainable" wherever you stream your podcasts.

    Keep up to date with the Maintainable Podcast by joining the newsletter.

  • In this episode of the Maintainable Software Podcast, Robby sits down with Cassidy Williams, Developer Advocate at GitHub, to explore the dynamic nature of a tech career, the delicate balance between clever code and maintainability, and the evolving trends in software development.

    Cassidy begins by discussing what makes software truly maintainable—starting with the ease of onboarding for new developers. She emphasizes the importance of clear documentation and warns against the pitfalls of writing overly clever code that might be difficult to maintain in the future.

    They then delve into the challenges of joining an existing codebase and managing technical debt. Cassidy shares her experiences, noting how codebases often start pristine but become more cumbersome as projects evolve and pivot.

    The Importance of Onboarding: Cassidy explains how fast someone can jump in and start working on code as a key indicator of well-maintained software.

    [00:10:21] Balancing Cleverness and Maintainability: Cassidy elaborates on why writing clever code can be a double-edged sword when it comes to long-term maintainability.

    [00:16:00] Navigating Career Pivots: Cassidy reflects on her own career journey, likening it to a "career jungle gym" where paths are non-linear and require thoughtful decision-making.

    [00:18:36] Working at Netlify: Cassidy shares her experience with upgrading a router within an existing codebase, highlighting the importance of collaboration and bringing in external expertise.

    [00:24:00] Local-First Software: Robby and Cassidy explore the trend of local-first software, emphasizing the benefits of data ownership and the ability to work offline.

    [00:26:30] Developer Wishlists: Cassidy suggests creating personal and communal wishlists for addressing technical debt, fostering a collaborative approach to maintaining software.

    [00:31:50] Jumbile - Cassidy's Side Project: Cassidy introduces her word game, Jumbile, detailing its development process and the unique challenges she faced.

    Cassidy also discusses her love for Brandon Sanderson's books, specifically the Mistborn trilogy, and the importance of owning your data in today’s digital landscape.

    Key Takeaways:Maintainable software allows new developers to quickly contribute, thanks to clear documentation and readable code.Clever code can be a joy to write but may lead to maintenance challenges down the line.A career in tech often resembles a jungle gym, requiring flexibility and thoughtful navigation.Involving open-source maintainers in large codebase changes can provide invaluable insights and streamline the process.Local-first software is gaining traction, offering benefits in data ownership and offline functionality.Resources Mentioned:Cassidy's WebsiteCassidy on LinkedInCassidy on TwitterJumbile - Word GameReact RouterMistborn Trilogy by Brandon SandersonThanks 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:

    Apple PodcastsSpotify

    Or search "Maintainable" wherever you stream your podcasts.

    Keep up to date with the Maintainable Podcast by joining the newsletter.

  • In this episode of the Maintainable Software Podcast, Robby speaks with Obie Fernandez, Chief Scientist at Olympia, about the integration of AI into modern software development. Obie shares his unique perspective on leveraging AI to enhance the maintainability and functionality of software applications, particularly in the Ruby on Rails ecosystem.

    Episode Highlights

    [00:01:00] Characteristics of Well-Maintained Software: Obie emphasizes the importance of test coverage and the role of Ruby in writing readable, maintainable code.[00:02:00] AI Integration Challenges: Delving into the complexities of working with external dependencies, Obie explains how he has tackled issues with OpenAI's API in the Olympia project.[00:05:50] Evals and Guardrails: Obie introduces the concept of evals and guardrails in AI-driven applications, detailing how they ensure robust and reliable software performance.[00:08:44] Account Management with AI: Learn about Obie's innovative "multitude of workers" approach to automating account management in Olympia using AI.[00:17:05] Obie's Upcoming Book: Obie discusses his forthcoming book, Patterns of Application Development Using AI, and shares the inspiration behind writing it.[00:21:52] Prompt Engineering Essentials: Explore the fundamentals of prompt engineering and how it plays a crucial role in AI-driven workflows.[00:22:48] Self-Healing Data and Intelligent Error Handling: Obie explains how AI can be used to enhance application robustness through self-healing data and intelligent error handling.[00:29:03] Human-Augmented AI in Olympia: Discover how Olympia's AI consultants are augmented by human expertise, creating a hybrid model that enhances service quality.[00:41:00] The Future of AI in Software Development: Obie reflects on the current AI revolution and draws parallels with the early days of Ruby on Rails, offering insights into the future of AI in software engineering.

    Key Takeaways

    The Role of Ruby in AI: Ruby's syntax and readability play a significant role in creating maintainable AI-driven applications.AI Integration Complexity: Handling external APIs and dependencies requires robust error management and creative solutions like evals and guardrails.Innovative Account Management: Obie's approach to AI-driven account management offers a glimpse into the future of business automation.AI's Impact on Software Development: AI has the potential to revolutionize software maintenance, making it more robust and adaptable.

    Resources Mentioned

    Obie's LinkedIn: Obie FernandezObie's Twitter: @obieObie's Blog: MediumOlympiaUpcoming Book: Patterns of Application Development Using AI by Obie FernandezScience Fiction Recommendation: Ian Banks' BooksThanks 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:

    Apple PodcastsSpotify

    Or search "Maintainable" wherever you stream your podcasts.

    Keep up to date with the Maintainable Podcast by joining the newsletter.

  • Topics DiscussedCharacteristics of Well-Maintained Software: Tekin emphasizes the importance of software that is easy to change and tailored to the team's needs.Balancing Complexity and Team Size: Tekin discusses how his small team manages complexity and features to maintain sustainable work practices without overburdening the developers.GovUK Project Insights: Tekin shares his experiences working on the GovUK project, highlighting the challenges and breakthroughs in rationalizing the UK's government digital real estate.Version Control Best Practices: Tekin and Robby delve into the importance of well-written Git commit messages and how they preserve institutional knowledge.Connecting with End Users: Tekin advocates for developers to get closer to end users to better understand their needs and deliver more effective solutions.Key TakeawaysMaintaining software sustainability is crucial, especially for small teams.Intentional decisions about growth and complexity can prevent burnout and maintain productivity.Direct interaction with end users can significantly improve software quality and usability.Effective version control practices help preserve valuable institutional knowledge.Organizations should balance parallel work to avoid overburdening development teams.Resources MentionedGovUK GitHub RepositoryProgramming as Theory Building by Peter Nauer User Story Mapping by Jeff PattonA Branch in Time (a story about revision histories)Tekin on Ruby.socialJoin Together CooperativeBook Recommendation: Palestine +100: Stories from a Century After the Nakba

    Don't miss this insightful conversation with Tekin Süleyman as he shares his journey and best practices for maintaining sustainable software within small teams.

    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:

    Apple PodcastsSpotify

    Or search "Maintainable" wherever you stream your podcasts.

    Keep up to date with the Maintainable Podcast by joining the newsletter.

  • Ryosuke shares his insights on:

    Ownership in Software Maintenance: The role of single-threaded ownership and dedicated teams in maintaining software and shared libraries.Technical Debt: How his definition of technical debt has evolved over the years and strategies to manage it effectively.Monitoring and Alarming: The importance of comprehensive monitoring and alarming systems in handling legacy software and ensuring reliability.Change Management: Best practices for change management, including preparing for worst-case scenarios and automating processes to reduce risks.Phased Rollouts and Feature Flags: Implementing phased rollouts and using feature flags to manage changes safely and gradually.Cell-Based Architecture: How cell-based architecture enhances scalability and reliability, and the challenges of maintaining multi-cell systems.Operational Excellence: Continuous deployment, regular dashboard reviews, and technologies used in orchestration to achieve operational excellence.

    Ryosuke also discusses his current role and responsibilities as a software engineer and his consulting work with OpsVL, where he helps organizations raise their operational standards.

    Resources MentionedRyosuke Iwanaga on LinkedInOpsBR Software Technology Inc.Cell-Based Architecture

    Tune in to this insightful episode to learn more about maintaining healthy and scalable software systems.

    About the Guest:

    Ryosuke Iwanaga is the President of OpsBR Software Technology Inc. He has extensive experience in software engineering, including roles in sales engineering, support engineering, and data center operations. Ryosuke is passionate about operational excellence and helping organizations improve their software systems.

    Follow Ryosuke on Social Media:

    LinkedInThanks 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 soon, 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! Check them out!

    Subscribe to Maintainable on:

    Apple PodcastsSpotify

    Or search "Maintainable" wherever you stream your podcasts.

    Keep up to date with the Maintainable Podcast by joining the newsletter.

  • Welcome to the Maintainable Software Podcast! In this episode, Robby speaks with Julia Ferraioli, an Open Source AI/ML Strategist at AWS and co-founder of Open Source Stories. Julia joins us from Seattle, Washington, and shares her insights into the world of open source, AI, and software maintainability.

    Key Topics:

    Well-Maintained Software: Julia shares her thoughts on the characteristics of well-maintained software, emphasizing the importance of avoiding "clever" code that is often unmaintainable.
    Creative vs. Assembly Process: The discussion touches on the balance between software as a creative endeavor and an assembly process, highlighting the need for maintainability.
    Ternary Operators and Readability: Julia provides her perspective on the use of ternary operators and how certain programming language features can impact code readability and maintainability.
    Open Source Stories: Julia discusses the origins and goals of Open Source Stories, a narrative project that captures the untold stories of open-source contributors.
    Challenges in Open Source: The episode delves into the challenges faced by open source contributors, including cultural context, erasure, and the lack of exit interviews.
    Research and Software Maintenance: Julia's background in machine learning research offers a unique perspective on the intersection of research and software maintenance.
    Technical Debt: A broader definition of technical debt is explored, encompassing work deferred and cultural issues within organizations.
    Effective Strategies: Julia shares strategies for addressing technical debt and navigating conversations about prioritizing technical improvements.
    Metrics and Developer Experience: The importance of context in metrics and the value of developer experience feedback are discussed.
    AI/ML Tools: Julia provides her predictions on the impact of AI/ML tools on software maintenance in the coming years.

    Resources Mentioned:

    Open Source Stories
    Feminism is for Everybody by Bell Hooks

    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 soon, 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! Check them out!

    Subscribe to Maintainable on:

    Apple PodcastsSpotify

    Or search "Maintainable" wherever you stream your podcasts.

    Keep up to date with the Maintainable Podcast by joining the newsletter.

  • In this episode of Maintainable, Robby Russell sits down with Tanmai Gopal, the CEO and co-founder of Hasura. Tanmai shares his insights into the characteristics of well-maintained software and the importance of a codebase that no team member fears. He emphasizes the need for accessibility and understandability in code, making it easier for developers to work with and iterate upon.

    Tanmai dives deep into the metaphor of technical debt, urging teams to prioritize product outcomes over best practices. He highlights the value of addressing technical debt contextually and in a way that aligns with product goals.

    A significant portion of the discussion revolves around the concept of the "super graph" in GraphQL. Tanmai explains how a unified API, created through federated GraphQL, can streamline API integration and reduce latency. He compares GraphQL with RESTful APIs, showcasing the advantages of a graph-based approach for handling complex data relationships.

    Tanmai also introduces Hasura's platform, which introspects databases, code, and APIs to create a comprehensive super graph. This platform simplifies API management, making it easier for developers to maintain and evolve their applications.

    Listeners will also learn about Hasura's upcoming user conference and the new features they plan to unveil. Tanmai shares his top science fiction book recommendations and where to follow his thoughts on software engineering online.

    Key Takeaways:The importance of a fearless codebase for well-maintained software.Strategies to improve code accessibility and understandability.The metaphor of technical debt and its contextual importance.The concept and benefits of a super graph in GraphQL.How Hasura simplifies API management through introspection.Upcoming Hasura user conference and new features.Resources Mentioned:HasuraTanmai Gopal on LinkedInN.K. Jemisin's Broken Earth TrilogyNaomi Novik's UprootedMartha Wells' Murderbot DiariesThanks 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 soon, 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! Check them out!

    Subscribe to Maintainable on:

    Apple PodcastsSpotify

    Or search "Maintainable" wherever you stream your podcasts.

    Keep up to date with the Maintainable Podcast by joining the newsletter.

  • In this episode of the Maintainable Software Podcast, Robby Russell sits down with James Socol, a Staff Engineer at Fastly, to discuss the art of maintaining legacy code and the nuances of technical debt versus technical depreciation.

    Key Topics Discussed:Characteristics of Well-Maintained Code: James shares his insights on what defines well-maintained code, emphasizing the importance of continuous maintenance, testing, and encapsulation.Technical Debt vs. Technical Depreciation: James introduces the concept of technical depreciation, distinguishing it from technical debt and explaining how time affects software maintenance.Balancing Old and New Patterns: The discussion explores the challenges of integrating modern standards into legacy systems and finding a healthy balance.20% Time for Maintenance: James advocates for dedicating a portion of engineering capacity to maintenance tasks, drawing parallels to Google's 20% time concept.Onboarding Strategies: James offers valuable advice for new hires, emphasizing observation, gradual involvement, and building social capital within the team.Continuous Delivery and Big Changes: Insights into managing significant changes in a continuous delivery environment, with practical strategies for maintaining stability.Resources Mentioned:Riot Engineering Blog: A Taxonomy of Tech DebtSilicon Valley Product GroupLaura Hogan's Donut TheoryBooks:Getting to Yes by Roger Fisher & William UryTurn the Ship Around by L. David MarquetThanks 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 soon, 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! Check them out!

    Subscribe to Maintainable on:

    Apple PodcastsSpotify

    Or search "Maintainable" wherever you stream your podcasts.

    Keep up to date with the Maintainable Podcast by joining the newsletter.

  • In this episode of Maintainable, Robby chats with Paola Ducolin, Staff Engineer at Datadog. Paola shares her insights on the characteristics of well-maintained software, the common struggles teams face, and effective strategies for working with stakeholders to prioritize refactoring.

    Key Topics Discussed:Characteristics of Maintainable Software: Paola explains the importance of well-documented code and having tests that automatically detect breaks.Challenges in Maintaining Software: The impact of business pressures on maintaining code quality and how teams can navigate these challenges.Working with Stakeholders: Strategies for communicating the importance of refactoring and measuring the impact of technical debt on business objectives.Role of Staff Engineers: Paola’s journey to becoming a staff engineer and the responsibilities that come with the role, including coordination and networking.Documentation and Design Systems: The power of documentation and how design systems can serve as a model for well-documented and maintainable code.Observability and Monitoring: An overview of Datadog's tools for observability and monitoring, and how they help in maintaining software quality.Resources Mentioned:DatadogMy Path to Staff EngineerSarah Drasner: The Art of Code CommentsBook RecommendationsRadical CandorCrucial Conversations

    Be sure to follow Paola on LinkedIn and stay tuned for more insightful conversations on Maintainable.

    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 soon, 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! Check them out!

    Subscribe to Maintainable on:

    Apple PodcastsSpotify

    Or search "Maintainable" wherever you stream your podcasts.

    Keep up to date with the Maintainable Podcast by joining the newsletter.

  • In this episode, Robby welcomes Robin Heinze, Director of Engineering at Infinite Red, to discuss the intricacies of building and maintaining robust software systems. Key topics covered include:

    Characteristics of Maintainable Software: Robin shares insights from her team on what makes software maintainable, emphasizing the need for clear documentation, robust setup scripts, and ongoing code refinement.Technical Debt: They delve into managing technical debt, particularly in a consultancy setting, and how to balance client expectations with software quality.React Native: Robin explains the advantages of using React Native for cross-platform development, highlighting its efficiency and accessibility to a broader range of developers.Consultancy Challenges: The conversation also covers the unique aspects of working in a consultancy, including how to embed standards while respecting client processes.

    Major Takeaways:

    Effective communication and a proactive approach to maintenance are crucial in software development.Visual elements like graphics can significantly enhance the accessibility and appeal of open source projects.Book Recommendation:A Thursday Murder Club Mystery Series by Richard OsmanHelpful Links:React NativeInfinite RedChain React ConferenceReact Native Radio Podcast

    For more insights, make sure to follow Robin on:

    LinkedInTwitterThanks 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 soon, 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! Check them out!

    Subscribe to Maintainable on:

    Apple PodcastsSpotify

    Or search "Maintainable" wherever you stream your podcasts.

    Keep up to date with the Maintainable Podcast by joining the newsletter.

  • In this episode of Maintainable, Robby welcomes Scott Hanselman, VP of Developer Community at Microsoft and host of the Hanselminutes Podcast, to discuss the emotional side of maintainable software. Scott shares his thoughts on fear as a common thread in poorly maintained software, the importance of building a team culture of trust, and how finding a good work-life balance helps create better software.

    The Role of Fear in Technical Debt

    Scott believes that if you fear the software you work on, it's a tell-tale sign that it has maintainability issues.Technical debt is rooted in fear--either fear of making a change that will break something or fear of being unable to change something when needed.He encourages teams to talk openly about their fears and anxieties regarding the software and to consider what things give them confidence in the codebase.

    Building a Team Culture of Confidence

    Scott emphasizes the importance of empathy in overcoming technical debt and making software more maintainable.Senior engineers and team leads have a responsibility to make junior developers feel safe enough to speak up and ask questions.He advocates for providing new hires with small, achievable tasks to build their confidence and trust in the software.Scott encourages teams to use "inner loop" and "outer loop" thinking.Inner loop - The cycle of making a change, hitting f5, and seeing changes immediately.Outer loop - Things like deploying the codebase, getting it tested, ensuring production stability.Both experienced and junior engineers have their own inner and outer loops as individuals, and continuous improvement at all levels is key.

    Overcoming Fear, Embracing Maintainability, and Finding Balance

    Scott shares stories about Microsoft's journey with open-source software and how that process has shaped the company's culture around maintainable code.He talks about the importance of striking a balance between source-opened and open-source software and finding the sweet spot for a project or organization.Scott warns against the trap of striving for unattainable perfection. Aiming for good, solid repeatable work over perfection ultimately yields better results.He uses his own projects, like the Hanselminutes podcast, as examples of focusing on consistent outputs and utilizing a simple workflow.Scott advocates for using AI tools to transcribe coding sessions, freeing up developers from extensive note-taking.Book Recommendation:The Daily Stoic By Ryan HolidayScott Hanselman - Personal WebsiteHanselminutes Podcast.NET Open Source History: .NET Core | Microsoft LearnHelpful Links:Scott Hanselman - Personal WebsiteHanselminutes Podcast.NET Open Source History: .NET Core | Microsoft LearnThanks 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 soon, 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! Check them out!

    Subscribe to Maintainable on:

    Apple PodcastsSpotify

    Or search "Maintainable" wherever you stream your podcasts.

    Keep up to date with the Maintainable Podcast by joining the newsletter.

  • In this episode of Maintainable, Robby chats with Stig Brautaset, Staff Software Engineer at CircleCI. Stig shares his insights on maintaining well-documented but complex legacy code, the impact of team dynamics on software maintenance, and his experiences with the SBJSON library.

    Stig discusses the characteristics of well-maintained software, emphasizing the importance of team experience, domain knowledge, and risk appetite. He reflects on his own career journey, highlighting the transition from overconfidence to a balanced approach to risk-taking.

    A significant portion of the conversation delves into Stig's concept of "Alien Artifacts," which describes highly resistant legacy code written by highly skilled engineers. He explains the challenges of modifying such code and shares examples from his own experiences.

    Stig also talks about his work on the SBJSON library, addressing the complexities of handling multiple versions and dependency conflicts. He advocates for developers maintaining the software they ship and discusses the balance between shipping features quickly and maintaining long-term code quality.

    Key Takeaways

    The influence of team dynamics on software maintenanceUnderstanding the concept of "Alien Artifacts" in legacy codeStrategies for handling multiple versions of a software libraryThe importance of developers being on call for the software they shipManaging different types of technical debtBook Recommendation:The Scout Mindset by Julia GalefStig Brautaset on LinkedInAlien Artifacts Blog PostSBJSON Library CircleCIThe Confident Commit PodcastHelpful Links:Stig Brautaset on LinkedInAlien Artifacts Blog PostSBJSON Library CircleCIThe Confident Commit Podcast

    Want to share your thoughts on this episode? Reach out to Robby at [email protected].

    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 soon, 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! Check them out!

    Subscribe to Maintainable on:

    Apple PodcastsSpotify

    Or search "Maintainable" wherever you stream your podcasts.

    Keep up to date with the Maintainable Podcast by joining the newsletter.

  • Join Robby as he welcomes Brit Myers to the podcast. Brit, currently thriving as the VP of Engineering at System Initiative, discusses the intricacies of maintaining software. She emphasizes the importance of navigable software, where the ease of tracing the code and understanding its structure is paramount. Brit highlights the significance of clear naming conventions and inline documentation, as they help in maintaining a cohesive narrative within the software.

    The conversation touches on the challenges posed by discrepancies in vocabulary between product management and engineering, and how glossaries can bridge these communication gaps. Brit advocates for the use of glossaries more as a reflective tool rather than a proactive one, given the dynamic nature of software development. She also delves into strategies for managing legacy code and technical debt, proposing a pragmatic approach where wrapping and modularizing legacy components can mitigate risks.

    She discusses the balance between immediate feature delivery and long-term code health, stressing the importance of aligning technical risks with business objectives. The episode explores the impact of company culture on development practices, the benefits of synchronous work environments, and the evolving landscape of DevOps. Tune in to tap into Brit’s valuable wisdom.

    Book Recommendation:Crucial Conversations: Tools for Talking When Stakes are High By Kerry Patterson, Stephen R. Covey, Joseph Grenny, Ron McMillan, and Al SwitzlerHelpful Links:System InitiativeBrit on LinkedInSPACE FrameworkDORA metricsThanks 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 soon, 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! Check them out!

    Subscribe to Maintainable on:

    Apple PodcastsSpotify

    Or search "Maintainable" wherever you stream your podcasts.

    Keep up to date with the Maintainable Podcast by joining the newsletter.