We computer programmers
									hold onto our software designs long after they have become unwieldy. We continue to use and reuse code that is
									no longer maintainable because it still works in some way and we are afraid to modify it. But is it really cost
									effective to do so? Extreme Programming (XP) takes the stance that it is not. When we remove redundancy, eliminate
									unused functionality, and rejuvenate obsolete designs we are refactoring. Refactoring throughout the entire project
									life cycle saves time and increases quality.  
									 Refactor mercilessly to
									keep the design simple as you go and to avoid needless clutter and complexity. Keep your code clean and concise
									so it is easier to understand, modify, and extend. Make sure everything is expressed once and only once. In the
									end it takes less time to produce a system that is well groomed. 
									 There is a certain amount
									of Zen to refactoring. It is hard at first because you must be | 
								  
									able to let go of that perfect design you have envisioned and accept the design that was serendipitously discovered
									for you by refactoring. You must realize that the design you envisioned was a good guide post, but is now obsolete.
									 
									 A caterpillar is perfectly
									designed to eat vast amounts of foliage but he can't find a mate, he must refactor himself into a butterfly before
									he is designed to search the sky for others of his own kind. Let go of your notions of what the system should or
									should not be and try to see the the new design as it emerges before you.   |