Sunday, February 19, 2012

The Fire-breather

This writing is an attempt to glean and share some of the things I have learned while working in and around very difficult situations. You might immediately associate this story with someone in your life, or you may not know know anyone like what this describes, but I know that everyone faces difficult challenges in their relationships with other people, and I hope this will help you turn hurtful relations into productive ones.

A Note to the Camp Director

In some fantasy worlds there is a dragon that breaths a poisonous and sometimes flammable gas which is commonly called chlorine gas. This gas is poisonous to living creatures, but only burns when exposed to open flame. I explain this only because I would like to use these properties in a short allegory to explain a certain complex challenge that is difficult to understand and even more difficult to explain.

The main character in this story is a man, Jim, that has a very strange trait: he exhales chlorine gas when he talks. This man lives high up on a certain mountain among a small group of family and friends that understand him, and have learned how to protect themselves from the gas. It also turns out that the semi-isolated life of a mountain man is very enjoyable to Jim.

On this mountain there is also a summer scout camp, and every summer for as long as anyone can remember Jim would be a councilor and guide to the scouts at this camp. The other councilors learn very quickly about Jim unique breath, and learn to protect themselves and the scouts from too much exposure. The scouts always throw and endless stream of jokes and jibes at him, but he doesn’t seem let them bother him.

While normally this danger would be unacceptable it is tolerated at this camp because of his knowledge of the area and the wild life and he has saved many lives over the years. He knows where all the dangerous cliffs and canyons are. He know where the bears live, and how to protect against them if they are going to be extra aggressive. He also has a powerful ability to teach respect for the forest, other scouts, and yourself.

From time to time a new camp director will be assigned to this camp, and will quickly learn of Jim. Some have immediately expelled him without understanding him, some have embraced his knowledge injected him as close to the scouts as possible, and some have put him up on a tower where he can teach without danger to those around him. Needless to say, Jim creates a very difficult conundrum.

Perhaps you have now become director of this scout camp, and have to figure out how to use or eliminate this challenge. Perhaps you are a fellow councilor or a scout. But, before you make your final decision on how to react to him I would like to introduce myself. I have never been the director of a scout camp, and I may not fully understand the pressures you are under. I am a camp councilor, and I like to think of myself as a good councilor that cares about the scouts, the camp, and the forest in general. I have been a councilor here for several years, and have seen a number of approaches to handling Jim. I have been around Jim enough to have seen and experienced great suffering because of Jim’s breath, and I have seen that same poison save lives repeatedly. I have seen how that breath offends and hurts anyone close enough to catch a smell of it, and, I have seen that breath kill on at least two occasions. I, myself, was nearly killed by it. But, I have seen that breath ignite wet frozen wood to save the lives of scouts caught in a late snow storm. I have seen that breath ward scouts at night by chasing off bears, skunks, and numerous other dangers. Essentially I would like to help you understand Jim for both his good and bad. I hope you will take a moment and consider my experience and proposal:

The Breath

First I would like to consider Jim’s breath. Most people first meet Jim by hearing one of his firesides stories, or by attending one of his trainings. And, most people are at least intrigued by him if not entirely captivated. In these situations the organizers of the fireside or training have insulated the audience from his breath so there is little or no chance of experiencing the hurtful affects by attending these events.

Even when a person meets him face to face they may not notice or understand the minor effects that the gas can have on them. It is when a person begins to work with him closely that they begin to suffer more and more of the effects of the chlorine gas. Even then it is difficult to identify the cause of the pain, and still harder to identify its source. But, eventually it becomes clear, and most people will experience very hostile feelings toward him. By the time it is identified many people have already suffered irreparable damage, and, like I mentioned before, I have seen at least two people entirely leave the career field that put them in contact with him.

On the other hand, there are a lot of people that only work with him marginally, but close enough to see him work some very astonishing feats, and as long as they aren’t directly around him enough to suffer from the gas they will do everything they can gain and retain his talents.

