Lately, I’ve been doing a lot of home renovations – I’d rather not be, but a series of major multi-system failures cascaded into a job I needed to have done but had no way to afford.
I grew up in a family full of carpenters and tradesmen, I figured I’d take it on, with some assistance from friends. I think the progress so far is good, and I realize that the success is due in large part to how I’m planning and executing the project.
I realized tonight that my day job as an SRE/DevOps advocate is directly applicable to home repairs, at least as far as systems thinking and relentless refinement of work around newly learned details of the overall goal.
A Crisis Arises
We arrived home on a Friday evening to quite a scene. There was no hot water, and when I went to go to the basement to troubleshoot, I saw that there was about 2 inches of boiling water in my basement. I had water running down the bathroom wall, and hot water was actively pouring out from the ruptured heater into the basement.
My water heater thermostat had failed, causing it to overheat, which burst a hot water pipe in the wall and the heater itself, and revealed numerous plumbing leaks from poor workmanship.
The only bathroom in the house was completely unusable, with a wife and two small boys – this is our production down, and demanded immediate action.
I could tell right away that the scope of the problem, and the solutions it would require, were going to be massive, so I just focused on the immediate things I had to do so that we could stabilize. I would get the water shut off, a new heater installed, and salvage whatever functionality remained in the bathroom.
In a crisis, it’s easy to get bogged down by incoming urgent demands, but the focus should remain on a key actions to mitigate the immediate danger, and sideline any urgent but unnecessary work from the narrow focus, to be addressed after the crisis is under control.
Prioritizing and Focusing on Immediate Needs
A number of issues popped up along the way, and many of them were addressed as they came up even though it added work – the key was to ask if, at the end of the crisis or delivery of the completed product, would this decision have a negative impact on quality, and if so is the work required now to fix it warranted by that risk?
By assuming that all decisions in the crisis are made in an area where we’re outside normal process, we can understand that something like “the basement is full of electricity conducting water, and the leak has soaked walls full of live wiring” can and should be broken down.
I’ll wear insulating shoes and shut off the power to the areas being soaked, but I won’t fully fix the problem and risks it has created until after the crisis is stabilized.
Protect Scope and Minimize Deliverable Size
The bathroom with the leaks had to be gutted and mold treated, and demanded a major leveling and reinforcement of the floor before I could start building the new bathroom, causing a big job to become a massive one. The discovery that the pipe had been leaking for a long time, and had rotted out 12 feet of the sill beam, caused it to grow even more.
I don’t have a wood shop, and when I started this I didn’t have many tools, so I had to focus on the overall plan, reference the tasks against tool requirements, and factor the cost of tooling into defining priorities and schedules.
At work, I focus on improving tooling only when it has a direct need and clearly defined customer, and minimize the scope of delivery to only what is specifically asked for.
So, while planning and deciding on what I needed, I broke the work down into blocks that addressed critical needs first, and deferred anything that wasn’t going to impact the functional requirements of the project.
In many cases, the original expectation of the finished product changes significantly as work is completed and new things are discovered, so I try to keep a loosely held general strategic goal and focus my tactical decision making on the things that add the most value per unit of work.
Pick Low Hanging Fruit First
In a complex project, there are so many things to do that all seem critical that decision paralysis can bog down progress.
When prioritization seems impossible due to the volume of high priority tasks, taking on the things which have the most short term impact can get the ball rolling.
I focused on addressing the things which directly impacted our ability to use the bathroom, and minimized things which would degrade usability.
Another rule of thumb is that adding a new feature for an unmet need is usually more valuable than refining an existing one, if both are similar priority.
Constant Communication and Feedback with Customer
As much as possible, when a decision comes up which can’t be easily answered with knowledge of existing plans and decisions, the customer should be consulted.
This seems like it might be a bother, but by making ambiguity visible to the customer, and getting a clear decision that all parties understand, a lot of time and energy will be saved compared to a process that “doesn’t bother” the customer until close to delivery.
I made sure that at the end of each sprint or task, I checked in with my family to make sure they knew the plan and what the next milestone would be, and shifted my work around their needs to make it as easy as I could for them.
Final Thoughts
This has been a pretty massive undertaking, but I’ve been able to make good progress without violating any of the agreements made at the outset by using these principles from the software world in the home.