The Terror of Code in the Wrong Hands

Here is a new term, software terrorist, who brings negative productivity to the team. I can attest that catching bug in poorly written code waste a lot more time than rewriting the code myself from scratch.

By Allen Holub, May 2005, SD Times

The 20-to-1 productivity rule says that 5 percent of programmers are 20 times more productive than the remaining 95 percent, but what about the 5 percent at the other end of the bell curve? Consider the software terrorist: the guy who stays up all night, unwittingly but systematically destroying the entire team’s last month’s work while “improving” the code. He doesn’t tell anybody what he’s done, and he never tests. He’s created a ticking time bomb that won’t be discovered for six months.

When the bomb goes off, you can’t roll back six months of work by the whole team, and it takes three weeks of your best programmer’s effort to undo the damage. Meanwhile, our terrorist gets a raise because he stays late so often, working so hard. The brilliant guy who cleans up the debris gets a bad performance review because his schedule has slipped, so he quits.

Valuable tools in the hands of experts become dangerous weapons in the hands of terrorists. The terrorist doesn’t understand how to use generics, templates and casts, and so with a single click on the “refactor” button he destroys the program’s carefully crafted typing system. That single-click refactor is a real time saver for the expert. Scripting languages, which in the right hands save time, become a means for creating write-only code that has to be scrapped after you’ve spent two months trying to figure out why it doesn’t work.

Terrorist scripts can be so central to the app, and so hard to understand, that they sometimes remain in the program, doubling the time required for all maintenance efforts. Terrorist documentation is a font of misinformation. Terrorist tests systematically destroy the database every time they’re run.

Terrorist work isn’t just nonproductive, it’s anti-productive. A terrorist reduces your team’s productivity by at least an order of magnitude. It takes a lot longer to find a bug than to create one. None of the terrorist code ends up in the final program because it all has to be rewritten. You pay the terrorists, and you also pay 10 times more to the people who have to track down and fix their bugs.

Given the difficulty that most organizations have in firing (or even identifying) incompetent people, the only way to solve this problem is not to hire terrorists at all; but the terrorists are masters of disguise, particularly in job interviews. They talk a good game, they have lots of experience, and they have great references because they work so hard.

Since the bottom 5 percent is indistinguishable from the rest of the bottom 95 percent, the only way to avoid hiring terrorists is to avoid hiring from the remaining 95 percent altogether.

The compelling reason for this strategy is that the 20-to-1 rule applies only when elite programmers work exclusively with other elite programmers. Single elite programmers who interact with 10 average programmers waste most of their time explaining and helping rather than working. Two elite programmers raise the productivity of a 20-programmer group by 10 percent. It’s like getting two programmers for free. Two elite programmers working only with each other do the work of at least 20 average programmers. It’s like getting 18 programmers for free. If you pay them twice the going salary (and you should if you want to keep them), you’re still saving vast amounts of money.

Unfortunately, it’s possible for a software terrorist to masquerade as an elite programmer, but this disguise is easier to detect. Programmers who insist on working in isolation (especially the ones who come to work at 4:00 p.m. and stay all night), the prima donnas who have fits when they don’t get their way, the programmers who never explain what they’re doing in a way that anyone else can understand and don’t document their code, the ones that reject new technologies or methodologies out of hand rather than showing genuine curiosity—these are the terrorists.

Avoid them no matter how many years of experience they have.

Software terrorism is on the upswing. I used to quote the standard rule that the top 10 percent were 10 times more productive. The hiring practices prevalent since the dot-com explosion—which seem to reject the elite programmers by design—have lowered the general skill level of the profession, however.

As the number of elite programmers gets smaller, their relative productivity gets higher. The only long-term solution to this problem is to change our hiring practices and our attitudes toward training. The cynic in me has a hard time believing that either will happen, but we can always hope for the best.

Armored Trooper Votoms: Case Irvine 裝甲騎兵 歐文檔案

「裝甲騎兵歐文檔案」是五十分鐘OVD,除了借用原著的機械人和世界觀外,與完美戰士奇利古沒有任何關係。百年戰爭結束後,機械人成為羅馬鬥獸場式的賭博工具。在邊境的一個星球上,只求安樂生活的退役王牌機師,對上以殺人為樂的瘋狂鬥獸士。故事十分簡單,從鬥獸場打到上街道,最後邪不能勝正,王牌機師克服了戰場陰影,保護了妹妹也抱得美人歸。

