Thursday, February 15, 2007

Infinity Puzzle 4

Another infinity puzzle on software.

Every software written by a half-decent company would undergo a number of tests or reviews before it reaches the market or its intended clientele.

Imagine a scenario where you are the author of a piece of code. Once it is complete, you request your peer A to review it. A reviews it, points out some defects, you close those defects and send the code out to the market.
Things look good till your customers come up with a major bug. The fingers are pointed at you -- the programmer. You then direct these fingers to A who had "signed-off" the piece of code. Your company's quality team is all over the place asking for heads to roll. They appoint someone -- let us call this person B -- to review the review process that A followed.
B reviews A's review process, points out a few things which A corrects, and things are all hunky dory again. Atleast till the next cycle of release of your programs. So A reviews your code again according to the inputs that B gave him. You again go to your customers with this newly tested code.
Two months down the line, there is one more major bug. The beating up starts again. Now it is the turn of B who had reviewed the review process. The head of the quality group -- let us call him C -- himself gets down to reviewing the work of B.
So, now you have a situation where A is reviewing your work. B is reviewing A's review process and C is reviewing B' review of the review process.

Can this go on for ever ? Will this chain be short-circuited anywhere ? Will there be a point where the company management will say --- "Lets put a stop to all this and let us all start testing the product itself instead of reviewing each other's work" ?


vaithianadan said...

Yes it can be. Only if the company's management changes. They should stop pointing finger and appoint an expert who can fix the issue... Instead of asking who did the mistake or how the mistake came.. ask what is the mistake and how to fix them... Once it is done.. Ask how this type of mistake can be avoided in future projects. Never try to held a person responsible for error after the project has been rolled out. In short, if errors are found in production... it is lack of mature process in the organization.