讀《黑客與畫家》

推薦理由

本書是硅谷創業之父Paul Graham 的文集,主要介紹黑客即優秀程序員的愛好和動機,討論黑客成長、黑客對世界的貢獻以及編程語言和黑客工作方法等所有對計算機時代感興趣的人的一些話題。書中的內容不但有助于了解計算機編程的本質、互聯網行業的規則,還會幫助讀者了解我們這個時代,迫使讀者獨立思考。

作者簡介

保羅?格雷厄姆,《黑客與畫家》一書的作者,硅谷創業之父。1964年,出生于匹茲堡郊區的一個中產階級家庭。父親是設計核反應堆的物理學家,母親在家照看他和他的妹妹。青少年時代,格雷厄姆就開始編程。但是,他還喜歡許多與計算機無關的東西,這在編程高手之中是很少見的。
保羅?格雷厄姆在康奈爾大學讀完本科,然后在哈佛大學獲得計算機科學博士學位。1995年,他創辦了Viaweb,幫助個人用戶在網上開店,這是世界上第一個互聯網應用程序。1998年夏天,Yahoo!公司收購了Viaweb,收購價約為5000萬美元。
此后,他架起了個人網站paulgraham.com,在上面撰寫了許許多多關于軟件和創業的文章,以深刻的見解和清晰的表達而著稱,迅速引起了轟動。2005年,他身體力行,創建了風險投資公司Y Combinator,將自己的理論轉化為實踐,目前已經資助了80多家創業公司。現在,他是公認的互聯網創業權威。

主要內容

1)為什么書呆子不受歡迎:他們的興趣在別的地方,且偏離主流。
2)黑客與畫家:黑客也是創造者,與畫家、建筑師、作家一樣。
3)不能說的話:如果你的想法是社會無法容忍的,你應該怎么做。
4)良好的壞習慣:黑客成功的秘訣是打破常規。
5)另一條路:互聯網軟件是PC誕生后的最大機會
6)如何創造財富:致富最好的方法就是為社會創造財富。創造財富最好的辦法就是創業。
7)關注貧富分化:收入的差距并沒有想象的那么可怕。
8)防止垃圾郵件的方法:本文改變了一些人認為無法有效的過濾垃圾郵件的想法。
9)設計者的品味:好的設計的特征。
10)編程語言解析:編程語言流行的原因。
11)一百年后的編程語言:具有長久生命力的編程語言的特征。
12)拒絕平庸:可以用任何想用的語言編程
13)書呆子的復仇:在高科技行業不存在“業內最佳實踐”。
14)夢寐以求的編程語言:一種杰出得的編程語言是允許黑客自由使用的語言
15)設計與研究:設計必須是“好”的,研究必須是“新的”。

精編書摘

1 為什么書呆子不受歡迎
雖然“書呆子”飽嘗不受歡迎之苦,但是為了解除痛苦而讓他們放棄“聰明”,我想大多數人是不會愿意的。對他們來說,平庸的智力是不可忍受的。

沒有什么比一個共同的敵人更能使得人們團結起來了。這就好比一個政客,他想讓選民忘記糟糕的國內局勢,方法就是為國家找出一個敵人,哪怕敵人并不真的存在,他也可以創造一個出來。

真實世界的關鍵并非在于它是由成年人組成的,而在于它的龐大規模使得你做的每件事都能產生真正意義上的效果。

真實世界的特點是,它極其龐大。如果總體足夠大,即使是人數最少的少數派,只要聚集在一起,也能產生可觀的力量。

幾乎在任何團體中都存在等級關系。成年人在真實世界中形成的團體,一般來說,都存在某個共同目標,團體的領導者往往由最善于實現目標的人擔任。學校就不一樣,大多數情況下,學生內部形成的團體沒有一個共同目標。但是等級關系卻不會缺席,所以孩子們的等級是憑空創造出來的。
2 黑客與畫家
黑客與畫家的共同之處,在于他們都是創作者。

計算機科學就像一個大雜燴,由于某些歷史意外,很多不相干的領域被強行拼裝在一起。所以在“計算機科學”的名義下,數學家、物理學家、建筑師都不得不待在同一個系里。

建筑學和工程學之間的區別并不是很嚴格的,但就是存在區別。這表現在“做什么”和“怎么做”。

創造優美事物的方式不是從頭做起,而是在現有成果的基礎上做一些小小的調整,或者將已有的觀點用比較新的方式組合起來。這種類型的工作很難用研究性的論文表達。