Neither of the two extremes is useful because they will both collapse eventually. Either a person will suffer until they can’t take it any more or they will eventually find that the astonishing feats have as much chance to explode as to produce useful effects. For this reason we need to examine this gas. Only when we understand the gas can we make a fair assessments of its value and danger.

First we have to understand that Jim cannot entirely control his breath. He can for short periods of time hold his breath or divert it away from other people, but it requires a great effort, and he cannot maintain it for very long. So the idea of getting rid of it are only going to delay the problem.

Second we have to understand that the chlorine gas is more than just a trait, it entirely defines him from the inside out. It is the gas that makes him special. It is the gas that has saved his life and the lives of those he loves. It is the gas that has given him the things that he treasures most. Without the gas he would feel that he has nothing to offer. Without the gas he would have to entirely rebuild his self-worth and self-esteem, and without the gas his spirit would likely be broken robbing him of the ability to rebuild. At the same time he is only vaguely aware that it is his very breath, his life force if you will, that causes the suffering he so often sees around him.

What we have to understand from this is that we cannot separate Jim from the gas. First of all it would kill him, and secondly it would destroy spirit and his will. So lets examine the properties of this gas to see if we can turn it from a liability into an reliable asset.

The Gas

This gas, first of all, is invisible to our eyes. As much as we want to see it we can only ever see its effects not the gas itself. It has a definite smell that is accompanied by irritation, but it is difficult to identify. We are simply not capable of following a smell like we can follow a light or even a sound. It is not flammable by itself, but it often enhances the flammability of other things. In extreme case it can even facilitate an explosion.

With this understanding we can see how it would be useful in repelling unwelcome visitors (like bears), and if used at the right time it can guide scouts without leading them by the hand or actually lecturing them. It can also be used in numerous other ways to provide guidance or protection. The combustibility can also be used to great advantage. It is these properties that help while he talks at a campfire. You might notice the fire grows when he gets excited and dies down when he quiets down. It can really add a hypnotic effect to his stories. Another way it can be used is to help young scouts when they are learning to build fires. When he is helping a young scout learn fire starting skills the tinder seems to ignite a little easier, and really helps the budding confidence of the scouts.

There are inherent dangers in using these properties as well. For example, if the young scout has a little help starting a fire it can be good for him, but if he always gets that help he will begin to rely on it like a crutch and not even realize it. While it can produce a great effect while telling a story around a fire, there are a lot of fires like a signal fire that need a very steady burn, and the gas can make it difficult or impossible to send the right signals.

Recomendation

So to wrap up here is my recommendation. Create a unique and highly customized position for him. He will never fit in the role of a normal councilor, and he has far to much knowledge and experience to treat him like a scout, yet he does not have the capacity to be the camp director. Let him talk at the firesides, but don’t let him mingle with the scouts or parents after. Let him give tips and insights to the young fire-starters, but don’t let him linger for any length of time. Let him blow his gas around the camp at night because it keeps the bears and skunks away. When a scout is lost follow his instincts, but don’t cancel other search efforts.

There are also some things I recommend that you never allow. Never allow him mingle with potential scouts or their parents. Keep his direct interaction with anyone to a minimal highly focuses purpose. If there is nothing for him to do directly encourage him to go explore unfamiliar canyons; you never know when you will need someone to guide an expedition there. Don’t let him bunk with anyone because the gas can kill while they sleep. In fact it is even dangerous for him to bunk indoors because he too requires air to breath and he can poison himself if he spend any length of time in an enclosed area.

Above all, try to make these ‘special’ arrangements become his request. Help him see that he prefers to sleep under the stars. This will not only help him feel happy it will protect himself and others. Help him feel that he can help more scouts if he doesn’t spend too much time around a specific few. This will allow the individual scouts to get small doses of his help without putting them in danger of hurtful poisoning or ignorantly using the gas as a crutch.

Whether you choose to have, or not have, his advantages and disadvantages around is a fine choice, but be prepared in either case to give an answer to others who may adore him and may abhor him. Very few people actually understand him for good and bad. Most just see one or the other, and can’t or won’t see the whole picture.

Friday, August 27, 2010

