Refactoring for Software Design Smells Managing Technical Debt

Oh yes finally I book with topic which really important in IT field.

It’s very interesting, I think the technical debt is way too few discussed in IT industry, almost nobody talks about challenging of legacy code and improve of it.

The book author speaks even about smells of abstractions!

Many topics covered in this book, but one interesting topic was decomposition.
Duplication of code is common problem in programming and sometimes it’s hard to avoid.
Encapsulation have too smells, that actually interesting. The book consists good examples of java code.

I have impression that refactoring is a technique where you look at current state of your software and slowly but day after day remove block after blocks, making sure that nothing is broken and business requirements are not violated.

 The approach is interesting,

The author of this book provides definitely interesting approaches for different “design smells”, which can help, if you as developer see similar situation in your software project.

“The key take-away from this experience is that post-refactoring, testing alone is not sufficient to ensure the correctness of the behavior. Manual code and design reviews are needed to ensure that the behavior is preserved, especially when refactoring critical or multithreaded components.!”

This interesting statement, but I would disagree, because if unit test done right, you will catch those bugs before release! Still there cases , where tech debt so great , that manual testing is only one option left, I recommend then take this book to the heart and make workshops from it, so the understanding will be both in managers and tech people heads.

Summary: This book covers both parts of software engineering problems, the stuff with programming and stuff with designing. I like how author discuss the refactoring approaches and gives hints about what to expect after those changes are done in the codebase. This book is definitely a must have!

Whom I can recommend this book? Techlead’s, Senior developers and in general to any developer , who wish to see beyond only implementation of technology and of course to software architects.