我發現,黑客新想法的最佳來源,并非那些名字里有“計算機”三個字的理論領域,而是來自于其他創作領域。與其到“計算理論”領域尋找創意,你還不如在繪畫中尋找創意。

真正競爭軟件設計的戰場是新興領域的市場,這里還沒有人建立過防御工事。只有你能做出大膽的設計,由一個人或一批人同時負責設計和實現產品,你就能在這里戰勝大公司。

畫家學習繪畫的方法主要是動手去畫,黑客學習編程的方法也理應如此。

如果你預先承認規格設計是不完美的,在編程的時候,就可以根據需要當場修改規格,最終會有一個更好的結果

正確的合作方法是將項目分割成嚴格定義的模塊,每一個模塊由一個人明確負責。模塊與模塊之間的借口經過精心設計,如果可能的話,最好把文檔說明寫得像編程語言規范那樣清晰。

事實表明,從他人的角度思考問題正是成功的奧秘所在。“換位思考”并不就意味著你要做自我犧牲。實際上,這是完全不同的兩回事。了解別人對于事情的看法,并不代表你為他的利益服務。
3 不能說的話
當你發現某些言論很可疑時,你可以這樣想,那些話聽上去真是大逆不道(或者其他類似的形容詞),但是有沒有可能是真的?這就是找出“不能說的話”的第一種方法:判斷言論的真偽。

關注“異端邪說”,是找出“不能說的話”的第二種方法。

我們可以去找那些過去被認為理所當然,如今卻被認為不可思議的事情,這是用來找出我們自己正在犯下的錯誤的第三種方法。

訓練自己去想那些不能想的事情,你獲得的好處會超過所得到的想法本身。

實際上,人們腦子里有一根界線,早就認準了什么是對的,什么是錯的。在他們看來,所有觀點都是可以討論的,除了那些錯誤的觀點。

你不要讓自己成為人群的一分子,而要盡可能的遠離人群,觀察正在發生的事情,特別注意那些被壓制的思想觀點。

如果自己就是潮水的一部分,怎么能看清潮流的方向呢?你只能永遠保持質疑。問自己,什么話是我不能說的?為什么?
4 良好的壞習慣
對于適當的不服管教,保持寬容不會有太大的壞處,反而很有利于美國的國家優勢,它使得美國不僅能吸引聰明人,還能吸引那些很自負的人。

一個人們擁有言論自由和行動自由的社會,往往最有可能采納最優方案,而不是采納最有權勢的人提出的方案。專制國家會變成腐敗國家,腐敗國家會變成貧窮國家,貧窮國家會變成弱小國家。

有一種東西叫做美國精神,如果你想知道哪些事情可以滋養或者削弱這種精神,不妨去問問黑客,他們是最敏感的焦點人群,因為在他們身上,比我知道的其他人群,更能體現出這種精神。
5 另一條路
使用互聯網軟件,除了軟件本身,大多數用戶不需要知道別的事情。
所有那些亂七八糟、經常變動的東西,都放在服務器端,由精通此道的專業人員維護。

我覺得,大多數Windows用戶使用桌面軟件的時候都感到緊張,會有相當大的心理壓力,釋放這種壓力,對你的產品將是一種巨大的推動。

隨著軟件規模的增大,開發成本指數式上升。這可能是因為修正舊bug的原因。如果bug都能被快速發現,成本的上升形態就能基本保持線性。

實現某個構思,會帶來更多的構思。將一個構思束之高閣,不僅意味著延遲它的實現,還意味著延遲所有在實現過程中激發的構思。

從制造簡潔的產品開始著手,首先要保證你自己愿意使用。然后,迅速做出1.0版,并且不斷加以改進,整個過程中密切傾聽用戶的反饋。
6 如何創造財富
創業公司不是變魔術。它們無法改變創造財富的法則,它們只是代表了財富創造曲線遠端上的一點。

創造有價值的東西就是創造財富。財富與金錢并不是同義詞。

交換媒介的優點是,它使得交易可以進行下去。缺點是,它往往模糊了交易的實質。人們覺得做生意就是為了掙錢,但是金錢其實只是一種中介,讓大家可以更方便的獲得自己想要的東西。

公司不過是一群人在一起工作,共同做出某種人們需要的東西。真正重要的是做出人們需要的東西,而不是加入某個公司。