Code Rating System

I would like to propose a rubric of classifying code with regards to its completeness and maintainability. This system will have two parts, separated by a dot '.', both of which are ratings from 0 to 4, 4 being the best. The first part or the part before the dot rates the objects and methods that perform the work, and the second part, or the part after the dot, will rate the quality of the automated testing. With this scale 0 would indicate that the code exists in some manner, but it is not working, and a 4 would mean that the code is in an optimal state for long term maintenance. So code that rates as 1.1 would mean that the code and its test work, but it is in a poor state for maintenance. While code rated as 4.4 would mean the code and its automated tests are in an optimal state for maintenance.

The elements that this system will rate are:
  • +1 Does the code work as intended.
  • +1 Are sufficient comments and documentation in place.
  • +1 Are sufficient logging statements in place.
  • +1 Are coding standards followed.

This code rating system is intended to be customized by each organization. As an example perhaps there is an organization that has no coding standards and they would just use a a 0 to 3 scale, or perhaps an organization considers on schedule to be important so they add an on-time and an on-budget item and use a 0 to 6 scale.

Thursday, August 26, 2010

Logging

Logging is often underutilized in development companies. When an organization really understands the value of logging it will reduce the maintenance cost of code dramatically.

What is a log? A log is a short message that an application stores to give a maintainer information about what is happening behind the scenes (behind the user interface). Logs are generally stored in a file or a database so that they can be read and/or searched to find information about the running system.

Logging should be broken up into levels; each level having a specific and distinct purpose. In general those levels are as follows:

  1. Unrecoverable Problems: When something occurs that causes the entire system or application to cease running unexpectedly. When this occurs the log should get as much information about the state of the system and, if possible, the factors that caused the problem. This is generally difficult or impossible to capture because if a contingency plan was possible to implement it would be a level 2 problem.
  2. Undesirable but Recoverable Problems: When something unexpected occurs, but the system is able to recover, and return to normal operation. This type of problem is often caused by a necessary part of the system becoming unavailable. If a recovery is possible it is usually done by waiting, reinitializing part of the system, or switching to an alternate of the element that failed.
  3. Normal System Operations: While the system is running it is often useful to get information that allows a maintainer to verify that the system is running as expected. This is often information about periodic state of the system, or significant operations being completed.
  4. Major Module Operations: This level is used to monitor the normal operations of a module. It is generally not included in normal operation logs, but is useful to monitor the operation of individual modules while the system is being tested.
  5. Major Feature Operations: This level is used to monitor the normal operations of a feature. It is generally not included in normal operation logs, but is useful to monitor the operation of individual features while the system is being tested.
  6. Minor Feature Operations: This level is used to monitor the fine details of a feature. It is not included in normal operation logs, but is useful to monitor the fine details of a feature while the system is being tested.
  7. Line by Line Changes: This level logs information about each non-trivial variable change. This is generally only useful when attempting to debug.

Saturday, March 27, 2010

Ignocharlabidding (Cheat 'em to Win 'em)

Charlabidding is the act of underbidding a contract, landing the client, and then over the course of the project asking for more money to cover the costs of what the customer really wanted/needed.

Ignocharlabidding is doing this ignorantly.

While ignocharlabidding is not as ethically wrong a charlabidding it is still very devastating to the community. This usually occurs when a contractor ignorantly underbids a project, and by the time it is recognized by either party the money is gone and the customer has to decide whether to put more money into the project or try to find another vendor. Since this is usually a small business transaction, the owner doesn't have the money to start over so he puts more money in hoping that will be the end of the over-run. This cycle usually repeats itself until a poor product is release or the customer becomes too frustrated to continue the engagement.

The harm done by ignocharlabidding is usually two fold: It sours the customer, and it puts money in the pocket of an ignorant charlatan rather than a legitimate knowledgeable contractor. So the bidders that knew what they were doing, and could have produced a good result, are left with nothing. The ignorant contractor has just survived for another couple months to live and bid again. And finally there is poison in the community that prevents or discourages other business owners to try to enter a new technologicaly realm.