雖然故事行貨到不得了,但前後四場機械人對決十分精彩,不負「裝甲騎兵」這塊金漆招牌。先上演一場紅色戰狗以一敵眾,殘暴地把敵方戰敗戰狗分屍。其後紅黑兩台戰狗實戰初遇,黑狗活用地形和機動性,把紅狗壓迫至無反抗之力。可惜黑狗機師害怕開槍殺人,猶疑間讓紅狗有機會偷擊,失去左手後迅速逃離戰場。紅狗機師不甘受辱,寧破壞鬥獸場屠殺平民,迫使黑狗機師出來作宿命一戰。

曾幾何時「裝甲騎兵」是硬派軍事動畫的代名詞,當「高達」和「超時空要塞」也加入軟性養眼元素,「裝甲騎兵」還保留著男人濃烈的剛陽味。想不到現在也要向市場現實低頭,為訂好觀眾淪落至讓美少年當機師,並加入純萃賣萌的女角。不過只要機械人戰鬥場面打得好看,我對加入其他元素倒也沒有太大所謂。

告白 – 湊佳苗

儘管香港有為數不少的哈日族,日本電影一向也是小眾市場。去年日本電影「告白」竟然爆冷跑出,不單連續兩星期蟬聯票房冠軍,香港有過千萬票房收入。電影改篇自湊佳苗的獲獎推理小說,雖說是推理小說但內容推理成份不多,除了故事圍繞殺人事件外,把它分類為驚慄小說更為貼切。

我是先看小說版再補看電影版,因為已經知道故事結局,對電影版帶有先入主的偏見,認為小說版的人物描寫較全面。小學老師的女兒在學校泳池遇溺,殺人兇手是斑上的兩個小學生。在日本有少年罪犯保護法,末滿十六歲的少年殺人等同無罪,松隆子認定法律不能替她申張正義,她用自已的方法去復仇。小說的名字便是來自第一章中,她對著全班學生的告白,給兩個兇手喝下注入愛滋病毒的牛奶,從而展開她的復仇計畫。小說的寫作手法很特別,每章以不同角色的觀點作出描述,交織出殺人事件的前因後果,,以及交代那兩個兇手的下場。電影版不可能以時空交錯方式說故事,否則絕大部份觀眾也會看不明白,所以除了開場的獨白保留原汁原味外,下學期發生的事件改為按時序發展。電影作出這個改動無可被免,但卻破壞了小說最精彩之處,同一個故事前後五次敘述,每次敘述也加入以前沒有的細節,逐漸補元故事空白的部份,讀者要像玩拼圖遊戲般,把殺人動機和事件的真相重組起來。

以下內容包含劇情,未看小說或電影的讀者慎入。

有些評論說「告白」反映出日本的教育問是,沒錯校園欺凌是很普偏的現像,但小學生連環殺人未免太跨張,只會出現在小說中的情節。我在追看小說的時候,被作者高超的寫作技巧吸引著,沒有太注意內容不合理的問題。看電影時第二次再看故事,劇本中犯駁之處顯得太過著眼。松隆子的復仇計劃看似很聰明,但仔細推敲下卻錯漏百出。讀小說時見少年B被松隆子迫瘋了,不禁也有一點心寒恐怖的感覺。到電影再看同一段情節,只覺得少年B很荒謬搞笑。少年A的戀母情意結是小說的敗筆,松隆子把炸彈轉交少年A母親的結局也很兒嬉,大慨作者想不出更有說服力的結局。在小說中愛美是故事推進的關鍵人物,從旁觀的第三者被捲入復仇局中,在電影版中她卻成了個大花瓶,甚至她給少年A殺死那場戲,也缺少了小說中震撼力。小說第三章少年B母親的日記是故事的轉捩點,但在電影版中少年B母親的角色差不多全被刪掉。

電影版的影像很有風格,讓我聯想起黃精甫的電影,但我不是藝術人,電影的鏡頭不懂欣賞,只要不妨礙故事表達便行了。總括來說故事中的每個角色,全部都有神經病,只有愛美算是比較似正常人了。松隆子掛名是女主角,但她的戲份其實不多,只是開塌那段獨白和結尾現身。小說的結局是突然停下來,沒有再花費筆墨在少年A上,令結局在讀者腦中不停迴響。電影版把少年A唯美化,為讓松隆子出場,讓少年A軟倒在松隆子面前,他最後一刻面部表情特寫十分造作,削弱了小說中他在不知情下親手殺死母親的悲劇性。

一個推理小說只有一個結局,初看故事的驚喜只有一次,在小說和電影之間只能二擇其一,而我會選擇小說版的「告白」。電影版不是不好看,只是為遷就時序作出的改動,把原本故事中五重互相緊扣的告白,減剩只有松隆子開場的那段告白。

