/* I don't know who is the author of the original text; I have translated it from Russian. It gives fairly correct description of the national methods of the software engineering.
*/Any Russian Programmer.
After a two-minute look at a code, any Russian programmer will certainly jump up and say to himself: all of that should be rewritten! Then he will feel some doubts about how much time it would take, and he will spend the rest of the day trying to convince himself that it only seems to be a lot of work. Sure, if he would work at this seriously, everything could be done. Then, the code would be correct and beautiful. Next morning, the Russian programmer looks sharp and very proud as he reports to the boss that it would take no more then a day to rewrite that piece of code. Yes, no more then a day. Maybe two days, in the worst case, if all risks are taken into account. As a result, the boss gives him a week. The process is successfully completed in half a year. Until the code will be revised by some other Russian programmer. In the meantime, four Chinese programmers keep doing their hard work in four adjacent cubicles without stopping for a second. They come to work much earlier and leave much later then the Russian programmer; however, they somehow manage to accomplish about three times less. Those four haven't written anything new for a while, and only support the code that was created in its time by the Hindu and rewritten twice by two different Russians. This code is not just infested by bugs; it is a stronghold of bugs. From here, the bugs are continuously recreated by the favorite Chinese technology of code reuse: Copy/Paste. The bugs are spread by static variables and references to the static variables (It is well known that no Chinese programmer can tolerate the inconvenience of not been able to access a variable directly). When the Russian programmer remembers about these variables and references, he loses the clarity of his speech. He starts swearing in Russian and English at the same time. For a long time, he has been dreaming of rewriting the whole piece of code on which the Chinese are working, but he doesn't have time to do that. He is already rewriting two big modules, and he just proved to the boss that the third module has to be rewritten as well. Besides, the Russian programmer tries not to offend the Chinese programmers. By the way, his concerns are in vain; the Chinese have already decided that the Russian is trying to push them out of work. The Chinese are responsible for serious bugs in the code. The boss knows about it and he hurries them. The Chinese respect the boss; that's why they are trying to hang the bugs on each other. They know that all attempts to fix the bugs will only result in the creation of new bugs. That will only make the situation worse. And they are very right about it. The only man in the company who knows how those static variables change their values is the Hindu. But he is meditating. That's why all four of the Chinese will be let go at the time of the next layoff. But who else should be let go? The Russian is still not finished rewriting his code, and the Hindu - the most valuable asset of the company - rarely pays any attention to the project, but, when he does, everybody understands that no one knows the software architecture better then he does. So, after the Chinese are fired, their code can have two different fates. The first - the Russians will get it, and they will rewrite it. The second - the local Canadian programmer will get it. Yes, the Canadian programmer is a special character. He rushes like a knight to fix the most fearsome Chinese bug. This Bug has already dwelt inside the code for three years, and the Chinese have already reported to the boss that the bug is fixed four times (each of the programmers reported it once). But the Bug returned every time, like Batman to Gotham City. The Canadian programmer, raised on the heroic pathos of American football, rushes into battle headfirst, doing what the Chinese haven't risked doing for three long years. He will find a place where the static variable takes a value of 1 instead of the correct value of 0, and resolutely add the other variable with the correct value nearby. The Bug will perish in an unequal battle with the hero. However, victory will be achieved by a high price. Everything will quit working, including the code that was just rewritten by the Russian programmer. This will put the Russian programmer deep into thought for two days. After that, he will come to the predictable conclusion that the design was wrong from the very beginning, and everything has to be redone. This task will probably take a week. Yes, surely no more than a week. The Canadian programmer will bravely rush to fix everything, and everything will become worse, even though it seemed... This commotion will bring the Hindu out of his meditation, who will come up with a completely genius solution - branch the code out. According to his plan, we would now support two versions of the same code - one working, but with the Bug, the other without the Bug, but not working. The Russian programmer, hearing of this plan, will break his ruler over the table and call his wife an idiot, but will not dare to disagree at the meeting. Fortunately, this won't significantly affect the company's dealings, since the product is still sold. That's why the management is generally satisfied, and does not tire of reminding everybody that they are picked as the best from the best. And that we have long ago proved our ability to release the product, since we occasionally release it.
/******************/
VLV