I’ve heard people say that software should be like building. You make a plan; buy the materials; and build it. Would remodeling be like new construction? Kind of. You make a plan, find a contractor, agree on the specs, order materials, demo (demolish) the unwanted parts of the building and build it out. Simple step by step.
Does it go that way?
We are remodeling a two bedroom apartment. It has not had a major renovation in decades. The design and planning process was all very orderly. Though everything changed once the demo (demolition) began. Within minutes I had to react to a series of unknowns that could only be known once the project started.
As soon as the cabinets came down, a long hidden and slow leak reveled itself behind the sink. This was like an unknown and unknowable requirement. The cabinets had to come down to reveal that need.
Next, pulling up the bedroom carpet and removing the baseboard revealed drywall damage. Another latent defect! There was a leak in the outside wall, somewhere. Was it the foundation/upper wall boundary? We dug a hole to inspect the foundation wall top. It looked fine. Then we directed a forceful hose to the foundation top, testing a hypothesis; no water appearing on the inside floor. We had a bug hunt. What is the cause of this mysterious behavior. After more drywall was removed the root cause was discovered; it looks like the leak originates around the window. The hose reveals the leak’s location. Bug found!
Our plan also included opening a wall to create a built-in workspace and closet. As the wall was demoed, a electrical junction box lay hidden right in the middle of the wall. The wall plate had been painted over for years. This is essentially an immovable object, as the junction box is anchored in concrete. Metaphorically it’s binary code, where the original source code or tools no longer exist. We’d have to create a work-around.
Notice the just-in-time design on the wall! No formal UML needed.
I am not really surprised by any of this. Developing software prepared me to expect surprises in a project of all but trivial complexity. Remodeling is a lot like software. A plan of attack is good, but don’t expect the plan to stay intact; You’ll have to react.