工程師和黑客的區(qū)別在哪里? - 全文

2014年11月12日 10:27 來(lái)源:互聯(lián)網(wǎng) 作者:佚名 我要評(píng)論(0)

標(biāo)簽:工程師(68469)黑客(21847)

  看待這個(gè)世界最簡(jiǎn)單的方式是莫過(guò)于二元世界觀,一個(gè)人可以放言“這個(gè)世界上只有兩種人……”并將生活的細(xì)微之處看地異常簡(jiǎn)單。作為前言,我聲明這個(gè)世界上的確有兩種人:黑客工程師。

  藝術(shù)家和科學(xué)家vs黑客和畫(huà)家

  小的時(shí)候,父親告訴我世界上有兩種人:藝術(shù)家和科學(xué)家。他說(shuō),藝術(shù)家喜怒無(wú)常而且桀驁不馴,當(dāng)他們想工作的時(shí)候就工作,想休息的時(shí)候就休息。科學(xué)家則是另外一種人:按部就班、恪守規(guī)矩。無(wú)論他們想或不想,都得完成手頭工作。作為亞洲人,顯然我就一個(gè)與藝術(shù)家形象背道而馳的例子,一個(gè)立志成為科學(xué)家的人。我應(yīng)該像科學(xué)家一般的自律且有條理,這也正是我的成長(zhǎng)歷程,盡管我家里任何一個(gè)人都可以證明我是家中最不守規(guī)矩的一個(gè)。

  六年前,我偶然拜讀了保羅。格雷厄姆(Paul Graham)(譯者注:以下簡(jiǎn)稱(chēng)保羅)的書(shū)————《黑客與畫(huà)家》。正如書(shū)名所示,黑客和畫(huà)家一章清晰地闡述了黑客與畫(huà)家之間的關(guān)聯(lián)。保羅在書(shū)中寫(xiě)到,黑客與畫(huà)家的相似之處在于兩者都是創(chuàng)造者(Maker),也正如畫(huà)家一般,黑客有著繆斯女神(譯者注:九位古希臘文藝女神)般的工作習(xí)性。

  書(shū)中“良好的壞習(xí)慣”一章,保羅進(jìn)一步闡述了什么是黑客。在他看來(lái),黑客通常不服管教、桀驁不馴。這確是一件好事,因?yàn)閯?chuàng)新和破舊都需要這樣良好的壞習(xí)慣。

  “喜怒無(wú)?!保üぷ髁?xí)性)和“桀驁不馴”(不服管教)幾乎便是我父親所說(shuō)的“藝術(shù)家形象”。在《黑客與畫(huà)家》書(shū)中,這種比較顯而易見(jiàn),然而這卻是我第一次看到有人將“藝術(shù)家形象”歸類(lèi)到好的一面,于是我決定我的確是要成為一名“黑客”。

  連續(xù)性格特征

  在六年里,我做了很多工作,也學(xué)了很多東西。如果六年前在我讀過(guò)《黑客與畫(huà)家》之后你問(wèn)我,我會(huì)毫不猶豫告訴你誰(shuí)是黑客,誰(shuí)不是黑客。但是現(xiàn)在我發(fā)現(xiàn)我錯(cuò)了。

  想象下有一個(gè)基于工作紀(jì)律性要求、嚴(yán)謹(jǐn)性要求不同而產(chǎn)生的連續(xù)性格。越往左邊越趨向于藝術(shù)家性格,對(duì)應(yīng)的工作要求相對(duì)也較為寬松,越往右邊越趨向科學(xué)家/學(xué)者性格,對(duì)應(yīng)的工作需要較高的嚴(yán)謹(jǐn)性。在中間區(qū)域,便是黑客和工程師。話說(shuō)回來(lái),這也可以被看作是藝術(shù)-科學(xué)工作的連續(xù)性。在我看來(lái),這張圖應(yīng)該是這樣的:

  

  我在這里所說(shuō)的嚴(yán)謹(jǐn)指的是學(xué)術(shù)嚴(yán)謹(jǐn),沒(méi)有暗含褒義或者貶義的意思。在學(xué)術(shù)領(lǐng)域,特別是科學(xué)領(lǐng)域,一個(gè)人的工作必須能夠經(jīng)得起同行嚴(yán)苛的推敲和審閱,也有很多客觀的方法做這些嚴(yán)謹(jǐn)性驗(yàn)證。但對(duì)于藝術(shù)家而言則并非如此,借用保羅書(shū)中畫(huà)家的例子,有很多主觀的方式來(lái)確定什么是好畫(huà)家,什么不是。我雖然搞不懂杰克遜。波洛克(Jackson Pollock)(譯者注:美國(guó)畫(huà)家)的作品,但有很多人懂。

  客觀性的工作和主觀性的工作在我看來(lái)其不同在于嚴(yán)謹(jǐn)性。越是客觀的工作,對(duì)于嚴(yán)謹(jǐn)性要求越高。嚴(yán)謹(jǐn)一詞經(jīng)常與其他的詞產(chǎn)生關(guān)聯(lián),比如“標(biāo)準(zhǔn)”、“死板”和“官僚主義”。畢竟,“嚴(yán)謹(jǐn)(rigour)”和“死板(rigid)”有著相同的詞根。

  無(wú)論在何時(shí),一個(gè)人的性格都可能處在上圖連續(xù)性格特征中的任何一點(diǎn)。當(dāng)你靈感突來(lái)的時(shí)候可能會(huì)創(chuàng)造一些新的東西,當(dāng)你遇到煩心事時(shí)可能會(huì)坐下來(lái)琢磨這些煩心事,當(dāng)你感覺(jué)不好也不壞,處在連續(xù)性格特征的中間區(qū)域時(shí),你可能只是將事情做完,再無(wú)其他。

  關(guān)于工程師

  如今已經(jīng)有很多文字來(lái)描述什么是黑客,但卻沒(méi)幾個(gè)字說(shuō)說(shuō)什么是工程師。在某種程度上,是因?yàn)橄啾群诳?,工程師是一個(gè)更為古老的稱(chēng)呼,或多或少都已經(jīng)在人們心中定型,而且工程師通常是職業(yè)的稱(chēng)呼,而非性格特征的描述。在本文中,我會(huì)試圖描述工程師的性格特征。

  工程師就像黑客的同胞兄弟,它們有一些相同的特征,而其他方面則相去甚遠(yuǎn)。黑客藐視規(guī)則,而工程師熱愛(ài)規(guī)則(或者至少喜歡創(chuàng)造規(guī)則)。對(duì)工程師而言,井然有序是件好事,而對(duì)黑客來(lái)說(shuō)混亂不堪則是益事。工程師的工作以建立過(guò)程和事物為伊始,向著原創(chuàng)方向而努力,很像《黑客與畫(huà)家》中所描述的科學(xué)家。黑客則以興趣為導(dǎo)向進(jìn)行工作,工程師則傾向于死記硬背。當(dāng)然,工程師偶爾也會(huì)不修邊幅。

  工程師和黑客的相似之處在于都是創(chuàng)造并搞定事情。正如科學(xué)家能夠完全沉浸在自己的研究當(dāng)中一樣,藝術(shù)家也會(huì)在自己的藝術(shù)創(chuàng)作中迷失自我。黑客和工程師都是能將事情做好的人,是的,兩者的性格特征都傾向于吹毛求疵,總的說(shuō)來(lái),都是極力在直截了當(dāng)?shù)貙?wèn)題徹底解決。

  說(shuō)到吹毛求疵,我相信在藝術(shù)家和科學(xué)家、黑客和工程師之間存在一些不同。藝術(shù)家和科學(xué)家通常沉浸在自我工作的深度上,黑客和工程師則傾向于吹毛求疵地迷失在自我工作的廣度上。這是畫(huà)家和黑客、科學(xué)家和工程師之間的顯著不同。

  像黑客一樣,工程師也對(duì)細(xì)節(jié)斤斤計(jì)較。工程師對(duì)于細(xì)節(jié)的關(guān)注并非源于他們對(duì)于美的無(wú)盡追求,而是源于對(duì)正確性的自我要求,他們依賴已有知識(shí)體系和已知常識(shí)去創(chuàng)造事物。有些觀點(diǎn)認(rèn)為工程師僅僅是缺乏創(chuàng)造力的實(shí)踐者,但我認(rèn)為事實(shí)并非如此。

  工程師和黑客也都是工匠和實(shí)驗(yàn)者,只不過(guò)他們以不同的方式來(lái)實(shí)踐罷了。黑客是自由散漫的工匠,工程師則是組織有序的工匠。工程師相比黑客更愿意以更為有條理的方式來(lái)做事,因此也比愛(ài)冒險(xiǎn)的黑客少了許多風(fēng)險(xiǎn)。

  本質(zhì)上工程師和黑客是一樣的,唯一的不同在于他們做事的方法和動(dòng)機(jī)。就我看來(lái),知識(shí)水平?jīng)Q定了一個(gè)人會(huì)成為黑客還是成為工程師(譯者注:知識(shí)水平越高的人越會(huì)成為工程師,因?yàn)樗麄冎赖奶嗔耍?/p>

  關(guān)于嚴(yán)謹(jǐn)性

  最初的黑客其實(shí)是科學(xué)家,作為幾個(gè)世紀(jì)前便已存在的職業(yè),科學(xué)家到二十世紀(jì)時(shí)已變地相當(dāng)無(wú)組織無(wú)紀(jì)律。個(gè)人(自我)實(shí)驗(yàn)司空見(jiàn)慣,很多暢銷(xiāo)小說(shuō)中都會(huì)提到這么一段瘋狂的科學(xué)家情節(jié)。

  我曾經(jīng)癡迷地讀過(guò)這么一本書(shū)————《豚鼠科學(xué)家》,這是一本通俗易懂且容易找到的書(shū)。在書(shū)中,作者回顧了那些熱衷做個(gè)人實(shí)驗(yàn)的著名科學(xué)家。在我記憶中印象最深的是霍爾丹(JBS Haldane)(譯者注:遺傳學(xué)家和進(jìn)化生物學(xué)家),部分原因是他是一名眾所周知的科學(xué)家,他的作品之前我之前也讀過(guò)?;魻柕さ膫€(gè)人實(shí)驗(yàn)很有名,以至于因?yàn)閷?shí)驗(yàn)造成失聰,背脊也受了傷。

  要是霍爾丹是名電腦程序員,可能他會(huì)用所有調(diào)試方式來(lái)編寫(xiě)程序來(lái)調(diào)試錯(cuò)誤,簡(jiǎn)而言之,就是黑客。

  嚴(yán)謹(jǐn)性要求在科學(xué)領(lǐng)域出現(xiàn)的較晚。隨著越來(lái)越多的信息開(kāi)始在科學(xué)家們各自研究的領(lǐng)域傳播和分享,各種框架或約定也越來(lái)越被科學(xué)家們所需要。畢竟,如果兩個(gè)化學(xué)家就實(shí)驗(yàn)的目的,工作流程等不能達(dá)成一致,那還搞個(gè)毛飛機(jī)呢?很快,適當(dāng)?shù)膰?yán)謹(jǐn)性框架/約定在科學(xué)界被確定下來(lái),比如如果要做科學(xué)家,你就必須得會(huì)做假設(shè)檢驗(yàn)。

  我相信這樣的事情也發(fā)生在計(jì)算機(jī)科學(xué)及其工業(yè)領(lǐng)域。隨著計(jì)算機(jī)工業(yè)成熟化,它也變得越來(lái)越嚴(yán)謹(jǐn)。戴夫。蓋爾普林(Dave Gelperin)在1988年寫(xiě)了一篇文章叫《軟件測(cè)試的發(fā)展》,在該文中,戴夫和他的合作者指出軟件開(kāi)發(fā)已經(jīng)從面向調(diào)試開(kāi)發(fā)發(fā)展到面向規(guī)范開(kāi)發(fā)(軟件必須滿足規(guī)范)、面向毀滅開(kāi)發(fā)(目的是尋找錯(cuò)誤),面向評(píng)估開(kāi)發(fā)(能夠測(cè)試軟件質(zhì)量)、面向防范開(kāi)發(fā)(檢測(cè)和阻止錯(cuò)誤發(fā)生)。

  今天我們可以找到很多嚴(yán)謹(jǐn)?shù)能浖y(cè)試方法——從BDD到TDD,我敢打賭這只會(huì)更加穩(wěn)固軟件嚴(yán)謹(jǐn)性的發(fā)展,就像假設(shè)檢驗(yàn)是科學(xué)界嚴(yán)謹(jǐn)方式的中堅(jiān)力量一般。

  關(guān)于黑客

  黑客在哪里?黑客無(wú)所不在。不同于將黑客和工程師看作一成不變的性格特性,我更愿意認(rèn)為黑客或工程師像是人們所戴的帽子————?jiǎng)?chuàng)造者尤其如此。黑客與工程師的不同在于在給定的時(shí)間、地點(diǎn)和情形下其本人是什么樣的人。

  在《黑客與畫(huà)家》中,保羅反對(duì)將計(jì)算機(jī)科學(xué)當(dāng)作科學(xué)來(lái)對(duì)待。他寫(xiě)到,黑客只想做黑客所做的事情,而不是寫(xiě)論文?;旧?,我認(rèn)可他的想法,在領(lǐng)域/職業(yè)心理層面,這是很重要的。作程序員的人并不妨礙他成為一名黑客,當(dāng)然也不妨礙他成為諾貝爾物理學(xué)獎(jiǎng)獲得者。

  正如前文中所提到的,黑客的特性是破舊,拒絕約定俗成的舉動(dòng)往往會(huì)引起重大革新/突破。

  李納斯。托沃茲(Linux Torvalds)反感所有常規(guī)的軟件創(chuàng)造過(guò)程。他打破了以往各自為營(yíng)的封閉式軟件開(kāi)發(fā)模式,開(kāi)創(chuàng)了Linux開(kāi)源系統(tǒng),正如艾瑞克斯。雷蒙德(Eric S Raymond)在《大教堂和市集》中所描述的那樣,這是極具震撼力的革新。

  盡管如此,李納斯也并非是一個(gè)草率馬虎的程序員,事實(shí)恰好相反,他所寫(xiě)的Linux內(nèi)核的源碼有著不可思議的美感。在創(chuàng)造這樣的程序時(shí)同樣需要有明確的規(guī)則、約定的方法,在Linux開(kāi)發(fā)工作之余,他也可以說(shuō)是一名帶著工程師帽子的開(kāi)發(fā)者。

  關(guān)于角色

  六年前,我曾說(shuō)過(guò)做一名黑客或一名工程師需要與生俱來(lái)的品質(zhì)。而我現(xiàn)在則認(rèn)為,在不同的領(lǐng)域,不同的情形下我們有著不同的心理特征。

  創(chuàng)業(yè)公司從來(lái)不會(huì)在單個(gè)領(lǐng)域起步,例如,一家搜索引擎起家的公司既包含商業(yè)領(lǐng)域(如商業(yè)運(yùn)營(yíng)、業(yè)務(wù)管理),又包含軟件開(kāi)發(fā)領(lǐng)域(如開(kāi)發(fā)搜索引擎軟件)。

  在這里我舉兩個(gè)創(chuàng)業(yè)公司至少在兩個(gè)領(lǐng)域起步的例子。想象一下,有兩個(gè)合伙人正處在創(chuàng)業(yè)階段,兩人都是程序員且都是創(chuàng)造者類(lèi)型(就是說(shuō)他們喜歡創(chuàng)造東西出來(lái)),但是A比B有著更多的開(kāi)發(fā)經(jīng)驗(yàn)和知識(shí),而B(niǎo)有著比A多的商業(yè)運(yùn)營(yíng)經(jīng)驗(yàn)。當(dāng)涉及到商業(yè)領(lǐng)域時(shí),B通常會(huì)成為工程師角色,而A則傾向于成為黑客的角色。在創(chuàng)建一家創(chuàng)業(yè)公司的結(jié)構(gòu)或框架時(shí),B比A知道更多關(guān)于商業(yè)運(yùn)營(yíng)方面的陷阱,比如B知道特定的稅必須以特定的方式繳納,但A不知道而且還會(huì)提出一些美好但違法的黑客式方法。

  然而,當(dāng)涉及到軟件開(kāi)發(fā)領(lǐng)域時(shí),他們的角色將會(huì)發(fā)生轉(zhuǎn)換。例如,A有著足夠充分的理由架設(shè)桌面視頻會(huì)議系統(tǒng)來(lái)用,而缺乏經(jīng)驗(yàn)的程序員可能會(huì)將此舉認(rèn)為是在阻礙他們黑客式的行為。

  當(dāng)涉及到單個(gè)程序開(kāi)發(fā)時(shí)就更有趣了。一個(gè)人可能會(huì)以他的知識(shí)體系和工程素養(yǎng)創(chuàng)造一段程序出來(lái),或者是提出一個(gè)工程化解決方案,然后像黑客那樣探尋這個(gè)解決方案的更多發(fā)展空間。前者的例子是,李納斯。托瓦茲以黑客方式創(chuàng)造了Linux內(nèi)核————當(dāng)Linux被創(chuàng)造時(shí)是以MINIX系統(tǒng)的fork程序?yàn)榛A(chǔ)的,但同時(shí)他也做了很多精細(xì)的工程化的工作。后者的例子是理查德。費(fèi)因曼(Richard Feynman)對(duì)于量子電動(dòng)力學(xué)的發(fā)現(xiàn)。

  角色轉(zhuǎn)換

  當(dāng)一個(gè)黑客和一個(gè)工程師在一間屋子里計(jì)劃一起創(chuàng)造一些東西出來(lái)時(shí),可能會(huì)是誰(shuí)也不服誰(shuí)的狀態(tài)。盡管如此,我仍然強(qiáng)烈建議在初創(chuàng)公司中既包含有黑客型人才,亦包含有工程師型人才。

  依據(jù)不同的情形,創(chuàng)造者(黑客或工程師)有著不同的心理特征,這可以被很好的加以利用。在存在黑客和工程師的領(lǐng)域里,黑客能夠以革新的角度看待舊問(wèn)題,尋找漏洞并做修補(bǔ),而工程師能夠?yàn)楹诳吞峁┰鷮?shí)的事實(shí)基礎(chǔ)。上文中的稅收例子便是說(shuō)明。

  事實(shí)上,依據(jù)情境變化的角色轉(zhuǎn)換也可以很好的加以利用。保羅在《黑客與畫(huà)家》中談到黑客需要同理心。角色轉(zhuǎn)換是很好的同理心訓(xùn)練。雖然角色轉(zhuǎn)換大多數(shù)時(shí)候發(fā)生在不同領(lǐng)域轉(zhuǎn)換中(比如,A是商業(yè)運(yùn)營(yíng)方面的黑客,軟件開(kāi)發(fā)方面的工程師;B正好相反),如果初創(chuàng)業(yè)者能夠認(rèn)清他們正在扮演的角色以及需要的角色,這會(huì)是很好的鍛煉同理心的機(jī)會(huì)。

  工程師可能會(huì)覺(jué)得自己多年的經(jīng)驗(yàn)會(huì)被黑客忽視掉,而黑客會(huì)覺(jué)得他的能力會(huì)被工程師所設(shè)定的條條框框所牽絆。當(dāng)這樣的事情發(fā)生時(shí),其實(shí)是不錯(cuò)的機(jī)會(huì)去感受彼此的角色————試著穿上別人的鞋子走走看,或許能走一英里亦或兩英里。

  關(guān)于這點(diǎn),我想指出的是,我不相信每個(gè)人都有黑客的品質(zhì),總會(huì)有一些人承受不了一點(diǎn)點(diǎn)的冒險(xiǎn)或不服從的后果。在我看來(lái)這些人可能適合生活在更大的環(huán)境中,但不適合在初創(chuàng)團(tuán)隊(duì)里,創(chuàng)業(yè)團(tuán)隊(duì)需要的是能夠在黑客和工程師角色之間相互轉(zhuǎn)換的人。

  在另一方面,如果初創(chuàng)團(tuán)隊(duì)負(fù)責(zé)是是極為重要的軟件(比如可能會(huì)引起多人喪命的那種),那么相比黑客式思考方式,團(tuán)隊(duì)需要的更多是工程師式的想法。當(dāng)然,這并不妨礙一些娛樂(lè)型的黑客用像Python這樣的動(dòng)態(tài)語(yǔ)言做出一些瘋狂的事,像是用Python控制30噸重的設(shè)備。

  結(jié)束語(yǔ)

  黑客早已不是什么新名詞,但黑客這個(gè)詞已經(jīng)存在許久并將存在更久。從伽利略到費(fèi)因曼再到托瓦茲,總會(huì)有一些麻煩制造者伸長(zhǎng)了脖子探尋著盒子外的世界,桀驁不馴、尋求革新。

  在軟件方面,我贊同保羅。格雷厄姆的觀點(diǎn)。我們生活在軟件黑客的繁榮時(shí)代,但隨著計(jì)算機(jī)工業(yè)的成熟,工程師將會(huì)逐漸成為新新人類(lèi),他們可能沒(méi)有黑客那么迷人,但他們將會(huì)是軟件的根基。

  綜上所述,最重要的是繼續(xù)努力前行,繼續(xù)努力創(chuàng)造新的事物,不管你是一名黑客還是一名工程師,因?yàn)槭莿?chuàng)造者(Maker)在推動(dòng)這個(gè)世界發(fā)展。

上一頁(yè)123全文

本文導(dǎo)航