Originally posted by Ram Gokul:
As a developer , what are main reasons for refactoring ? Have you encountered such situations wherein management has asked for justification.
( we have a tough budget process and hence the question...)
One of the most important reasons for refactoring is that design degenerates over time. Even if you have a perfect design today, with tomorows new requirements it won't be perfect any more.
So, the longer a project takes, the more inapropriate the design becomes, if you don't do something against it. New features will take longer and longer, the risk of introducing bugs increases etc. Finally, the project becomes unmaintainable.
Refactoring is one of the most effective techniques to work against a decaying design, and thereby to extend the lifetime of a project and save the investment of the company and its customers.
"Design Debt" is a powerful metaphor that also non-technical people should have no problem to connect to:
http://www.jamesshore.com/Articles/Business/Software%20Profitability%20Newsletter/Design%20Debt.html
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus