The Developer & The Toy Store – Part 2

Have you ever played Battleship?  It's a game where 2 players put their ships on a grid and start guessing coordinates.  If you guess a coordinate where your opponent's ship is located, that counts as a hit.  Each ship takes up 3, 4, or 5 coordinates and once you've guessed all the coordinates of a ship, it's sunk.  The commercial when I was kid had the kid on the losing side exclaim, "You sunk my battleship!".  Good times, good times.

This is part 2 in a series.  If you have no idea why I'm talking about board games from the 1980's, start with Part 1.

Battleship taught me most of what I need for troubleshooting.  I have a bounded set of possibilities, I only get a certain number of attempts, and there's an uncomfortable period during each attempt when something bad may happen to me.  When playing Battleship, you can simply guess at random, or you can employ a directed strategy.  The same is true in troubleshooting.  If you're all over the place, sometimes you'll get lucky and sometimes you'll miss for what seems to be an eternity.

As you're implementing your search strategy, it possible to become too focused.  In the game, for example, it makes little sense to test a coordinate immediately adjacent to your previous guess since the ships are at least 3 units long.  Better to space out the testing and then "walk it in" by focusing in the surrounding area once you get a hit.  The same is true in troubleshooting.  If each test run is simply a close variation on the previous hypothesis, you're in for a long night.  If, however, you take a wider approach and test based on variations that are reasonably separated, you have a much better chance of getting a hit, and then you can hyper-focus on the surrounding areas.

I seem to recall that Battleship was never as much fun as I thought it should be.  When you think about it, there isn't all that much excitement and it doesn't have much to do with the Navy.  Troubleshooting: same story.  It's one of those things that you do that has its ups and downs, but overall you kind of wish you had done something else instead.

The point here is that when you're confronted by a troubleshooting problem, don't just fire at random and hope that you get a hit.  Approach it with a plan, execute, and as you get some success then focus on that area for all it's worth.

Comments are closed here.