Share via


What climbing Mount Fuji taught me about software testing

When I lived in Japan one of the many memorable experiences was ascending Mount Fuji. I started in the afternoon from the Kawaguchiko station to reach the 8th station to sleep over before the final ascent at 4:00 am to watch the sunrise. On the way up the mountain I met a rather aged Japanese man named Mr. Okada. Okada-san was quite an interesting man, and he and I walked together for awhile up the side of that mountain. I told him this was my first time climbing Mount Fuji and I was anticipating reaching the summit in order to watch the sunrise. He then told me of a Japanese proverb which is loosely translated as "A wise man climbs Mount Fuji once, but only a fool climbs it twice." So, I asked him how many times has he climbed the mountain. He proudly replied, "17 times!" The following day I met Mr. Okada again at the Kawaguchiko station and asked him why he had climbed Mount Fuji so many times. He answered, "I don't climb the same Mount Fuji every year, every year the mountain changes, and every year I see something new and amazing."

I must admit that following my first climb up Mount Fuji I was rather disappointed. In my mind I always envisioned this incredibly majestic mountain, but in fact the mountain is rather barren, there was garbage scattered here and there, and there was a incredible sense of commercialism at the stations. However, watching the sunrise from the Shinto shrine atop Mount Fuji is an experience that cannot be described with mere words alone and the view on a clear day is incredible. The next year I spent some more time in mainland Japan and climbed Mount Fuji 2 more times. Once from the Subashiri station, and finally the longest route from the Gotemba station. So, am I a fool for having climbed Mount Fuji more than once? Was Mr. Okada an even bigger fool for climbing a total of 23 times before he passed away several years later? Well, I guess it depends on your perspective of the world.

I suppose if your only goal is to simply climb a mountain just because it is there, and if you have only one rather simplistic view of the world, and disregard alternate views or experiences, then climbing Mount Fuji more than once doesn't really make much sense. For me it was more than a hike up the mountain and additional stamps branded onto my Fuji stick.  Standing above the clouds at the summit of the tallest mountain in Japan 12,338 feet above sea level and watching the sunrise in the east can be a very humbling experience and give one time to reflect and see the world from quite a different perspective.

Personally I don't consider myself foolish for climbing Mount Fuji more than once (although other people might say otherwise).  I sometimes think about my treks up Mount Fuji and the spectacular image etched in my mind watching the sunrise three times and the sunset on one occasion when I look at that old Fuji-stick standing in the corner of my office at home. I also remember what Mr. Okada taught me that fateful day in August 1987 and how that applies to approaching life and even to software testing.

When I approach testing software I think about all the different ways I can approach the task. I carefully survey the situation, collect pertinent information, ascertain specific goals of the stakeholders, then determine a strategy to achieve the explicit and implicit objectives for the business and our customers. During the course of problem solving (testing) I exercise multiple approaches because I know that if I rely on only one approach, or rely too much on one particular approach I am more likely to miss something. I know that if I don't understand the system and the domain space then I am not likely to notice changes (know what correct behavior is so you can identify incorrect behavior). And I know that if I am not aware of minor changes then I may miss major problems which could have negative implications for the business or the customer.

Conversely, I think people who strongly advocate one approach as superior to other approaches or rely too heavily on one approach to solving complex problems are more likely to under-test or over-test particular areas of the software and miss critical information.  I also think people who denounce certain approaches testing may not really understand how and when to apply that approach effectively and thus have blinders on that prohibit their ability to see the advantages and value of alternate perspectives. To me, people who approach testing as simply a task of finding bugs and who do not appreciate the value of multiple approaches are similar to a person who decides to climb Mount Fuji without much thought or preparation simply to say they did it. Sure they will likely make it up the mountain (it's really not that hard to find bugs in poorly designed software), but they are also not likely to realize what they might have missed along way.

And yes, I do plan to climb Mount Fuji again!