Fantastic article. I particularly like that you address that it can be very hard to refactor code, but many of the refactoring problems you mention are solved by focusing on writing a good suite of tests
I agree with Maxi Contieri. We need more articles like this