軟件業(yè)總是充滿了形形色色的隱喻。比如說,把程序中的問題稱為bug;把互聯(lián)網(wǎng)上傳播的病毒叫做蠕蟲;
把軟件開發(fā)的過程比作造房子......這些都是我們這個(gè)行業(yè)中流行的隱喻,以至于它們已經(jīng)成為軟件開
發(fā)者文化中一個(gè)特有的組成部分。
在這里,我想要說的是一個(gè)特別具有“中國(guó)特色”的隱喻:我稱之為武俠隱喻。
毋庸我多做解釋,可能很多程序員看到這個(gè)詞就足以勾起豐富的想象。我們中的很多人喜歡把自己所崇敬
和佩服的、軟件界有影響力的人稱之為大俠,并幻想自己有朝一日能夠達(dá)到他們的境界。(跑題一下,
這個(gè)稱謂現(xiàn)在似乎有了一個(gè)比較草根的、或者說比較Web2.0的版本——叫做牛人)上個(gè)世紀(jì)那個(gè)個(gè)人
英雄主義的年代,曾經(jīng)涌現(xiàn)出一大批這樣的人物,現(xiàn)在很多人仍然習(xí)慣稱他們?yōu)椤按髠b”——這其
中包括求伯君、王志東、鮑岳橋、朱崇君...
除此之外,我們還喜歡將重量級(jí)的出版物稱之為武林秘籍;把軟件開發(fā)的組織團(tuán)體比作江湖幫派;
要形容軟件開發(fā)的理想境界,也常會(huì)搬出“飛花摘葉俱可傷人”或“無劍勝有劍”這樣的句子。所有這些
都或多或少的表明:武俠深深影響了大量的程序員,他們非常喜歡用武俠中的理念來比喻軟件開發(fā)過程中
的現(xiàn)象?;蛟S,也是因?yàn)槌绦騿T0和1的生活太過枯燥,需要文化來加一點(diǎn)味道,而他們自覺不自覺的
選擇了武俠。這就是所謂的中國(guó)特色吧。
我必須老實(shí)的承認(rèn):我自己就曾經(jīng)深受武俠的影響,過去也一直沒有感到有什么不妥。但是,
在前幾天看過網(wǎng)上的某些回帖中一些充滿武俠隱喻味道的文字,突然覺得有些不是滋味。
我開始思考:對(duì)于軟件開發(fā)來說,武俠是不是一個(gè)好的隱喻?結(jié)論:不是不好,而是非常的
糟。武俠和軟件開發(fā)根本沒有什么共同點(diǎn),甚至可以說是水火不容的。
為什么說武俠和軟件開發(fā)沒有共同點(diǎn)?武俠講的是破壞的藝術(shù)。太史公說“俠以武犯禁”。
武俠的意義,在最好的情況下,也僅僅是殺富濟(jì)貧、除暴安良,是對(duì)舊有秩序的破壞。
問題在于:破壞是痛快愜意的,但破而不立就是純粹的破壞,沒有任何積極意義。
破壞以后新的秩序如何建立呢?沒有哪一個(gè)武俠故事為此做出答案,
也沒有一個(gè)俠客操心這種事。他們?cè)诤醯氖恰笆綒⒁蝗?,千里不留形”的高手形象?br />至于走了以后爛攤子誰(shuí)來收拾?那本大俠可就管不著了。
軟件開發(fā)是建設(shè),而不是
破壞。即使舊的系統(tǒng)非常糟糕,我們也沒有理由將其付之一炬——這就是為什么現(xiàn)代的敏捷
開發(fā)者非常強(qiáng)調(diào)重構(gòu)的原因。構(gòu)造新的代碼固然是極具創(chuàng)造快感的工作,但是軟件開發(fā)過
程中還有成打的“骯臟”工作:需求分析,設(shè)計(jì),文檔,調(diào)試,維護(hù)......這些工作繁冗
而瑣碎,但卻是整個(gè)開發(fā)過程中必不可少的組成部分。想瀟灑一下就拍拍屁股走人的
程序員沒有什么職業(yè)素質(zhì)可言。
武俠中的高手是什么形象?天馬行空,獨(dú)往獨(dú)來,神出鬼沒。這樣的人看起來很有性格,
但在現(xiàn)代企業(yè)中恰恰是最忌諱的。而正正經(jīng)經(jīng)提倡Team Work的團(tuán)隊(duì)反倒在武俠中常常成為
譏刺的對(duì)象——你不妨看看少林或全真這樣的大型團(tuán)隊(duì)在金庸小說中被丑化成了什么地步。
武俠所描繪的是農(nóng)業(yè)社會(huì)的典型情況。一位高手通常只會(huì)把自己的技藝傳授給至親和少數(shù)幾個(gè)
信得過的弟子;弟子亦然。這種結(jié)構(gòu)非常脆弱:一旦出現(xiàn)任何問題,這門技藝很容易就失傳了。
武俠中的秘籍是這樣一種東西:你得到它以后,最好藏之名山,偷偷修煉。一旦泄漏,只會(huì)給你
帶來殺身之禍。和師徒授受的問題相同,這樣只會(huì)讓最好的技藝在歷史長(zhǎng)河中漸漸湮滅。現(xiàn)代社會(huì)和開放
源代碼運(yùn)動(dòng)則顯示了相反的情況:知識(shí)可以由任何人獲取與學(xué)習(xí),而不分門派貴賤。與別人分享
知識(shí)也不會(huì)給你帶來任何壞處。
武俠成為隱喻帶來的惡果就是,程序員以成為“高手”為榮,以炫耀技巧為樂;無視風(fēng)險(xiǎn)
大量采用一些看上去比較炫的新技術(shù);憤世嫉俗以為天下只有自己懷才未遇;不會(huì)與人
溝通,罔顧客戶需求,把不懂技術(shù)的用戶當(dāng)白癡;不會(huì)開誠(chéng)布公,總是自己偷偷留一手;
凡此種種,不能說都是因?yàn)槲鋫b流毒。但是在程序員中造成了不好的風(fēng)氣,武俠的影響
是不可忽視的。
武俠是成年人的童話,但軟件開發(fā)不是童話。軟件開發(fā)要的是腳踏實(shí)地,而不是快意恩仇。
還在做俠客夢(mèng)的程序員,愿你們?cè)琰c(diǎn)醒來。
?