F5

Before reading this silly tale, you need five pieces of background information:

  1. My family recently had a swimming pool installed at our home.
  2. The pool has a cover with a special pump that sits on top and pumps the rain water away so it's not standing on the cover.
  3. We forgot to have an outlet installed near the pool, so we ran a long extension cord from the cover pump to an exterior outlet on the house.
  4. Here in Champaign, it rained for most of the Labor Day weekend.
  5. This has almost nothing to do with software, unless you count the rather contrived attempt to tie things together at the end.

OK, let's get started.  Sunday evening I stopped for a moment to look out the window into my backyard.  At that very moment, the extension cord on my cover pump sparked loudly and burst into flame.

Remember in Back to the Future when the model car caught fire and Doc Brown gasped?  My reaction was remarkably similar.  Those of you with a copy of the DVD might want to play that scene now to get the proper effect of the story.

Luckily the heavy rain put the fire out quickly.  The cloud of smoke didn't linger too long either.

But with more rain in the forecast I really wanted to get that pump working again.  With 20/20 hindsight it was obvious that the pouring rain had caused an electrical short at the point where the pump's cord was plugged into the extension cord.  I just hoped the pump itself was undamaged.

So I ran out into the rain, grabbed the pump and brought it back into the garage.  Luckily, it still worked!  My mission at this point is clear -- I need to get this pump working again.

If you are a geek like me, you would probably solve this problem very similar to the way I did:

  • Run through the rain out to the woodshop and find another extension cord.
  • Run through the rain over to the swingset you just built, because that's where you left your only roll of duct tape.
  • Run through the rain back to the garage.  Plug the pump into the extension cord and put tons of duct tape around the connection.
  • Run through the rain back out to the pool.  Toss the pump out onto the pool cover.
  • Grab the other end of the extension cord and run through the rain to the outside outlet.
  • Pause for a moment to reflect on the idiocy of plugging something into an electrical outlet while standing in the pouring rain.
  • Look back at the pump and notice that you knocked it over when you pulled the extension cord across the lawn.
  • Run through the rain back to the pump and stand it up vertically again.
  • Run through the rain back the outlet.
  • Pause again and wonder how quickly your wife will find you if you get fried.
  • Look back at the pump and notice that you forgot to re-connect the hose to the output.
  • Run through the rain back to the pump and re-connect the hose.
  • Run through the rain back to the outlet.
  • Remembering that nobody really ever has enough life insurance, pause once again to dry off the plug, using your shirt, which is dripping wet.
  • Plug in the extension cord, look back at the pump, and notice that it still doesn't work.
  • Realize that the original incident probably caused the circuit breaker to be blown.  Run through the rain back to the garage and reset the breaker.
  • Run through the rain back to the pool and see that the pump is finally working again.

At this point I went back into the house, completely soaked and covered with mud.  As I fetched some clean clothes, I realized that my approach to solving this problem was really lame.  I made more trips through the rain than were really necessary.

And then I realized that my lousy problem-solving skills are actually Visual Studio's fault.

Seriously, my approach to this problem reminded me of the way I approach a coding task when I get in too much of a hurry:  Don't take time to think about all the details.  Instead, go for the instant gratification.  Just hit F5 and see if the code works.  When it doesn't, try another quick fix and hit F5 again.  Eventually the code will work, without ever having to give it any real thought.

I think I was more careful back when compilers were slower.  One of my first coder jobs was hacking on an app which took 11 hours to compile. The linker alone took 45 minutes, and I often had to spend that time listening to my boss gripe about how spoiled I was to have machines that could recompile so quickly:  "Back when I was a coder on this project we had to submit punch cards to the mainframe operator and wait two days to see if we had a syntax error."

I don't think I was spoiled back then, but I certainly am now.  Visual Studio recompiles so fast that I can't resist hitting F5.  I want to see my code work.  Right now.

But I'd have to admit that when I hurry and do this kind of quick-fix coding, I usually end up all muddy and soaked: 

  • Bugs get left in my code because I don't take time to catch the screw cases.
  • I rewrite functions we've already got because I don't take time to look in our libraries. 
  • I break code which already works because I don't take time to read it. 

It's great to have fast developer tools, but I still do better work when I take my time.  And so do you.

P.S.  Pedantic readers will observe that Intel deserves its share of my tongue-in-cheek blame.  After all, my faster compiles are probably at least somewhat related to the fact that the CPU in my ThinkPad is over 250 times faster than the one in that Mac Plus I was using fifteen years ago.  Point conceded, but it's very fashionable to blame Microsoft these days for things that are not really their fault, so I'm just being trendy.

P.P.S.  Readers with real carpentry skills will observe that there is absolutely no good reason to need duct tape during the construction of a swingset.  Point conceded.  Please, don't ask.