May 27, 2013
Posted by on
The difference between refactoring and redesign is 10 minutes.
Ten minutes a lot of time. It is just enough to get drown. If you are young it can be enough for a quick something, for example to run a mile. And ten minutes is the difference between refactoring and redesign. Anything that takes longer than ten minutes can not be refactoring. That can be redesign.
Based on these I could imply that refactor is what you can do holding your breathe, but that won’t work. First of all there are only a few men, who can hold their breathe for ten minutes and usually they are not quite good at programming. At second thought you need brain power to do programming and the apnoe diving is not about deep sinking… thinking.
So now we know that redesign is something like refactor but it is longer. Horsey refactor is redesign. What about partial?
Partial redesign is practice when you can not perform a whole redesign and therefore you chop it up. There can be multiple reasons for not being able to perform the whole redesing in a single sprint besides being old. There may not be enough time. That is a 100% indicator: if you planned redesign in a sprint and the plan says that it will not fit, you can be very sure, no matter how bad you estimate that it will not fit.
When you chop up a redesign into small drops you have to ensure you have working code after each drop is swallowed. This is also a difference between refactor. When you do refactor you continuously have working code. (Or not.) You can do redesing also that way but sometimes you just decide not to do that since that may be too expensive requiring lot of temporary code that is needed only to keep the code alive during the process and that is not needed nor before neither after the redesign. (Lucky we are. Doing open heart surgery there is no such option.)
So you make partial redesign. And then comes the experience: if you successful with the first drop of the partial redesign it will stuck at that point. There will be no further time to continue with the rest of the redesign. Trust me, I am an engineer: it is the way it is going to be. In other words if the drops do not deliver value individually: better do not do them at all.
Making it clear and clean: If there is a scout camp that has to be redesigned and you want to replace the location of the kitchen and the latrine, do not start transforming the kitchen, because when you stop after the first partial redesign you will have two latrines and no place to eat. And then you will be in deep trouble.