Maintainable

Michael Feathers: Be Curious & Chase The Rabbit Holes


Listen Later

In this episode of the Maintainable Software Podcast, Robby speaks with Michael Feathers, Director at R7K Research & Conveyance and author of "Working Effectively with Legacy Code." Michael shares his unique definition of legacy code, emphasizing that legacy code is essentially code without tests. This foundational idea highlights the critical role of automated testing in refactoring and maintaining codebases.

Michael and Robby dive into common issues developers face, such as low test coverage and the perceived optionality of writing tests. They explore how ego and human nature often influence developers' decisions not to write tests, even when frameworks provide the tools to do so.

One of the intriguing concepts discussed is a test-first IDE, which encourages writing tests before methods. Michael shares patterns and practices for integrating testing into existing projects, emphasizing the importance of social reinforcement and team collaboration in improving test coverage.

The conversation also touches on the importance of code quality traits like understandability and simplicity. Michael stresses that empathy in code quality impacts co-workers and that objective measures for code quality often stem from solid design principles. They also discuss the role of code analysis tools in understanding code quality.

Removing unused code from applications is another key topic, with Michael sharing insights on the relationship between business decisions and code maintenance. The discussion extends to Conway's Law and its effect on code design, providing valuable context for understanding how organizational structure influences software development.

Michael shares lessons from his early career, emphasizing the importance of curiosity and deep systems thinking in software development. He also discusses his upcoming projects, including the second edition of "Working Effectively with Legacy Code."

Key Takeaways:
  • Legacy code is code without tests.
  • Automated testing is crucial for refactoring and maintaining codebases.
  • Developers often perceive writing tests as optional, impacting code quality.
  • Social reinforcement and team collaboration are vital for improving test coverage.
  • Empathy in code quality positively affects co-workers.
  • Solid design principles help objectively measure code quality.
  • Removing unused code is essential for maintaining a clean codebase.
  • Conway's Law illustrates how organizational structure impacts code design.
  • Curiosity and deep systems thinking are valuable traits for software developers.
Resources Mentioned:
  • [Book] Working Effectively with Legacy Code
  • Michael Feathers on LinkedIn
  • Michael Feathers on Twitter
  • R7kr Research & Conveyance
  • R7kr Research & Conveyance on Twitter
  • Turtles, Termites, and Traffic Jams
  • Conway's Law
  • Socio-Technical Seeing: Modeling The Dynamics Of Code And Attention
  • Michael's blog

Subscribe to Maintainable on:

  • Apple Podcasts
  • Spotify

Or search "Maintainable" wherever you stream your podcasts.

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

...more
View all episodesView all episodes
Download on the App Store

MaintainableBy Robby Russell

  • 5
  • 5
  • 5
  • 5
  • 5

5

30 ratings


More shows like Maintainable

View all
Hanselminutes with Scott Hanselman by Scott Hanselman

Hanselminutes with Scott Hanselman

378 Listeners

Software Engineering Radio - the podcast for professional software developers by se-radio@computer.org

Software Engineering Radio - the podcast for professional software developers

263 Listeners

The Changelog: Software Development, Open Source by Changelog Media

The Changelog: Software Development, Open Source

286 Listeners

Thoughtworks Technology Podcast by Thoughtworks

Thoughtworks Technology Podcast

42 Listeners

Talk Python To Me by Michael Kennedy

Talk Python To Me

584 Listeners

Software Engineering Daily by Software Engineering Daily

Software Engineering Daily

630 Listeners

Soft Skills Engineering by Jamison Dance and Dave Smith

Soft Skills Engineering

272 Listeners

Go Time: Golang, Software Engineering by Changelog Media

Go Time: Golang, Software Engineering

128 Listeners

JS Party: JavaScript, CSS, Web Development by Changelog Media

JS Party: JavaScript, CSS, Web Development

91 Listeners

Syntax - Tasty Web Development Treats by Wes Bos & Scott Tolinski - Full Stack JavaScript Web Developers

Syntax - Tasty Web Development Treats

986 Listeners

REWORK by 37signals

REWORK

210 Listeners

CoRecursive: Coding Stories by Adam Gordon Bell - Software Developer

CoRecursive: Coding Stories

185 Listeners

The Stack Overflow Podcast by The Stack Overflow Podcast

The Stack Overflow Podcast

63 Listeners

Oxide and Friends by Oxide Computer Company

Oxide and Friends

47 Listeners

The Pragmatic Engineer by Gergely Orosz

The Pragmatic Engineer

48 Listeners