Skip to content

Instantly share code, notes, and snippets.

@rowlando
Last active August 15, 2021 10:47
Show Gist options
  • Save rowlando/5757eccfc94fef7abb6a20594004696b to your computer and use it in GitHub Desktop.
Save rowlando/5757eccfc94fef7abb6a20594004696b to your computer and use it in GitHub Desktop.

Books

  • Working Effectively With Legacy Code by Michael Feathers
  • Beyond Legacy Code by David Scott Bernstein
  • Getting Started With DDD When Surrounded By Legacy Systems by Eric Evans

Podcasts

Legacy Code Rocks Menders love fixing bugs, refactoring, and testing to make software applications more stable, scalable and secure.

Maintainable FM Feel like you’re hitting a wall with your existing software projects? You're not alone. On Maintainable, we speak with seasoned practitioners who have worked past the problems often associated with technical debt and legacy code. In each episode, our guests will share stories and outline tangible, real-world approaches to software challenges. In turn, you'll uncover new ways of thinking about how to improve your software project's maintainability. We're in this together. Enjoy the show!

Legacy Code episode on Codurance Podcast Great discussion covering the challenges and techniques of testing legacy code, plus a good discussion towards the end of metaphors that developers and tech leads can use to help business understand the trade-offs of when deliberately delivering faster and not paying off the technical debt.

Techniques

Golden Master The comments section seems to make the point that Golden Master and Approval Tests are the same thing by different names.

Approval Testing Discusses the technique some more and links to some other good resources, including a screencast. Emily Bache's blog is a treasure trove and she has a lot of material on coding katas.

3 steps to add tests on existing code when you have short deadlines A walk through of how to do Approval Testing or Characterisation Testing in JavaScript.

Courses

Surviving Legacy Code We all have legacy code, meaning profitable code that we’re afraid to change. It doesn’t matter who wrote it, in which language, nor when. It matters that we feel the fear now and need to deal with it. Rewrite or refactor? How do we write tests? There’s so much to change; how do we get started? In the typical programmer’s day job, there’s no time to learn how to do this. We’re already behind schedule and the cost of fixing the legacy code is crushing us. We need a way to learn how to do this safely, correctly, and eventually, even quickly. That’s what Surviving Legacy Code is about. Mat Moore has done part of this course and wrote up notes here and here.

Agile Software Development: Dealing with Legacy Code and Technical Debt In nearly every organization, developers are forced to grapple with old code that gets in the way of writing new features. Is legacy code limiting your development team's agility? If so, let this course be your guide for how to embrace a legacy system and improve it while paying down technical debt. Instructor Scott Ford explains how to review legacy code and fence in the technical debt by creating and running a test suite. He also demonstrates how to introduce dependency management and update dependences and tools, how to remove noise and distractions from your code, and how to keep technical debt at bay by remaining test driven and monitoring code quality.

Unit Testing Legacy Code In Java | Pluralsight One of the biggest challenges developers encounter in their career is having to maintain an existing codebase with little or no tests and unclear, tangled code. In this course, Unit Testing Legacy Code in Java, you will learn techniques to get a legacy and untested Java application, a small but realistic Java application to provide services to a hospital emergency room, under test incrementally as you work on it.

Approval Tests for .NET ApprovalTests is an open source library that enables unit tests to go beyond simple asserts. It allows complex verification of system output that would otherwise be hard and time-consuming to implement using conventional asserting. It is also an essential tool to quickly get legacy code under test before refactoring it. (You can find resources in other languages on Approval Tests website)

Blogs

https://understandlegacycode.com/

Videos

Refactoring Legacy Code series by Jovche M on YouTube "I'm super excited to announce that I've recorded a series of videos where I demonstrate refactoring legacy code, based on "Working effectively with legacy code" by @mfeathers and "Refactoring" by @martinfowler. Hopefully you'll find it useful." Jan 2020

Communities

Legacy Code Rocks Slack community Want to connect with like-minded people who care about code quality, testing, refactoring, DevOps, Agile and more? You've come to the right place. Our community of software menders is a great place to connect with other folks who are working on making software a little bit better, one unit test at a time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment