【程序員·隨身聽】《黑客與畫家》內(nèi)容2

大家好弄痹,感謝收聽【程序員·隨身聽】。

這一期我們繼續(xù)說《黑客與畫家》嵌器。

第二章 黑客與畫家

作者試圖通過這個(gè)話題肛真,來解釋黑客更像畫家,而不是所謂的計(jì)算機(jī)科學(xué)的工作者爽航。作者首先解釋他這么說的原因蚓让,然后講如果黑客把自己當(dāng)做計(jì)算機(jī)科學(xué)家,會(huì)引起什么誤會(huì)讥珍,走什么樣的彎路历极,接著講了,如果向畫家這一職業(yè)類比衷佃,會(huì)得到什么靈感趟卸,最后講了自己的一些感想。

下面我就講講作者在這篇文章中的主要內(nèi)容氏义。

讀完計(jì)算機(jī)系的研究生锄列,作者去了藝術(shù)學(xué)校,學(xué)習(xí)繪畫惯悠。許多人很吃驚邻邮,一個(gè)喜歡計(jì)算機(jī)的人,居然還喜歡畫畫克婶!他們似乎覺得饶囚,擺弄計(jì)算機(jī)和畫畫是兩件截然不同的事情--計(jì)算機(jī)是冰冷的帕翻、精確的、井然有序的萝风,而畫畫是某種原始欲望熱烈狂放的表達(dá)方式嘀掸。

這種看法是錯(cuò)的。計(jì)算機(jī)和畫畫有許多共同之處规惰。事實(shí)上睬塌,在我知道的所有行業(yè)中,黑客與畫家最像歇万。

黑客與畫家的共同之處揩晴,在于他們都是創(chuàng)作者。與作曲家贪磺、建筑師硫兰、作家一樣,黑客與畫家都是試圖創(chuàng)作出優(yōu)秀的作品寒锚。他們本質(zhì)上都不是在做研究劫映,雖然在創(chuàng)作過程中,他們可能會(huì)發(fā)現(xiàn)一些新技術(shù)刹前。

我一直不喜歡“計(jì)算機(jī)科學(xué)”(computer science)這個(gè)詞泳赋。主要原因是根本不存在這種東西。計(jì)算機(jī)科學(xué)就像一個(gè)大雜燴喇喉,由于某些歷史意外祖今,很多不相干的領(lǐng)域被強(qiáng)行拼裝在一起。這個(gè)學(xué)科的一端是純粹的數(shù)學(xué)家拣技,他們自稱是“計(jì)算機(jī)科學(xué)家”千诬,只是為了得到國防部研究局(DARPA)的項(xiàng)目資助。中間是計(jì)算機(jī)博物學(xué)家膏斤,研究各種專門性的題目大渤,比如網(wǎng)絡(luò)數(shù)據(jù)的路由算法。另一端則是黑客掸绞,只想寫出有趣的軟件泵三,對(duì)于他們來說,計(jì)算機(jī)只是一種表達(dá)的媒介衔掸,就像建筑師手里的混凝土烫幕,或者畫家手里的顏料。所以敞映,在“計(jì)算機(jī)科學(xué)”的名下较曼,數(shù)學(xué)家,物理學(xué)家和建筑師不得不待在同一個(gè)系里振愿。

(有時(shí)捷犹,黑客做的事情被稱為“軟件工程”(software engineering,但是這個(gè)詞也是誤導(dǎo)的弛饭。與其說優(yōu)秀的軟件設(shè)計(jì)師是工程師,還不如說是建筑師(建筑師和架構(gòu)師是同一個(gè)詞萍歉,architect,建筑學(xué)和架構(gòu)學(xué)也是侣颂,architecture)。建筑學(xué)和工程學(xué)之間的區(qū)別并不是很嚴(yán)格枪孩,但就是存在區(qū)別憔晒,建筑師決定做什么,工程師想出怎么做蔑舞。

當(dāng)然拒担,做什么和怎么做不應(yīng)該分得太開。如果你決定做一件事攻询,卻不知道怎么做从撼,你就是在自找麻煩。但是钧栖,只是單純地決定如何實(shí)現(xiàn)某種規(guī)格低零,那肯定不是黑客。黑客的最高境界是創(chuàng)造規(guī)格桐经。雖然看起來,做到這一點(diǎn)的最好方法就是先做出一個(gè)樣品把規(guī)格實(shí)現(xiàn)了浙滤。)

把不同類型的工作捆綁在一起阴挣,可能是為了行政管理的方便,但是卻容易引起混淆纺腊。數(shù)學(xué)家看來并不在乎自己搞的是計(jì)算機(jī)還是數(shù)學(xué)畔咧,他們很高興來到這個(gè)新地方,然后就開始埋頭證明新的定理揖膜,與數(shù)學(xué)系的數(shù)學(xué)家干的事情完全一樣誓沸。但對(duì)于黑客,“計(jì)算機(jī)科學(xué)”這個(gè)標(biāo)簽是一個(gè)麻煩壹粟。如果黑客的工作被稱為科學(xué)拜隧,這會(huì)讓他們感到自己應(yīng)該做的像搞科學(xué)一樣。所以趁仙,大學(xué)和實(shí)驗(yàn)室里的黑客洪添,就不去做那些真正想做的事情(設(shè)計(jì)優(yōu)美的軟件),而是覺得自己應(yīng)該寫一些研究性的論文雀费。

要是黑客寫論文干奢,最好的情況下,寫出來的也只是一些補(bǔ)充性的描述盏袄,不會(huì)具有太大的實(shí)際價(jià)值忿峻。黑客先開發(fā)了一個(gè)很酷的軟件薄啥,然后就寫一篇論文,介紹這個(gè)軟件逛尚,論文變成了軟件成果的展示垄惧。優(yōu)美的軟件并不總是論文的合適題材。首先黑低,科學(xué)研究必須具有原創(chuàng)性赘艳。其次,科學(xué)研究必須是能夠產(chǎn)生大量成果的克握,而那些不成熟的蕾管、障礙重重的領(lǐng)域最容易寫出許多篇論文。

但是菩暗,創(chuàng)造優(yōu)美事物的方式往往不是從頭做起掰曾,而是在現(xiàn)有成果的基礎(chǔ)上做一些小小的調(diào)整,或者將已有的觀點(diǎn)用比較新的方式組合起來停团。這種類型的工作很難用研究性的論文表達(dá)旷坦。

那么,為什么大學(xué)和實(shí)驗(yàn)室還把論文數(shù)量作為考核黑客工作的指標(biāo)呢佑稠?這種事情其實(shí)在日常生活中普遍存在秒梅,比如,我們使用簡單的標(biāo)準(zhǔn)化測(cè)試考核學(xué)生的學(xué)術(shù)能力傾向舌胶,再比如捆蜀,我們使用代碼行數(shù)考核程序員的工作效率。這樣的考核容易實(shí)施幔嫂,而容易實(shí)施的考核總是首先被采用辆它。

唯一有效的外部考核是時(shí)間。經(jīng)過歲月的洗禮履恩,優(yōu)美的東西生存發(fā)展的機(jī)會(huì)更大锰茉。不幸的是,這種考核需要的時(shí)間可能比一個(gè)人的生命還要長切心。

人們無法考核你的工作飒筑,甚至誤解你的工作,都不是最糟的事绽昏。更大的危險(xiǎn)是你自己也會(huì)誤解自己的工作扬霜。如果你發(fā)現(xiàn)自己讀的是計(jì)算機(jī)科學(xué),你就會(huì)以為計(jì)算機(jī)科學(xué)和其他理論科學(xué)并無不同而涉,你的工作屬于理論計(jì)算機(jī)科學(xué)所涉及的那種理論的應(yīng)用研究著瓶。讀研究生期間,我潛意識(shí)里一直有一種很不舒服的感覺啼县,覺得自己應(yīng)該多學(xué)一點(diǎn)理論材原,不應(yīng)該期末考試結(jié)束還不到三個(gè)星期沸久,就把所有東西忘得一干二凈。現(xiàn)在余蟹,我意識(shí)到自己錯(cuò)了卷胯。黑客搞懂計(jì)算理論的必要性,與畫家搞懂顏料化學(xué)成分的必要性差不多大威酒。一般來說窑睁,理論上,你需要知道如何計(jì)算“時(shí)間復(fù)雜度”和“空間復(fù)雜度”葵孤;如果你寫一個(gè)解析器担钮,可能還需要知道狀態(tài)機(jī)的概念;除此以外尤仍,并不需要知道特別多的理論箫津。

我發(fā)現(xiàn),黑客新想法的最佳來源宰啦,并非那些名字里有計(jì)算機(jī)三個(gè)字的領(lǐng)域苏遥,而是來自于其他創(chuàng)作領(lǐng)域。與其到計(jì)算理論領(lǐng)域?qū)ふ覄?chuàng)意赡模,還不如在繪畫中尋找創(chuàng)意田炭。

