Recommended to me by: Sam Livingston-Gray
Refactoring is the art of improving software through a series of small steps without changing how it functions, specifically without introducing new bugs. In an attempt to make it closer to a science, Martin Fowler defines a series of recipes to make safe changes, a series of “code smells” that indicate that change is needed, and adds examples and stories along the way.
I bought the book through my job because I was responsible for a whole menagerie of semi-abandoned applications in varying states of disarray, and I wanted ideas and support for how to improve them. The main benefit I got directly from the book is the idea to take very small steps, and to keep checking whether the application still works correctly at each step.
Indirectly, I got a lot of other benefits. I started a weekly study group where we went over 5 pages or so of the book each time, sharing things we agreed and disagreed with and examples from the code we were working on. In theory people were reading ahead, but everyone is busy and I made it welcoming whether people had read the week’s section or not.
It was hands-down the best part of my job, connecting with coworkers outside of my small group, learning together, and hearing how people were improving their code using the techniques we discussed.
Recommended for more experienced programmers who want a deeper understanding of refactoring. Read it with a group if you can!