人月神話

Thursday, September 2, 2010

tar-pit

成書至今 35 年的《The Mythical Man-month》 (人月神話),至今讀來仍然不老,可見書對程式設計和軟件工程有透徹的了解,明白這一項工作的本質、涉及人事、流程等等,有什麼特質和局限,所以才能直擊要害,成為經典。

我們通常會說「這項目一共花了十個月的 man-month」,可是 Man-month 是一個神話,其估計永遠不準確。因為編寫程式不同耕田種菜,那些工作只要技巧上了手,工人們就可以獨立工作,所以要增加生產力,直接加人就可以了。可是編寫軟件卻不能這樣算,因為除了技巧,溝通也很重要。軟件涉及不同部份互相合作,各部份資料如何傳遞、格式如何,需要成員間的溝通。在一個趕頭趕命的軟件項目裏增加人手,並不能加快生產,反而要花更多時間作訓練、溝通。「人」與「月」是不可互換的。

寫程式是一項心智活動,程式員有很大的自由,能將意念化成文字指令讓機器執行。偉大的建築或音樂,可以只有一個設計者,作品強烈反映個人意志。但軟件通常時間迫切,總是需要很多人手加入規劃設計。如何將不同人的設計意念統一、實作、測試、付運,就成為軟件工程的最大課題。這裏面,要訂立很多不同架構、規則、流程、工具、文件等等。

此書亦收錄後來作者一篇《No Silver Bullet》,引起爭議最大。書中預測:十年內沒有任何技術,可以幾何級數增加軟件生產力。這預言是應驗了。這當中,作者討論軟件開發的本質:複雜、不一致、易變、無形。軟件各部份各異,無一相似,又有超多狀態,所以複雜。軟件開發總是要面對不一樣的問題,帶來不一樣的複雜,這並無任何一致性可言。因為軟件本身很容易被修改,引至用戶要求、排程、實作、測試等等活動,都經常處於改變之中。與實物不同,軟件是無形的,結構不受空間限制,也沒有任何一大圖表能夠代表整體 (要多張才可以)。

而在那時一些技術,如高階語言、時間分享、統一開發環境等等,都不能直擊這些本質問題。及至日後的一些技術,如 OO、AI、圖形編程等等,也沒有成為 silver bullet。

雖然如此,還是有些東西可以做到的。作者預測了一系列改變也正在發生,如由買軟件代替開發專用的 (組合使用 spreadsheet、word 等解決問題)、以不斷修正需求快速試作來開發、「生長」軟件等等,都可以減輕我們開發軟件的負擔。我讀此書是二十週年版,也就附有一篇作者在二十年後的回顧,詳細地察看自己的預測的異同及其因。

Software is hard。寫程式如寫詩一樣,自由度很大,卻又可以做出實際的東西, 猶如魔法 。可是自由越大,也越易出錯,加上要協調不同人事,就更複雜。我們需要各種各樣的規則流程方法,才能做出可靠的產品,這在現在越來越依賴電腦的世界,尤其重要。

因果

Monday, August 30, 2010

我們相信因果,因為世事如此。我們的大腦感到世界依偱因果。伸手去碰一根針,就會覺痛。再去碰一次,就會再痛一次。五感送來連續不的神經訊號,在大腦中不斷建構外在世界的形貌與規則,都依因果。我們相信現在的行動,在將來會有作用,所以我們會預測、計劃,希望未來能依我們所想的實現。

但另一方面,意外卻是不斷發生,計劃之外,出乎意料,搞壞我們的未來。我們會問為什麼?為什麼總是我?為什麼我做的得不到回報?為什麼被人背叛?為什麼好人早死,壞人長活?我們就是搞不清楚。

這顯示我們其實還相信一種「天理」,善有善報,惡有惡報,有付出就有回報等等。這些天理會在背後規管平衡世事運行,維持公平公正。我們雖不知這些天理是如何運作,但也覺得應該是依偱因果的。所以每當「無天理」的事情發生,我們感到痛苦、失望、困惑,不明白為什麼世界無端失去平衡。

然而,世事其實仍是依因果而行。殺人犯不是突然出現的,他的出生國家、成長經歷、所受教育、社會文化,都對他的日後的行動有影響。他身處的國家之所以有這樣的環境文化,與其歷史、地理位置、與其他國家的關係、經濟狀況有關。受害旅客會被殺人犯選上,跟他們那個時候出遊、選擇的地方、旅行團的路線有關。旅客的選擇,跟他們有的假期、預算、社會地位有關……

我們不能理解這些繁多種種的因果關係,因為人是有限的,若只從自我作中心看身邊的事物,再從這有限的資訊推理出事情的紋理,自然對某些現像不明所以。我們一方面嘗試盡量理解,同時也感到天地之大,唯有而謙卑自己。

而「天理」其實存在於每個人心中,是一種理想。在那裏,人們可以和平相處,公平公正,善惡到頭終有報,人們可以憑自己的努力去做去幹去創造未來。我們知道這樣是好的,因為這能使我們生活在一起,互相合作,維繫彼此。所以我們建立各種規範、法律、教育等等,去盡量創造這麼一個社會。

公平社會 – Outliers

Wednesday, August 25, 2010

最近看 Malcom Galdwin 的《Outliers》有一段我覺得很簡單地形容了本書要旨 (大意):

生物學家愛談「生態」:最高的橡樹之所以長得高,並非只因種子夠堅硬,也因為無樹遮光、泥土豐厚、無兔咬食、無人砍伐。我們皆知成功者種子堅實,但我們有否了解暖其之光、養其之土、其無兔無人之幸運?本書非談高樹,而是森林。