吃蟑螂抗輻射

甲甴

蟑螂是地球上生命力最頑強的生物,著名科學家曾說過,若果爆發核子戰爭,就算人類死光了,蟑螂還會活下來。清華大學核子實驗室最近進行一項研究發現,以核子輻射照射蟑螂,同樣的劑量會造成人類死亡,但蟑螂卻完全沒事。

有專家認為蟑螂的高抗輻射性體特,是因為其特别的基因排列,令蟑螂的細胞不怕輻射感染。只要人類多吃蟑螂,多吸收蟑螂的特殊基因,人類細胞也能生産輻射抗體,可以抵受更高的輻射量。有營養學家指出,蟑螂含豐富蛋白質,食用前只要清洗乾淨,並以攝氏一百度以上煮熟,徹抵殺死蟑螂體内的細菌,吃蟑螂不會對人體造成傷害。不過他亦同時指出,要小心避免進食帶有殺蟲水的蟑螂,應盡量挑選有機的新鮮蟑螂食用。

随著越來越人知道吃蟑螂能抗輻射的好處,内地的一些餐廰乘勢推出蟑螂宴。在武漢的一家知名食府,便推出九十九元人民幣,三菜一湯的超值蟑螂套餐。先上一客蟑螂鬚燉湯,主菜是椒鹽蟑螂,配麻婆蟑螂鬆炒飯,甜品是蟑螂殻白果糖水。店外更一度出現人龍,未能入座的食客引發騷動,要公安到埸維持秩序。内地網站有網民轉貼蟑螂食譜,互相分享交流蟑螂的烹飪心得。國家衞生部發言人,更鼓勵民眾多吃蟑螂,一來可以抵抗輻射,二來可以消滅害蟲,可謂一舉兩得。

現在日本福島核子危機持續,吃蟑螂能抵抗輻射這個消息,請大家把廣為轉載傳播開去,讓市民可以及早預防輻射。

哲學功課﹕The Coherence Theory of Empirical Knowledge

在傳統認知論中,知識等於真實的信念加上合理相信的理由。在尋找合理的理由時,我們采用歸納法,從已經被肯定的知識中,推論相信新知識的合理理由。可是這裹有一個問題,若每一項知識也是從先前的知識推論出來,那層層遞進地推論追溯上去,那最初的知識如何肯定呢。傳統上基礎主義認為在知識的最底層,是一些不需論證自我肯定的基礎知識,作為所有知識推論的基礎。調和主羲則否定有基礎知識的存在,所有知論的推論是個巨大的循環,只能檢視整個知識系統的一至性,有沒有內部矛盾或對世界觀測的不協調。這篇功課討論調和主義理論本身的問題,探討調和主義能否成立。

The Coherence Theory of Empirical Knowledge

In this essay, I am evaluating Bonjour’s coherence theory of empirical knowledge (CTEK) against foundational theory of empirical knowledge (FTEK). First, I will outline what is the regress problem and compare the responses from FTEK and CTEK. Then I will examine the objection against CTEK regarding its relationship with external world. I will further extend the objection by arguing CTEK is asserting a fundamental assumption that the external world itself has to be coherent for CTEK to be justified. At last I am going to conclude CTEK is unsuccessful in overcome the objection in strictly epistemological sense but it is successful in practical sense.

Since Plato, traditional view of knowledge is justified true belief. A piece of belief is only qualified as knowledge if it is justified. A belief is justified based on the validity and soundness of its argument, which is implicitly depends on the premises used in the argument are also justified. Each premise on its own is also a piece of belief which required the justification of the premise’s premises. As a result, we have a regression of justifications for premises that keep tracing back, which is known as “the regression problem”. FTEK deals with the regression problem by stating there are some foundation beliefs at the very bottom of chains of premises and the regression terminates when the basic beliefs are reached. There are two version of FTEK. The strong version stated that the basic beliefs are self-justified without the need of further premises. The weak version stated that the basic beliefs are initially credible that are likely to be true. The CTEK rejects the notation of basic beliefs, instead of having the regression of premises go on infinite linearly, the inference is circular. An epistemic system is justified by its internal coherence.

