推薦理由
本書是硅谷創(chuàng)業(yè)之父Paul Graham 的文集,主要介紹黑客即優(yōu)秀程序員的愛好和動機巷怜,討論黑客成長、黑客對世界的貢獻以及編程語言和黑客工作方法等所有對計算機時代感興趣的人的一些話題牧抽。書中的內(nèi)容不但有助于了解計算機編程的本質(zhì)谷炸、互聯(lián)網(wǎng)行業(yè)的規(guī)則,還會幫助讀者了解我們這個時代畦徘,迫使讀者獨立思考闭专。
作者簡介
保羅?格雷厄姆,《黑客與畫家》一書的作者旧烧,硅谷創(chuàng)業(yè)之父。1964年画髓,出生于匹茲堡郊區(qū)的一個中產(chǎn)階級家庭掘剪。父親是設計核反應堆的物理學家,母親在家照看他和他的妹妹奈虾。青少年時代夺谁,格雷厄姆就開始編程。但是肉微,他還喜歡許多與計算機無關的東西匾鸥,這在編程高手之中是很少見的。
保羅?格雷厄姆在康奈爾大學讀完本科碉纳,然后在哈佛大學獲得計算機科學博士學位勿负。1995年,他創(chuàng)辦了Viaweb劳曹,幫助個人用戶在網(wǎng)上開店奴愉,這是世界上第一個互聯(lián)網(wǎng)應用程序琅摩。1998年夏天,Yahoo!公司收購了Viaweb锭硼,收購價約為5000萬美元房资。
此后,他架起了個人網(wǎng)站paulgraham.com檀头,在上面撰寫了許許多多關于軟件和創(chuàng)業(yè)的文章轰异,以深刻的見解和清晰的表達而著稱,迅速引起了轟動暑始。2005年搭独,他身體力行,創(chuàng)建了風險投資公司Y Combinator蒋荚,將自己的理論轉(zhuǎn)化為實踐戳稽,目前已經(jīng)資助了80多家創(chuàng)業(yè)公司。現(xiàn)在期升,他是公認的互聯(lián)網(wǎng)創(chuàng)業(yè)權威惊奇。
主要內(nèi)容
1)為什么書呆子不受歡迎:他們的興趣在別的地方,且偏離主流播赁。
2)黑客與畫家:黑客也是創(chuàng)造者颂郎,與畫家、建筑師容为、作家一樣乓序。
3)不能說的話:如果你的想法是社會無法容忍的,你應該怎么做坎背。
4)良好的壞習慣:黑客成功的秘訣是打破常規(guī)替劈。
5)另一條路:互聯(lián)網(wǎng)軟件是PC誕生后的最大機會
6)如何創(chuàng)造財富:致富最好的方法就是為社會創(chuàng)造財富。創(chuàng)造財富最好的辦法就是創(chuàng)業(yè)得滤。
7)關注貧富分化:收入的差距并沒有想象的那么可怕陨献。
8)防止垃圾郵件的方法:本文改變了一些人認為無法有效的過濾垃圾郵件的想法。
9)設計者的品味:好的設計的特征懂更。
10)編程語言解析:編程語言流行的原因眨业。
11)一百年后的編程語言:具有長久生命力的編程語言的特征。
12)拒絕平庸:可以用任何想用的語言編程
13)書呆子的復仇:在高科技行業(yè)不存在“業(yè)內(nèi)最佳實踐”沮协。
14)夢寐以求的編程語言:一種杰出得的編程語言是允許黑客自由使用的語言
15)設計與研究:設計必須是“好”的龄捡,研究必須是“新的”。
精編書摘
1 為什么書呆子不受歡迎
雖然“書呆子”飽嘗不受歡迎之苦慷暂,但是為了解除痛苦而讓他們放棄“聰明”聘殖,我想大多數(shù)人是不會愿意的。對他們來說,平庸的智力是不可忍受的就斤。
沒有什么比一個共同的敵人更能使得人們團結(jié)起來了悍募。這就好比一個政客,他想讓選民忘記糟糕的國內(nèi)局勢洋机,方法就是為國家找出一個敵人坠宴,哪怕敵人并不真的存在,他也可以創(chuàng)造一個出來绷旗。
真實世界的關鍵并非在于它是由成年人組成的喜鼓,而在于它的龐大規(guī)模使得你做的每件事都能產(chǎn)生真正意義上的效果。
真實世界的特點是衔肢,它極其龐大庄岖。如果總體足夠大,即使是人數(shù)最少的少數(shù)派角骤,只要聚集在一起隅忿,也能產(chǎn)生可觀的力量。
幾乎在任何團體中都存在等級關系邦尊。成年人在真實世界中形成的團體背桐,一般來說,都存在某個共同目標蝉揍,團體的領導者往往由最善于實現(xiàn)目標的人擔任链峭。學校就不一樣,大多數(shù)情況下又沾,學生內(nèi)部形成的團體沒有一個共同目標弊仪。但是等級關系卻不會缺席,所以孩子們的等級是憑空創(chuàng)造出來的杖刷。
2 黑客與畫家
黑客與畫家的共同之處励饵,在于他們都是創(chuàng)作者。
計算機科學就像一個大雜燴滑燃,由于某些歷史意外曲横,很多不相干的領域被強行拼裝在一起。所以在“計算機科學”的名義下不瓶,數(shù)學家、物理學家灾杰、建筑師都不得不待在同一個系里蚊丐。
建筑學和工程學之間的區(qū)別并不是很嚴格的,但就是存在區(qū)別艳吠。這表現(xiàn)在“做什么”和“怎么做”麦备。
創(chuàng)造優(yōu)美事物的方式不是從頭做起,而是在現(xiàn)有成果的基礎上做一些小小的調(diào)整,或者將已有的觀點用比較新的方式組合起來凛篙。這種類型的工作很難用研究性的論文表達黍匾。
我發(fā)現(xiàn),黑客新想法的最佳來源呛梆,并非那些名字里有“計算機”三個字的理論領域锐涯,而是來自于其他創(chuàng)作領域。與其到“計算理論”領域?qū)ふ覄?chuàng)意填物,你還不如在繪畫中尋找創(chuàng)意纹腌。
真正競爭軟件設計的戰(zhàn)場是新興領域的市場,這里還沒有人建立過防御工事滞磺。只有你能做出大膽的設計升薯,由一個人或一批人同時負責設計和實現(xiàn)產(chǎn)品,你就能在這里戰(zhàn)勝大公司击困。
畫家學習繪畫的方法主要是動手去畫涎劈,黑客學習編程的方法也理應如此。
如果你預先承認規(guī)格設計是不完美的阅茶,在編程的時候蛛枚,就可以根據(jù)需要當場修改規(guī)格,最終會有一個更好的結(jié)果
正確的合作方法是將項目分割成嚴格定義的模塊目派,每一個模塊由一個人明確負責坤候。模塊與模塊之間的借口經(jīng)過精心設計,如果可能的話企蹭,最好把文檔說明寫得像編程語言規(guī)范那樣清晰白筹。
事實表明,從他人的角度思考問題正是成功的奧秘所在谅摄⊥胶樱“換位思考”并不就意味著你要做自我犧牲。實際上送漠,這是完全不同的兩回事顽照。了解別人對于事情的看法,并不代表你為他的利益服務闽寡。
3 不能說的話
當你發(fā)現(xiàn)某些言論很可疑時代兵,你可以這樣想,那些話聽上去真是大逆不道(或者其他類似的形容詞)爷狈,但是有沒有可能是真的植影?這就是找出“不能說的話”的第一種方法:判斷言論的真?zhèn)巍?/p>
關注“異端邪說”,是找出“不能說的話”的第二種方法涎永。
我們可以去找那些過去被認為理所當然思币,如今卻被認為不可思議的事情鹿响,這是用來找出我們自己正在犯下的錯誤的第三種方法。
訓練自己去想那些不能想的事情谷饿,你獲得的好處會超過所得到的想法本身惶我。
實際上,人們腦子里有一根界線博投,早就認準了什么是對的绸贡,什么是錯的。在他們看來贬堵,所有觀點都是可以討論的恃轩,除了那些錯誤的觀點。
你不要讓自己成為人群的一分子黎做,而要盡可能的遠離人群叉跛,觀察正在發(fā)生的事情,特別注意那些被壓制的思想觀點蒸殿。
如果自己就是潮水的一部分筷厘,怎么能看清潮流的方向呢?你只能永遠保持質(zhì)疑宏所。問自己酥艳,什么話是我不能說的?為什么爬骤?
4 良好的壞習慣
對于適當?shù)牟环芙坛涫3謱捜莶粫刑蟮膲奶帲炊苡欣诿绹膰覂?yōu)勢霞玄,它使得美國不僅能吸引聰明人骤铃,還能吸引那些很自負的人。
一個人們擁有言論自由和行動自由的社會坷剧,往往最有可能采納最優(yōu)方案惰爬,而不是采納最有權勢的人提出的方案。專制國家會變成腐敗國家惫企,腐敗國家會變成貧窮國家撕瞧,貧窮國家會變成弱小國家。
有一種東西叫做美國精神狞尔,如果你想知道哪些事情可以滋養(yǎng)或者削弱這種精神丛版,不妨去問問黑客,他們是最敏感的焦點人群偏序,因為在他們身上硼婿,比我知道的其他人群,更能體現(xiàn)出這種精神禽车。
5 另一條路
使用互聯(lián)網(wǎng)軟件寇漫,除了軟件本身,大多數(shù)用戶不需要知道別的事情殉摔。
所有那些亂七八糟州胳、經(jīng)常變動的東西,都放在服務器端逸月,由精通此道的專業(yè)人員維護栓撞。
我覺得,大多數(shù)Windows用戶使用桌面軟件的時候都感到緊張碗硬,會有相當大的心理壓力瓤湘,釋放這種壓力,對你的產(chǎn)品將是一種巨大的推動恩尾。
隨著軟件規(guī)模的增大弛说,開發(fā)成本指數(shù)式上升。這可能是因為修正舊bug的原因翰意。如果bug都能被快速發(fā)現(xiàn)木人,成本的上升形態(tài)就能基本保持線性。
實現(xiàn)某個構(gòu)思冀偶,會帶來更多的構(gòu)思醒第。將一個構(gòu)思束之高閣,不僅意味著延遲它的實現(xiàn)进鸠,還意味著延遲所有在實現(xiàn)過程中激發(fā)的構(gòu)思稠曼。
從制造簡潔的產(chǎn)品開始著手,首先要保證你自己愿意使用客年。然后霞幅,迅速做出1.0版,并且不斷加以改進搀罢,整個過程中密切傾聽用戶的反饋蝗岖。
6 如何創(chuàng)造財富
創(chuàng)業(yè)公司不是變魔術。它們無法改變創(chuàng)造財富的法則榔至,它們只是代表了財富創(chuàng)造曲線遠端上的一點抵赢。
創(chuàng)造有價值的東西就是創(chuàng)造財富。財富與金錢并不是同義詞唧取。
交換媒介的優(yōu)點是铅鲤,它使得交易可以進行下去。缺點是枫弟,它往往模糊了交易的實質(zhì)邢享。人們覺得做生意就是為了掙錢,但是金錢其實只是一種中介淡诗,讓大家可以更方便的獲得自己想要的東西骇塘。
公司不過是一群人在一起工作伊履,共同做出某種人們需要的東西。真正重要的是做出人們需要的東西款违,而不是加入某個公司唐瀑。
要致富,你需要兩樣東西:可測量性和可放大性插爹。你的職位產(chǎn)生的業(yè)績哄辣,應該是可測量的;此外赠尾,你還必須有可放大性力穗,也就是說你做出的決定能夠產(chǎn)生巨大的效應。
在不考慮其他因素的情況下气嫁,一個非常能干的人待在大公司里可能對他本人是一件很糟糕的事情当窗,因為他的表現(xiàn)被其他不能干的人拖累了。
創(chuàng)業(yè)公司為每個人提供了一條途徑杉编,同時獲得可測量性和可放大性超全。
7 關注貧富分化
我認為有三個原因使得我們對賺錢另眼相看。第一邓馒,我們從小被誤導的對財富的看法嘶朱;第二,歷史上積累財富的方式大多名聲不好光酣;第三疏遏,擔心收入差距拉大將對社會產(chǎn)生不利影響。
中產(chǎn)階級的出現(xiàn)使得財富總量不再是一個固定不變的值救军,財富的分配也不再是一種零和游戲财异。
現(xiàn)代社會的收入差距擴大是一種健康的信號。技術使得生產(chǎn)差異加速擴大唱遭,如果這種擴大沒有反映在收入上面戳寸,只有三種可能的解釋:1、技術革新停頓了拷泽。2疫鹊、那些創(chuàng)造大部分財富的人停止工作了。3司致、創(chuàng)造財富的人沒有獲得報酬拆吆。
一個社會需要有富人,這主要不是因為你需要富人的支出創(chuàng)造就業(yè)機會脂矫,而是因為他們在致富過程中做出的事情枣耀。
9 設計者的品味
好設計是簡單的設計。當你被迫把事情做得簡單時庭再,你就被迫直接面對真正的問題捞奕。
好設計是永不過時的設計牺堰。我們很難猜測未來是什么樣子,但是可以肯定颅围,未來的人們不會在乎今天流行的風潮萌焰,這一點與上幾代人是相同的。
好設計是解決主要問題的設計谷浅。軟件的難題通常可以被改成等價的較易解決的形式奶卓。
好設計是啟發(fā)性的設計一疯。在軟件業(yè)中,這條原則意味著夺姑,你應該為用戶提供一些基本模塊墩邀,使得他們可以隨心所欲的自由組合,就像玩樂高積木一樣盏浙。
好設計通常是有點趣味性的設計眉睹。幽默一定程度上反映了力量。
好設計是艱苦的設計废膘。解決難題的痛苦對設計師有好處竹海,但是對付挑剔的顧客或者對付質(zhì)量低劣的建材的痛苦就是另外一回事了。
好設計是看似容易的設計丐黄。
好設計是對稱的設計斋配。對稱的危險在于它可以用來取代思考,在大量使用重復的時候這種危險性更大灌闺。
好設計是模仿大自然的設計艰争。
好設計是一種再設計。犯錯誤是很正常的事情桂对。你不要把犯錯誤看成災難甩卓,要勇于承認、勇于改正蕉斜。
如果你想做出偉大的新成果逾柿,那就不能對常識與真理不相吻合之處視而不見,反而應該特別注意才對蛛勉。
10 編程語言解析
編程語言可以變得很抽象鹿寻,完全脫離硬件,但也有可能走錯了方向诽凌。
11一百年后的編程語言
那些內(nèi)核最小毡熏、最干凈的編程語言才會存在于進化的主干上。一種語言的內(nèi)核設計的越小侣诵、越干凈痢法,它的生命力就越頑強狱窘。
我的兩個觀點是,(1)一百年后的編程語言在理論上今天就能設計出來财搁;(2)如果今天真能設計出這樣一種語言蘸炸,很可能現(xiàn)在就是和編程,并且產(chǎn)生更好的結(jié)果尖奔。
12 拒絕平庸
選擇使用哪一種技術的時候搭儒,你不能考慮別人的做法,只能考慮什么樣的技術能最好的完成工作提茁。
13 書呆子的復仇
編程語言本質(zhì)上不是一種技術淹禾,而是數(shù)學。
使用不常見語言會出現(xiàn)的問題:你的程序可能無法很好的與使用其他語言寫的程序協(xié)同工作茴扁;你可能找不到很多函數(shù)庫铃岔;你可能不容易雇到程序員。
編程語言的所謂“業(yè)界最佳實踐”峭火,實際上不會讓你變成最佳毁习,只會讓你變得很平常。
14 夢寐以求的編程語言
流行本身又會使得這種優(yōu)秀的語言更加優(yōu)秀卖丸,進一步拉大它與平庸語言之間的好壞差異购岗。
為了寫出優(yōu)秀軟件泌参,你必須同時具備兩種互相沖突的理念。一方面,你要像初生牛犢一樣僻弹,對自己的能力信心萬丈宠哄;一方面蕴侧,你又要像歷經(jīng)滄桑的老人一樣灰署,對自己的能力抱著懷疑的態(tài)度。
夢寐以求的語言干凈簡練为鳄,具有最高層次的抽象和互動性裳仆,而且很容易裝備,可以只用很少的代碼就解決常見的問題孤钦。
15 設計與研究
設計追求“好”歧斟,研究追求“新”。
評價一種語言的優(yōu)劣不能簡單地看最后的程序是否表達得很漂亮偏形,而要看程序從無到有的那條完成路徑是否很漂亮静袖。
設計意味著做出符合人類特點和需要的產(chǎn)品。但是俊扭,“人類”不僅包括用戶队橙,還包括設計師,所以設計工作本身也必須符合設計師的特點和需要。