舉例來說,我在大學(xué)受到的教育是漓柑,在上機(jī)編程之前教硫,應(yīng)該先在紙上把程序搞清楚∑墼担可我一直不是這樣編程栋豫,我喜歡直接坐在計(jì)算機(jī)前編程挤安,而不是在紙上編程谚殊。更糟的是,我不是耐心地一步步寫成整個(gè)程序蛤铜,而是一股腦不管對(duì)錯(cuò)嫩絮,先把代碼堆上去,再慢慢修改围肥。書上說剿干,debugging是最后的步驟,可我的工作方法卻像編程就是在調(diào)試穆刻。

很長一段時(shí)間置尔,我都為此沮喪。就像小學(xué)老師教我怎么拿鉛筆氢伟,我卻總是學(xué)不會(huì)那種感覺榜轿。如果我那時(shí)看到其他創(chuàng)作領(lǐng)域幽歼,如繪畫和建筑,我會(huì)想到自己的學(xué)習(xí)方法有一個(gè)正式名稱:打草稿谬盐。

明白這一點(diǎn)對(duì)軟件設(shè)計(jì)有重大影響甸私。它意味著,編程語言首要的特性應(yīng)該是允許動(dòng)態(tài)擴(kuò)展飞傀。編程語言是用來幫助你思考程序的皇型,而不是用來表達(dá)你已經(jīng)想好的程序。這也是我認(rèn)識(shí)的黑客砸烦,沒有一個(gè)喜歡用靜態(tài)類型語言編程的原因弃鸦。

創(chuàng)作者不同于科學(xué)家,明白這一點(diǎn)有很多好處外冀。除了不用為靜態(tài)類型煩惱外寡键,還可以免去另一個(gè)折磨科學(xué)家的難題--對(duì)數(shù)學(xué)家的妒忌⊙┧恚科學(xué)界的每一個(gè)人西轩,暗地里都相信數(shù)學(xué)家比自己聰明,我覺得脑沿,數(shù)學(xué)家也相信這一點(diǎn)藕畔。這會(huì)引誘你用數(shù)學(xué)的方式解決問題。如果黑客認(rèn)識(shí)到自己與其他創(chuàng)作者是一類人庄拇,這種誘惑就不起作用注服。

如果大學(xué)和實(shí)驗(yàn)室不允許黑客做他們想做的事情,那么適合黑客的地方可能就是企業(yè)措近。不幸的是溶弟,大多數(shù)企業(yè)也不允許黑客做他們想做的事情。大學(xué)和實(shí)驗(yàn)室強(qiáng)迫黑客成為科學(xué)家瞭郑,企業(yè)強(qiáng)迫黑客成為工程師辜御。在企業(yè)歼郭,“黑客”的工作就是用軟件實(shí)現(xiàn)某個(gè)功能煌珊,而不是設(shè)計(jì)軟件荷科。在那里手负,程序員被當(dāng)做技工从绘,職責(zé)就是將產(chǎn)品經(jīng)理的構(gòu)想翻譯成代碼粉臊。

這似乎是普遍情況箫爷。大公司這樣安排的原因是減少標(biāo)準(zhǔn)差舌稀。因?yàn)閷?shí)際上只有很少一部分黑客懂得如何正確設(shè)計(jì)軟件场绿,管理層很難識(shí)別應(yīng)該把設(shè)計(jì)軟件的任務(wù)交給誰剖效,因此,只能交給一個(gè)負(fù)責(zé)產(chǎn)品的委員會(huì)。不過璧尸,這是創(chuàng)業(yè)公司的優(yōu)勢(shì)所在劝贸。如果你的競(jìng)爭優(yōu)勢(shì)在軟件設(shè)計(jì)方面,并且你的對(duì)手是一家大公司逗宁,它大到由一群產(chǎn)品經(jīng)理來設(shè)計(jì)軟件映九,那么你的對(duì)手將無法趕上你。不過瞎颗,說實(shí)話件甥,這樣的機(jī)會(huì)不容易找到,你很難單單依靠軟件設(shè)計(jì)就與大公司展開競(jìng)爭哼拔。真正競(jìng)爭軟件設(shè)計(jì)的戰(zhàn)場(chǎng)是新興領(lǐng)域的市場(chǎng)引有,這里還沒有人建立過防御工事。只要你能做出大膽的設(shè)計(jì)倦逐,由一個(gè)人或一批人同時(shí)負(fù)責(zé)設(shè)計(jì)和實(shí)現(xiàn)產(chǎn)品譬正,你就能在這里戰(zhàn)勝大公司。

所以檬姥,開發(fā)優(yōu)秀軟件的方法之一就是自己創(chuàng)業(yè)曾我,但是,這樣做會(huì)遇到兩個(gè)問題健民。一個(gè)是自己開公司的話抒巢,必須處理許許多多與開發(fā)軟件完全無關(guān)的事情。作者創(chuàng)業(yè)的時(shí)候秉犹,如果能有四分之一的時(shí)間做開發(fā)就感到幸運(yùn)蛉谜。另一個(gè)問題是,賺錢的軟件往往不是好玩的軟件崇堵,兩者的重疊度不高型诚。好比寫小說的回報(bào)比不上寫廣告文案的回報(bào)。

那黑客如何才能做自己喜歡的事情鸳劳?那就是找一份兒白天工作狰贯,一份為了賺錢的工作,然后還有一份兒愛好的工作棍辕。幾乎所有創(chuàng)作者在職業(yè)生涯早期都有一份兒白天工作暮现。

因?yàn)楹诳透駝?chuàng)作者还绘,而不是科學(xué)家楚昭,所以要了解黑客,不應(yīng)該在科學(xué)家身上尋找啟示拍顷,而是應(yīng)該觀察其他類型的創(chuàng)作者抚太。那么,從畫家身上,我們還能借鑒到什么對(duì)黑客的啟示呢尿贫?

有一件事情是可以借鑒的电媳,那就是應(yīng)該如何學(xué)習(xí)編程。畫家學(xué)習(xí)繪畫的方法主要是動(dòng)手去畫庆亡,黑客學(xué)習(xí)編程的方法也理應(yīng)如此匾乓。大多數(shù)黑客不是通過大學(xué)課程學(xué)會(huì)編程的,他們從實(shí)踐中學(xué)習(xí)又谋,13歲時(shí)就自己動(dòng)手寫程序了拼缝。即使上了大學(xué),黑客學(xué)習(xí)編程依然主要通過自己寫程序彰亥。還有一個(gè)可以借鑒繪畫的地方:一幅畫是逐步完成的咧七。通常一開始是一張草圖,然后再逐步填入細(xì)節(jié)任斋。但是继阻,它又不單純是一個(gè)填入細(xì)節(jié)的過程。有時(shí)废酷,原先的構(gòu)想看來是錯(cuò)的瘟檩,你就必須動(dòng)手修改。無數(shù)古代油畫放在X光下檢視澈蟆,就能看出修改的痕跡芒帕。黑客也應(yīng)該這樣工作。你不能期盼先有一個(gè)完美的規(guī)格設(shè)計(jì)丰介,然后再動(dòng)手編程背蟆。如果你預(yù)先承認(rèn)規(guī)格設(shè)計(jì)是不完美的,在編程的時(shí)候哮幢,就可以根據(jù)需要當(dāng)場(chǎng)修改規(guī)格带膀,最終會(huì)有一個(gè)更好的結(jié)果。因而橙垢,過早優(yōu)化和過早設(shè)計(jì)都是件危險(xiǎn)的事情垛叨。

接下來作者說,

1柜某、優(yōu)秀的軟件應(yīng)該對(duì)美有狂熱的追求嗽元。如果你查看優(yōu)秀軟件的內(nèi)部,你會(huì)發(fā)現(xiàn)那些預(yù)料中沒有人會(huì)看見的部分也是優(yōu)美的喂击。

