Observation, Perception ……

The set and forget, out of sight out of mind and even your greatest strength can be your weakness are all very familiar phrases to most of us. So what does this mean to most of us in our day to day lives?

The greatest thing about programming is the fact you can create something from nothing; all you need are the basics, computer, language and time. No other thing we create can be made from such a point of nothingness. The wood worker requires timber and physical tools, the metal worker metal etc. but when it comes to creating software you can create everything even the tools. This virtual world is liberating and basically unrestricted except by our own limitations. This freedom from the physical world is its greatest strength but also its greatest weakness.

We are physical beings and as such experience our environment by our senses, touch, smell, sight, taste and hearing. Because of this we relate better to things that share our way of experiencing the world. People relate better to cats and dogs (furry mammals) than they do to fish. Many fish are doomed to die because they do not experience and interact with the world in a similar manner to people.

The usual pets such as cats and dogs breathe air; can vocalise (meow or bark) to get attention and live in the atmospheric environment as we do, which means that smells can be shared by both people and pet. This last one seems strange but the fact is when the kitty litter tray is dirty or the pet has made a mess people can smell the result easily. In the case of fish, however, when the water in a fish tank becomes “stale” from their waste products or from over feeding, the water does not smell bad to us until it becomes really toxic. The person looking after a fish tank often looks only at water clarity as a means of gauging the condition of the tank, the problem with this is battery acid is also clear and yet toxic. The fact we do not live in water means that this environment is rather foreign to us and therefore we can naturally sense only some of the important parameters required for fish to live. This is why many fish die due to our inexperience as fish keepers.

So how does the fish keeper overcome the “out of sight out of mind” dilemma of fish keeping, the answer is actually rather simple, they use test kits to check pH, ammonia, nitrite, nitrate, alkalinity and many more parameters depending on the goal of the tank. This doesn’t really sound simple does it? But the actual fact is the fish keeper uses all the above tools to gauge the state of the aquatic environment, yet his greatest ally is in fact the simplest which is regular water changes of 10 to 20 percent usually weekly. Yes, that’s right, regular maintenance is your only real ally when you are dealing with a foreign or alien environment.

So what does fish keeping have to do with programming? Well the fact the virtual world our programs live in is a completely alien or foreign environment means that we are not naturally aware of the state or conditions in this environment without using tools to test and monitor it. The regular water changes may be considered regular updates or upgrades. The set and forget environment of software is its greatest strength and also its greatest weakness. Just like a fish tank we will only notice the bad (really bad) water quality when it smells foul and this is usually too late. Similarly we only tend to notice software when it breaks.

If you don’t like fish then maybe the aircraft industry is a better analogy for you. The fuselage of aircraft undergoes many stresses during normal operation and basic metallurgy tells us that if metal is bent back and forth many times, it will eventually fail. The resulting metal fatigue is usually invisible to the naked eye and to monitor it requires special equipment and expertise. The cost of which would be prohibitive if tested every flight or every week. This is where the aircraft manufacturer specifies maintenance schedules for testing and replacement of specific parts. Next time you fly think of this and think about if the plane was your software would your maintenance find the metal fatigue?