我們都愛看英雄傳奇,看其無窮意志、不死決心、能人所不能,引人入勝,驚嘆稱奇。沒有這些英雄特質的我們,便只能當個凡夫走卒。我們忽視了成功故事背後,除卻個人意志,還有其身處環境、時間、機會、社會文化、生活、家庭背景等等,千絲萬縷。所謂英雄做時勢,時勢也做英雄。成功靠天時、地利、人和。

精英曲棍球手偏於頭幾個月出生,單單因為每年截止入隊時間在一月。彼頭四走紅前,曾經歷過萬小時的現場表演。IQ 超高天才,因為家庭複雜背景令他走不上正常的學習途徑,才能被埋沒。韓國 747 意外頻生,跟其尊卑文化有關。亞洲人數學能力佳,植根於種米文化要求自律、勤奮。

我們並非不知道這些事,只是我們都避談。因為這很容易得出:「有錢人的孩子較成功」、「韓國人就是不懂駕駛飛機」、「美國人就是數學差」等等這些很「政治不正確」的說法,我們都覺得只要個人肯努力,這些出身、種族都理應不成障礙,所以成不成功,只是個人問題。

但這事實正正是倒轉:要人們可以憑個人努力而成功,我們應製造一個公平的環境,去磨平因為出身、種族等等做成的差異。這樣才可以製造更多機會,讓更多人達致成功。而當人們知道機會處處時,也比較有動力去做去試,整體社會氣氛也會比較積極和正面。一個不公平的社會,制度傾斜,鼓勵人們巧取豪奪,結果貧富懸殊,社會分化極化,也沒有進步可言。

要怎樣才能達至一個公平社會?自由、民主自然必不可少。再來就像作者那樣,仔細從數據觀察,不要忌諱那些看似政治不定確的結論,找出背後原因,作出改變。

These things happen

Friday, August 20, 2010

讀棧主的 好人,好事 ,我的第一個反應是:那個人真好脾氣!These things happen,在我腦裏想起著 The Phantom of the Opera 開頭 Carlotta 遇上意外的時候:

Manager: Signora, these things do happen.
Carlotta: Well, until you stop these things from happening, this thing does not happen!

遇上倒楣的事,有不快情緒很正常,要發洩出來也是很合理。若果連這個情緒也可以化解掉,就真的是功力深厚。

但這不等於死忍,想起前兩天聽電台節目,聽眾打電話上去埋怨同事做事不妥,但又一邊說「我 EQ 好高架,呢 d 不滿都無講出黎!」,主持人駁他說:「你 EQ 係高o既話,就唔係o係度埋怨啦!」。夠忍耐固然高手,但心中放低,方為大師傅。

當然,也不是凡事都要「化」,對於不公不義的事,就要有所堅持。因為那些事通常都是人為的,是可以控制,是可以改變的。其化解的真正方法,是溝通,說出你堅持的事。「These things」所指的,應是那些不可預計的、無人想發生的意外。

想起好久以前在 地鐵被問候 ,心中縱有不滿,但口中只是 Sorry 想化解事件。那麼我究竟是忍得?還是夠「化」?其實可能是「鵪鶉」?不過至少這件事我不放在心上,只當個趣事分享。

淡淡然一句These things happen,卻像明白宇宙真理似的。世事本無常,唯有將心放。更厲害的是這句話有感染力,除了說的放下了,聽的也會不那麼不好意思,稍稍寬心。

星矢主題曲廣東話補完版

Tuesday, August 17, 2010

在幾年前出現了一首依日本原版,但譜上廣東詞的 聖鬥士星矢 主題曲,是由 Libido 製作的 (其站上有一個更清晰的錄音)。

今天看到另一個版本,將 Libido 的詞再伸延兩段,寫得更精彩!揶揄每集打公式「日本仔D野呃貨幣」,恥笑自己做漫畫奴隸,最後又正經八八地寫星矢那不死精神,「動人的角色伸展至下世紀」,實在是中正我等 Fans 心聲!主唱 常愚蠢 的聲線夠勁夠 Rock!

(他個人頁上的 錄音 比較清晰。)

歌詞:

無敵o既聖衣 金光璀璨好美麗
唔係鐵 係聖衣 著左打都打得勁d

全賴有聖衣 咁先可以將佢地
潛在o既能源 第七感都一一發揮

唔知點解佢打不死 連件聖衣都打鬼凹晒
成件野爛晒 佢o既小宇宙先至可以係咁燒

救返沙織 阿星矢冇話唔得 
仲有一輝 佢點打都不會死 嚇鬼死
再次出招 要將七感升至阿賴耶識
就會打低 就會打低 班仆街仔

成日被打低 死都可以好美麗
唔係哇 又訓低 企番起身又跌低
成集係咁多 日本仔D野呃貨幣
其實個個自細日本漫畫裏做奴隸

唔知點解佢打不死 連件聖衣都打鬼凹晒
成件野爛晒 佢o既小宇宙先至可以係咁燒

靚仔一輝 似女人o既阿瞬係佢弟弟
就算掠低 紫龍同冰河都不失威 龍咁威
為救沙織 阿星矢佢創造奇蹟
就算打跛 就算打跛 不衰比你睇

飛奔天際的駿馬 猶如流星一般閃過
存在過 未忘記 動人的角色伸展至下世紀
自信不死 面對艱阻永沒言悲
自我拋低 豁出身心即使血洗 未放低
做個知己 勇敢伸張正義無比
就算被打低 亦永未失威 不可摧毀