However, the circular nature of CTEK runs into the problem of begging the question, which a belief cannot be justified unless it is already justified. The solution is to reject the linear conception of inferential justification and uses a holistic or systematic conception of inferential justification instead. CTEK separate the justification into two categories, justification of a particular belief and the global justification of the entire cognitive system. The justification of a particular belief appears linear, since the premises regression will soon reached some acceptable beliefs in the context. If no acceptable belief is reached, the premises regression will continue moving in a circle. In this case, the justification of the overall knowledge system comes under questions. In CTEK, the justification of the entire system is based on its degree of coherence. A coherent system must be internally consistence, which means there is no internal conflict, but it has more than just consistency. Coherent is the systemic connection between the components of the system, how observable facts can be explained and predicted. The justified knowledge system is the one with the highest degree of coherences out of all the alternative consistence systems.

In the paper, Bonjour lists three objections to CTEK on questioning the fundamental questions of the connection between coherence and justification. Out of the three objections, Bonjour spends most of the paper in defending against objection number two, the relationship of CTEK and external world. I think this is the strongest objection against CTEK and I also think Bonjour successfully defends CTEK against this objection. However, Bonjour omitted an underlining assumption in his defence that the external world has to be coherent in order to justify his argument. In the following paragraphs, I will first out the objection, go over Bonjour’s response to the objection and illustrate his hidden assumption with a counter example.

The strongest objection to CTEK is that since CTEK is justified only in terms the internal coherence of the beliefs in the system, it does not have any relationship with the external world. A self-enclosed system of beliefs cannot constitute empirical knowledge. Bonjour’s defense is pretty straight forward, it simply link the coherent belief system in CTEK to observable facts from external world. He argues that in CTEK, the coherent system of beliefs must also coherent with reliable observation of the external world in long run. When a particular observation does not coherent with the belief system, CTEK can either neglect the particular observation as an incoherent exception to the belief system or refine the belief system to include the new observation. If there are too many incoherent exception observations accumulated in the belief system, the belief system will become less coherent with the world and eventually it will be replaced by a more coherent belief system. The belief system is continuously updating itself upon new observation to maintain its degree of coherence. The input from external world has causal relationship with the CTEK belief system where the belief system is justified by its coherence with observable facts of the external world. One of the key pieces in Bonjour’s argument is to establish what can be constituted as reliable observations yet at the same time is not a basic belief. He argues that spontaneous introspective beliefs on spontaneous sensa beliefs are very likely to be true. The reliability of cognitively spontaneous beliefs is part of the coherence system along with the observation of the external world. Therefore it is not a prior truth in the sense that it is required as the foundation for justification of the knowledge.

Bonjour based CTEK’s justification on the coherence of the belief system and the reliable observation of external world in long run. Let’s granted that the belief system and the observations are reliable, however Bonjour failed to address the underlining assumption that the external world is coherence in long run. If the external world is not coherence, then no belief system can stay coherent due to CTEK has a causal relationship with the external world. Bonjour uses the spontaneous visual belief a red book and the lack of spontaneous visual of a blue book to illustrate how the belief system is linked to the external world. What if there is a chance that the book randomly change colour every time I observe it? How can I conclude there is a red book on my desk but not a blue book on my desk? Even though I can trust my spontaneous beliefs from my sensa of the book, I cannot trust the object under my observation stays the same between my two observations. It is possible that the cover of the book is made of the latest colour changing e-paper technology, which in the case we can provide a coherent account for the observable fact. However, it is also possible that there is no scientific theory can possible explain why the book change its color. It could be the act of God and it is simply a miracle that the book changed from red to blue for no apparent reason. The CTEK justification adopt an objective clock work world view that rule out the existence of any supernatural power, such as an omnipotent God who defies all laws of physics.
In theory, we cannot epistemological justify the CTEK because we cannot epistemological justify the world is coherent. Hume argues that “Uniformity of Nature”, which is essentially the same as coherence of the world, cannot be justified, yet it is rational and non-optional for us to accept the habit of inductive inference. Practically, we can assume the world is coherent almost all of the time and take it as a weak foundation that it is probably initially true until shown otherwise. CTEK is actually a very weak FTEK in disguise; the base belief of CTEK is that the world is coherence to provide the foundation to build coherent belief systems.

However, it would be totally absurd to argue the world is not coherent. If the world is not coherent, then even FTEK is not possible to have any knowledge system. Just like FTEK cannot convince the ultimate skeptic, CTEK also fail to convince the ultimate skeptic that there is justification on any knowledge. Given the fact that assumption of the world is coherent must dialectically acceptable in the context of any knowledge theory to have any meaning, we can grant this assumption a priori status outside of any epistemic dialog. With this particular exception, I conclude that CTEK is successful in overcoming the objection regarding the relationship of coherent belief system and the external world.

Reference:
[1] Laurence Bonjour, The Coherence Theory of Empirical Knowledge, Philosophical Studies 30 (1976) p281-312