Personally, I think refactoring is one of the best things that ever happened in software development. Everybody who’s ever worked with me will know that I’m a huge fan of refactoring. I don’t like living with broken windows. Refactoring is my tool to fix them. Unfortunately, this tool sometimes becomes an excuse to break windows. People occasionally tend to write bad code because they think they can refactor it later. The idea is good. But a lot of the time the code won’t get refactored at all because project schedule becomes tight or the original author simply forget to do it. Then other people start using and extending it. The next thing you know, it becomes too late or too expensive to refactor. More than 1000 TODOs hanging around in our project is the living proof of that. So please don’t live with broken windows even if you own a glass shop.