當(dāng)今的程序設(shè)計是軟件工程師與宇宙之間的較量,前者拼命創(chuàng)造更大、更好、更容易操作的傻瓜程序,后者努力制造更大、更好的傻瓜。截至目前,宇宙是獲勝者。
——里克?庫克
雖然我非??粗睾妥鹁垂こ處?,但他們確實經(jīng)常說謊。或許說謊是進行偉大創(chuàng)新所必需的,因為那么多人告訴你想做的事情不可能實現(xiàn)或者人們根本不需要。但是只要你明白他們在說謊,那就沒問題。
1.“我對市場營銷一竅不通。”這是個故作謙虛的謊言,其實這個工程師在想:“我對市場營銷一竅不通,但是與我的開發(fā)工作相比,又能難到哪兒去?我應(yīng)該進行市場營銷和工程設(shè)計,我只希望工商管理碩士們提出一些配得上我的程序的想法。”不過,不要過度擔(dān)心這個謊話,因為當(dāng)工程師錯過一個又一個最后期限,開始意識到他自己的問題更大時,他們會對這個謊話進行自我更正。
2.“我們就要進行貝塔測試了。”這是句毫無意義的話,因為什么時候進行測試關(guān)系不大,真正重要的是什么時候結(jié)束貝塔測試(當(dāng)今貝塔測試既有效又迅速的最后期限是“在你花完錢以前”)。
在過去的好日子里,阿爾法測試的意思是 “所有的功能都實現(xiàn)了,雖然不一定正常運行”,貝塔測試的意思是“不會再出現(xiàn)重復(fù)性漏洞”。但今天貝塔測試的意思是:“我們向投資人承諾的產(chǎn)品推出日期已經(jīng)不能再往后拖了。”
3.“我會對程序進行注釋,這樣接替我的人會明白我做過什么?!边@是一個善意的謊言。工程師的確想對程序進行注釋,但是隨著時間消逝,最重要的任務(wù)已發(fā)生了改變。給管理者的問題變成了:“你是想讓我對程序進行注釋呢?還是快點完成編程?”答案猜都猜得出來。幸運的是,缺少注釋通常影響不大,因為程序本身漏洞百出,不到1年就有要整個重寫。
4.“我們的程序結(jié)構(gòu)具有可擴展性?!边@是我最喜歡聽的謊話。典型的情況是,一個沒有推出過產(chǎn)品的工程師會先利用Visual Basic語言創(chuàng)造出一個原型,然后再這么說。整句謊話似乎是這個樣子:“谷歌搜索引擎的結(jié)構(gòu)不像我的這個這么有伸展空間,它同時可支持2500萬個搜索。我們能輕輕松松地解決10億?!毙疫\的是,大多數(shù)情況下,產(chǎn)品的采用比總裁“保守的”預(yù)測要慢,因此可擴展性沒成為一個問題。
5.“這個程序支持該產(chǎn)業(yè)的所有標準?!边@幾乎是真的,但是遺漏了一小點:“這個程序支持所有我同意的行業(yè)標準?!惫こ處熕阶詻Q定忽略那些她不喜歡的產(chǎn)業(yè)標準,比如微軟公司發(fā)布的標準。對于工程師來說,這只是小事一樁,反正用戶不會知道。
6.“我們有一個有效地錯誤提交報告數(shù)據(jù)庫和系統(tǒng)。”可是,設(shè)計錯誤提交報告數(shù)據(jù)庫和系統(tǒng)背后的假定是程序沒有漏洞,所以數(shù)據(jù)庫和報告沒多大意義。一般來說,如果有記錄的錯誤最大值不超過1000,那就說明公司沒有仔細地追蹤錯誤。
7.“我們可以讓一個境外的印度程序組更快、更經(jīng)濟、更好地完成這個工作?!背绦蚪M普通成員通常不會說這個謊話,一般只有首席技術(shù)官這么說。不知怎么會使人們認為印度的每個程序員都又快,又好、報酬又低,而美國的每個程序員都又笨、又慢、又昂貴。這顯然不是事實。
8.“我們的貝塔測試站點喜歡這個?!痹趶氖录夹g(shù)行業(yè)的25年中,我從沒聽說到過有公司報告它的測試網(wǎng)站不喜歡它的產(chǎn)品。這有三個原因:首先,很多測試網(wǎng)站十分榮幸地獲得發(fā)行前的軟件,他們不想說任何負面評論。第二,大多數(shù)測試網(wǎng)站對這個軟件的使用率不高。第三,大多數(shù)測試網(wǎng)站不想說壞話來批評一個公司的新產(chǎn)品。因為如果那樣做會就像告訴某人他的寶寶是個丑八怪一樣不為社會所接受。
9.“這一回我們對了?!庇嘘P(guān)這個謊言的可怕之處是工程師又真的相信了,問題是“這一回”反復(fù)出現(xiàn)。我很信任工程師們,并且相信從長遠來看他們能做對,但問題在于從長遠來看我們都是會死的。
10.“這個程序太差了,完全重做都比調(diào)試和擴展當(dāng)前的版本要快?!泵總€程序員都會這么評價其他程序員的程序,有些人照樣會對重寫后的版本這么評價。
11.“我喜歡思考結(jié)構(gòu)的問題,但是我會寫程序?!边@說明這個程序員不會寫程序,并且還可能不會設(shè)計一個好結(jié)構(gòu)。
12.“這在我的電腦運行良好?!薄拔业碾娔X”沒準兒是世界上唯一一臺能正常運行這個程度的計算機。
13.“當(dāng)然我可以不寫程序,改做業(yè)務(wù)。”這是每個工程師出身的創(chuàng)業(yè)者著名的最后箴言。這說明他(或她)既放不下寫程序,又不能做業(yè)務(wù)。
14.“連我媽媽都能操縱顯示器?!碑?dāng)然能啦,你媽媽有麻省理工學(xué)院的計算機博士學(xué)位。
我喜歡工程師們說的謊話,原因有三:首先,他們的謊話表現(xiàn)了工程師對公司實際運作情況的孩子般的無知。第二,工程師們確實相信他們說的謊話,而創(chuàng)業(yè)者、風(fēng)險投資人和律師則不是。第三,他們說的大部分謊話并非不誠實,而只是“有點早”或者最終會實現(xiàn)。如果你是一名工程師,現(xiàn)在你就