要致富,你需要兩樣東西:可測量性和可放大性。你的職位產生的業績,應該是可測量的;此外,你還必須有可放大性,也就是說你做出的決定能夠產生巨大的效應。

在不考慮其他因素的情況下,一個非常能干的人待在大公司里可能對他本人是一件很糟糕的事情,因為他的表現被其他不能干的人拖累了。

創業公司為每個人提供了一條途徑,同時獲得可測量性和可放大性。
7 關注貧富分化
我認為有三個原因使得我們對賺錢另眼相看。第一,我們從小被誤導的對財富的看法;第二,歷史上積累財富的方式大多名聲不好;第三,擔心收入差距拉大將對社會產生不利影響。

中產階級的出現使得財富總量不再是一個固定不變的值,財富的分配也不再是一種零和游戲。

現代社會的收入差距擴大是一種健康的信號。技術使得生產差異加速擴大,如果這種擴大沒有反映在收入上面,只有三種可能的解釋:1、技術革新停頓了。2、那些創造大部分財富的人停止工作了。3、創造財富的人沒有獲得報酬。

一個社會需要有富人,這主要不是因為你需要富人的支出創造就業機會,而是因為他們在致富過程中做出的事情。
9 設計者的品味
好設計是簡單的設計。當你被迫把事情做得簡單時,你就被迫直接面對真正的問題。

好設計是永不過時的設計。我們很難猜測未來是什么樣子,但是可以肯定,未來的人們不會在乎今天流行的風潮,這一點與上幾代人是相同的。

好設計是解決主要問題的設計。軟件的難題通常可以被改成等價的較易解決的形式。

好設計是啟發性的設計。在軟件業中,這條原則意味著,你應該為用戶提供一些基本模塊,使得他們可以隨心所欲的自由組合,就像玩樂高積木一樣。

好設計通常是有點趣味性的設計。幽默一定程度上反映了力量。

好設計是艱苦的設計。解決難題的痛苦對設計師有好處,但是對付挑剔的顧客或者對付質量低劣的建材的痛苦就是另外一回事了。

好設計是看似容易的設計。
好設計是對稱的設計。對稱的危險在于它可以用來取代思考,在大量使用重復的時候這種危險性更大。

好設計是模仿大自然的設計。
好設計是一種再設計。犯錯誤是很正常的事情。你不要把犯錯誤看成災難,要勇于承認、勇于改正。

如果你想做出偉大的新成果,那就不能對常識與真理不相吻合之處視而不見,反而應該特別注意才對。
10 編程語言解析
編程語言可以變得很抽象,完全脫離硬件,但也有可能走錯了方向。
11一百年后的編程語言
那些內核最小、最干凈的編程語言才會存在于進化的主干上。一種語言的內核設計的越小、越干凈,它的生命力就越頑強。

我的兩個觀點是,(1)一百年后的編程語言在理論上今天就能設計出來;(2)如果今天真能設計出這樣一種語言,很可能現在就是和編程,并且產生更好的結果。

12 拒絕平庸
選擇使用哪一種技術的時候,你不能考慮別人的做法,只能考慮什么樣的技術能最好的完成工作。

13 書呆子的復仇
編程語言本質上不是一種技術,而是數學。

使用不常見語言會出現的問題:你的程序可能無法很好的與使用其他語言寫的程序協同工作;你可能找不到很多函數庫;你可能不容易雇到程序員。

編程語言的所謂“業界最佳實踐”,實際上不會讓你變成最佳,只會讓你變得很平常。

14 夢寐以求的編程語言
流行本身又會使得這種優秀的語言更加優秀,進一步拉大它與平庸語言之間的好壞差異。

為了寫出優秀軟件,你必須同時具備兩種互相沖突的理念。一方面,你要像初生牛犢一樣,對自己的能力信心萬丈;一方面,你又要像歷經滄桑的老人一樣,對自己的能力抱著懷疑的態度。

夢寐以求的語言干凈簡練,具有最高層次的抽象和互動性,而且很容易裝備,可以只用很少的代碼就解決常見的問題。

15 設計與研究
設計追求“好”,研究追求“新”。

評價一種語言的優劣不能簡單地看最后的程序是否表達得很漂亮,而要看程序從無到有的那條完成路徑是否很漂亮。

設計意味著做出符合人類特點和需要的產品。但是,“人類”不僅包括用戶,還包括設計師,所以設計工作本身也必須符合設計師的特點和需要。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容