Imagine the following scenario: you will be asked to develop a tool from scracth yourself. You came up with a prototype, and they like it. Against all odds, your prototype survives and matures. There is a code review, and everything still looks good. Your manager pats you on the back. Unfortunately, when you are asked about the beta release date, you underestimate the time it takes to complete what, apparently, is just a little extra work.
You understand that you are going to skip the deadline if you have not cracked it. Against your best decision, you continue anyway. Beta is released, everything looks fine, and no one suspects ugliness below. Your plans to fix it during the testing of the tool are suppressed, because you are busy enough, eliminating small problems and adding features offered by beta testers.
At this point, you understand that your code is turning into a chimera. You are afraid for the controllability and scalability of the code. You really want to reorganize it, but it will look like you are not adding anything new and thus are not doing anything. What are you doing?
source share