Home Appliance Repair
Last night, instead of finalizing an app I'm working on for a client, I was playing around with my dishwasher. I'm going to be at the MVP Summit next week and did NOT want to leave my wife alone with the kids and no working dishwasher! It reminded me of my experience a couple of years ago when I had a furnace that didn't want to work.
A furnace (a gas one as we have) seems like such a simple thing: The termostat tells the furnace the house is too cold and the furnace turns on to blow hot air through the house. Once the house is warm enough, the thermostat tells the furnace to turn off. I'm sure many of our clients think the software we bulid is a pretty simple process: Enter a few numbers, drag a few sliders, hit "Submit" and you get your data plotted in a nic pie chart. Easy! But just as we developers put in so much work "behind the scenese" (input validation, unit tests, parameter validation, etc...) so too, do gas furnaces.
Our furnace (like many other gas furnaces, I suspect) has quite a complex cycle between the thermostat saying "I need heat" and actually getting heat. First off, the blower spins up. Time for hot air? Not yet. First, the gas has to flow and something has to ignite it. Our system is pilot-less so there's a heater element. This device is basically a 2-inch piece of material that glows red-hot when the system tells it to. That is actually the second step in the process.
Now the gas flows right? Nope. Before the gas flows, the system must ensure that the heater element is hot enough to ignite the gas. If the heater element was broken and the gas started flowing, instead of heating the house you'd be pumping gas throughout the house. Not good! So there's a heat sensor placed near the heating element. The system tells the heating element to "glow hot". It then waits for the heat sensor to detect that the heating element has gotten hot enough to light the gas. Once this happens, then the system opens the gas flow, the gas ignites and we have hot air to warm up the house.
Not as simple as I had originally thought, but as I learned this, I definitely saw the parallels in my day job of software development. Granted, a fault in my system may generate a nasty error message. A fault in the heater could have much more dire consequences!
Oh yeah, the dishwasher? I don't know what went wrong with that. After pulling it out (its an under-the-counter model) and looking around, nothing seemed out of place. So I turned it on and it started working fine (you know -- the client says, if I do "this" it breaks. You do "this" and it works). Before putting it back under the counter I want to run a few more tests before I mark this bug as "could not duplicate"...