Talks
Speakers
Events
Topics
Sign in
Home
Talks
Speakers
Events
Topics
Leaderboard
Use
Analytics
Sign in
Suggest modification to this talk
Title
Description
RailsConf 2018: Down The Rabbit Hole: An Adventure in Legacy Code by Loren Crawford Legacy code is unpredictable and difficult to understand. Most of us will work with legacy code, so it’s important for us to understand its major pain points and their underlying causes. You’ ll come away from this talk with practical strategies to help you understand, improve, and even love legacy code.
Date
Summarized using AI?
If this talk's summary was generated by AI, please check this box. A "Summarized using AI" badge will be displayed in the summary tab to indicate that the summary was generated using AI.
Show "Summarized using AI" badge on summary page
Summary
Markdown supported
In the talk "Down The Rabbit Hole: An Adventure in Legacy Code" at RailsConf 2018, Loren Crawford explores the complexities and challenges of working with legacy code while offering practical strategies for improvement. The main theme revolves around understanding legacy code, its pain points, and effective methods for enhancing it. Key points discussed include: - **Definition of Legacy Code**: Crawford defines legacy code as working software that is difficult to change and often contains complex business logic written by various developers over time. Legacy code, while cumbersome, often signifies the success of a company. - **When Not to Change Legacy Code**: Highlighting Sandi Metz's advice, Crawford suggests that certain pieces of code, if seldom accessed, may not merit changes due to the risks of introducing bugs. - **Reasons to Change Legacy Code**: Using Michael Feathers' framework, the speaker outlines four primary reasons for altering legacy code: adding features, fixing bugs, optimizing performance, and refactoring. - **Add Tests Before Changes**: Crawford advocates for adding tests before modifying existing code to ensure current functionality remains intact. He emphasizes that tests serve as documentation and help prevent regressions. - **Incremental Improvements**: The talk underscores the importance of incremental improvements to legacy code by integrating enhancements while addressing new functionalities, rather than setting aside time for large refactoring efforts. - **Testing and Bug Fixing**: Crawford shares methods for writing tests to replicate bugs and ensure that changes made to the codebase do not disrupt existing functionalities. Throughout the talk, Crawford shares practical examples, such as an online yarn marketplace where new features and bug fixes are addressed through proper testing strategies. He illustrates how to add tests for searching specific yarn products and handling unexpected inputs. In conclusion, the key takeaways from Crawford’s presentation include: - The value of understanding and embracing legacy code as a part of successful software development. - The necessity of writing tests for untested code to enhance knowledge and documentation of the codebase. - The importance of making incremental improvements to legacy code, rather than attempting to refactor everything at once. - Encouragement to seek help and foster collaborative efforts within development teams for better handling of legacy code. Crawford recommends several resources for further reading, including works by Michael Feathers and Martin Fowler, to support ongoing education about legacy code management.
Suggest modifications
Cancel