## Archive for January, 2018

### In Search of the Silver Bullet

To make a beginning, you must have already reached the end. Only by solving a problem does one really understand the problem at hand.

There is a tendency in computing to look for the Silver Bullet. The Silver Bullet is that piece of technology that will magically solve the current problem. It unfortunately can be used as an alternative to solving the problem at hand.

Let me give an example from an episode of Columbo where having reached a solution, an alternative solution becomes apparent.

In the episode “The Bye-Bye Sky High I.Q. Murder Case”, Columbo is presented with a problem. There are 3 sacks of an equal number of coins. Two sacks contain real gold coins which each weigh a pound. There is one sack of fake coins which each weigh one pound and one ounce. The problem is that given a scale and only being permitted one measurement, how to determine which bag holds the fake coins.

The solution is that you take one coin from bag one, two from bag two and three from bag three. If the combined weight is 3 pounds and one ounce, bag one contains the fake coins. If the weight is 3 pounds and two ounces, bag two contains the fake coins. If the weight is 3 pounds and three ounces, bag three contains the fake coins.

This is a solution to the problem that most people will discover.

However, there is another solution. This solution is that you take no coins from bag one, one from bag two and two from bag three. If the measurement is 3 pounds, bag one contains the fake coins. If the combined weigth is 3 pounds and one ounce, bag two contains the fake coins. If the measurement is 3 pounds and two ounces, bag three contains the fake coins. In this case, you reach the same solution using 3 as opposed to 6 coins.

The first solution is ‘intuitive’ because we naturally find it easier to reason that if the weight is 3 pounds and x ounces, then bag x contains the fake coins. It is a natural mapping of numbers.

The second solution only becomes obvious after the problem is solved. It is an equally valid solution, but not obvious.

Once the problem is solved, one feels more at ease to look for alternative solutions.

If the intuitive solution were not found, no-one would come up with the alternate solution.

Therefore, to find a better or alternate solution, one must solve the problem first.

In computing, the Silver Bullet becomes an alternative to solving the problem at hand. The Silver Bullet defers reaching a solution or, more correctly, admitting failure.

If a problem is solved although not in an ideal way, then the correct, or suitable, Silver Bullet can more easily found.

If an insignificant attempt is made to solve the problem, then all Silver Bullets are equally attractive. Each alternative Silver Bullet is likely to exhibit the same deficiency.

This is because solving the problem at hand, although not in an ideal way, helps to create the specification for the Silver Bullet. By clarifying the functionality and scope of any solution, trying to solve the problem at hand helps to define the problem clearly. If one understands why the current problem was unsolved or inadequately solved, it makes it a lot easier to solve the problem in a different way. Also having solved the problem, it also provides time to solve the problem is the best way because it is no longer a time-critical issue.

So, before you chose and fire the Silver Bullet, make a substantial effort to actually define the target.