2剂癌、普通黑客與優(yōu)秀黑客一個(gè)重要區(qū)別是,會(huì)不會(huì)換位思考翰绊。不會(huì)換位思考佩谷,很難設(shè)計(jì)出優(yōu)秀的軟件旁壮。判斷一個(gè)人是否具備換位思考的能力有一個(gè)好方法,就是看他怎樣向沒有技術(shù)背景的人解釋技術(shù)問題谐檀。

3抡谐、眼下看來藝術(shù)家比黑客更酷,但是我們不應(yīng)該忘記桐猬,古時(shí)候繪畫蓬勃發(fā)展的黃金年代麦撵,畫家也不是像今天這樣酷的。現(xiàn)在正是編程的黃金年代溃肪,編程能有多酷厦坛,要看我們能夠用編程做出怎樣的工作,就像達(dá)·芬奇推動(dòng)繪畫成為一種偉大的表達(dá)方式乍惊。

這一期就講到這里杜秸,感謝您的收聽。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末润绎,一起剝皮案震驚了整個(gè)濱河市撬碟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌莉撇,老刑警劉巖呢蛤,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異棍郎,居然都是意外死亡其障,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門涂佃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來励翼,“玉大人,你說我怎么就攤上這事辜荠∑В” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵伯病,是天一觀的道長造烁。 經(jīng)常有香客問我,道長午笛,這世上最難降的妖魔是什么惭蟋? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮药磺,結(jié)果婚禮上告组,老公的妹妹穿的比我還像新娘。我一直安慰自己与涡,他們只是感情好惹谐,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著驼卖,像睡著了一般氨肌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上酌畜,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天怎囚,我揣著相機(jī)與錄音,去河邊找鬼桥胞。 笑死恳守,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的贩虾。 我是一名探鬼主播催烘,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼缎罢!你這毒婦竟也來了伊群?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤策精,失蹤者是張志新(化名)和其女友劉穎舰始,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咽袜,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡丸卷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了询刹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谜嫉。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖凹联,靈堂內(nèi)的尸體忽然破棺而出骄恶,到底是詐尸還是另有隱情,我是刑警寧澤匕垫,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布僧鲁,位于F島的核電站,受9級(jí)特大地震影響象泵,放射性物質(zhì)發(fā)生泄漏寞秃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一偶惠、第九天 我趴在偏房一處隱蔽的房頂上張望春寿。 院中可真熱鬧,春花似錦忽孽、人聲如沸绑改。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽厘线。三九已至识腿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間造壮,已是汗流浹背渡讼。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留耳璧,地道東北人成箫。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像旨枯,于是被迫代替她去往敵國和親蹬昌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 本文把程序員所需掌握的關(guān)鍵知識(shí)總結(jié)為三大類19個(gè)關(guān)鍵概念攀隔,然后給出了掌握每個(gè)關(guān)鍵概念所需的入門書籍凳厢,必讀書籍,以及...
    dle_oxio閱讀 11,087評(píng)論 6 244
  • 黑客與畫家 0. 譯者序 《黑客:計(jì)算機(jī)革命的英雄》中提出的6條黑客價(jià)值觀 使用計(jì)算機(jī)以及所有有助于了解這個(gè)世界本...
    雁宇閱讀 502評(píng)論 0 2
  • 《黑客與畫家》讀書筆記作者:【美】格雷厄姆 保羅·格雷厄姆其人其事 Y Combinator (Y運(yùn)算子竞慢,簡稱YC...
    Cytosine閱讀 1,112評(píng)論 0 3
  • 推薦理由 本書是硅谷創(chuàng)業(yè)之父Paul Graham 的文集先紫,主要介紹黑客即優(yōu)秀程序員的愛好和動(dòng)機(jī),討論黑客成長筹煮、黑...
    lsfire閱讀 433評(píng)論 0 1
  • 3 沒有記憶的人生證明你只是在虛度 忽然發(fā)現(xiàn)發(fā)現(xiàn)我人生前十幾年的人生幾乎沒有什么記憶遮精,就算有也只是偶然之間彈出...
    Deer麓閱讀 240評(píng)論 0 0