I am in the middle of much thought regarding communication between multiple servers, some production, some development and some on customer’s premises that are fire walled from the world. Getting all of these to talk properly is getting very tumultuous and causing lots of necessity to tear things apart and start over.
So, that go me wondering when is a good time to tear down the walls and start over (using what we have learned from the past to speed construction and build a better foundation for the future of course). My current issue is programming of software, but I have run into it with business processes, employees and even constructing several buildings over the years. It is a question that actually has a time and place in most every decision.
One of the trickiest things is to even notice that parts of our “building” are getting rickety because there are pieces nailed onto other pieces that were nailed onto pieces before it. In the case of houses and office buildings, that is a little more obvious, but not so much with intellectual issues. That being said, I have seen some contractors try to hide lots of things behind the sheet rock. Sometimes the best way to see the band-aids is to have an outsider take a peek (when working with a contractor, you are typically the outsider).
Once you have identified that something is getting cobbled together, you have to identify whether it is safe to keep it as it is (or safe to add to it). Safety can be defined in terms of future costs, revenue, capacity, morale or actual personal safety (among other things). If this is putting you in a dangerous future situation, you need to correct it immediately.
If it is “safe” to keep it as is, you may decide that it is not aesthetically pleasing. This could relate to how it looks to yourself, your staff, your customers or potential investors of your “house”. If you decide that it could “look” better, then you need to decide if now is the time to do it. I often look at the amount of time already being spent on it compared to the time to fix it right. If it is not more than double, I make the extra effort to rebuild it. Typically rebuilding the component from scratch makes the needed repair much quicker, so it costs a lot less than doing the steps separately.
If you decide that it is time to rebuild, then you need to come up with a plan tear out all the bandages and start over on that piece. Of course you need to plan for it to be massively torn apart for the time (perhaps go to a hotel or if rebuilding your stairs, put up a ladder on the outside of the house to get to the second floor). You also need to plan for contingencies to handle customer issues that come up in the meanwhile. The most important part is to come up with a plan to test all affected areas before you start. Following those steps will help to keep your remodel job a lot more manageable.