讀《黑客與畫家》

2021-07-15 01:31:05 字數 3482 閱讀 4529

作者paul graham算是個奇人,主要倒不是他作為矽谷創業教父的身份,畢竟,當乙個人成功了,之後再做些成功事兒也相對容易很多,關鍵這人上學時對本專業的研究很不順利(當時研究人工智慧),然後就跑去學畫畫了,還夢想著成為畫家。結果折騰了一年,錢花完了,沒辦法,又得回來寫程式賺麵包。之後就是屌絲逆襲之路了,創個公司被雅虎收購,套現一大筆錢,從此走上了指導別人創業之路。

書中寫的東西也蠻有意思,各個篇章不太搭,不過都是針對「黑客」的。有的告訴小黑客(書呆子)為什麼在上初中的階段會受欺負,有的教黑客應該怎樣說話,估計都是親身經歷,還有就是大篇章的鼓吹lisp,搞得我都有點想去學學看了。

paul是個黑客,同時也算個不成功的畫家,這哥們將兩者做出的比較還是有點道理的。

第一,他們都是創作者。雖說是理工科,但黑客所做的事情,與計算機系的教授有著本質的不同,教授們需要的是研究成果,將計算機弄得誰也看不懂,弄得越來越像數學,而黑客卻跟畫家一樣,只是想寫出有趣的軟體,而計算機只是他們實現想法的工具,就好像畫家手中的畫筆一樣。

第二,做事方式的對比。其實這點跟我以前讀過的一些計算機方**的書是有點分歧的,讓我也是大毀三觀。之前讀過的書都強調軟體工程的重要性,強調要做好需求分析、概要設計、詳細設計等等,編寫**只是工作中很小的個比重,這樣可以減少後期的錯誤,更加節約時間。而作者卻認為「把整個程式想清楚的時間點應該是在編寫**的同時,而不是在編寫**之前」。作者很推崇這種修修補補的方式,就好像畫家作畫一樣,即使歷史上的名畫,放到現代的儀器下分析,也發現是不斷塗改的結果(作者當然說的是西方的油畫,中國的水墨畫就要寫意的多了)。究竟哪種方法是正確的,我覺得也得分場合。如果要弄個衛星上天的專案,還是得嚴格按照軟體工程的做法來,而像作者那樣,三個人創業,要的就是速度,當然還是速出功能,然後慢慢完善的方式才更有競爭力。

第三,對待新專案的觀點。畫家不可能一輩子只畫一幅畫,他們都是不停地嘗試畫新的作品。黑客也一樣,應該定期的從頭開始,而不要長年累月的在乙個專案上不停工作。

第四,心理週期。這個東西搞藝術的應該會很有感觸,有時興致來了,揮毫潑墨,晝夜不停地進行創作,但有時也會陷入沒有靈感的窘境。其實黑客也是一樣,當有乙個令人興奮的專案時,他會願意一天工作16個小時,但過了一段時間,有會覺得百無聊賴,對所有事情都提不起興趣。善用心裡週期是做出成功作品的關鍵。

第五,關於合作。小幅的作品當然大多是乙個人完成的,但很多大型的作品卻需要分工合作,比如教堂的穹頂,大型的壁畫(很少有人像公尺開朗基羅一樣,乙個人畫完了羅馬西斯廷大教堂的天頂壁畫中的所有人物)。當多個畫家共同創作一幅作品時,每個人畫的部分都是不一樣的。通常來說,大師主要負責畫主要人物,助手們負責畫次要人物和背景。但是,你肯定找不到某個部分是兩個人一起畫的。合作開發軟體其實也是一樣,需要合作,但不能「合」得過頭 ,如果乙個**塊由三四個人共同開發,就沒有人真正「擁有」這塊**。最終,他會變得像乙個公用雜物間,沒人管理,又髒又亂,到處堆滿了冗餘**。正確的合作方式是將專案分割成嚴格定義的模組,每乙個模組由乙個人明確負責。模組與模組之間的介面經過精心設計,如果可能的話,最好把文件說明寫得像程式語言規範那樣清晰。相信幾個人共同畫乙個人物必然畫的口歪眼斜(即使幾個人都是大師),同樣的,幾個人共同寫一段**也必然驢唇不對馬嘴。

軟體其實是藝術品,擁有美感的軟體才是成功的軟體。

首先說明,如果按照作者的觀點,「財富分配」這個詞本身就是個偽命題,因為社會財富不是一張大小固定的餅,你多分一些我就得少分一些,財富是被創造出來的,那麼為什麼現在仍然有很多人多少有一些仇富心理呢,作者將其總結出三個原因:第一,我們從小被誤導了對財富的看法;第二,歷史上積累財富的方式大多名聲不好;第三,擔心收入差距拉大將對社會產生不利影響。第三點其實是很籠統的一種說法了,前兩點倒是蠻有意思。

作者將我們小時候理解的並一直影響我們的財富觀稱為「財富的老爹模式」,因為我們小時候錢是從父母的口袋裡得到的,讓我們以為財富是某個權威負責分配的,而沒有意識到財富是創造出來的。其實財富與金錢是兩個概念,現代社會中,我們已經很少在為自己創造財富了,我們都是為別人創造財富,然後換的金錢,再用金錢換取我們需要的財富,金錢只是財富的乙個流通手段,而財富的總和不是固定不變的,當我們能夠創造更多財富的時候,往往也能換取更多用於流通的金錢。這裡的財富有時不僅僅指的是看得見摸得著的東西,任何別人需要的服務也都可以成為財富,比如快遞員送貨,相聲演員的演出,其實都是在創造財富。

第二個讓金錢名聲不佳的原因是,在人類歷史的絕大部分時間裡,人類積累財富的方式都是偷竊(作者使用的「偷竊」一詞實際上包含了任何強制手段獲取他人財富的方式,包括收稅、戰爭掠奪、強迫農奴生產等),這也難怪讓人產生仇富心態,再加上歷史上**、戲劇等藝術作品對商人的醜化,使得仇富心態在人們心中更加根深蒂固。當然,現如今仍然有****等「偷竊」式的財富聚集方式,但已經不是主流方式了,如今的社會提供了大量的創造財富的方式。

至於如何工作才能得到更多的財富,作者提出了兩點原則,就是可測量性和可放大性。

如何獲取可測量性和可放大性,作者的說法是:小團體=可測量性,高科技=可放大性。

的確,在乙個大的團隊中,乙個人的努力很容易就被淹沒了,於是大家也就都沒有了出力的慾望。而小團體因為人少,每個人都不得不拿出絕對的努力,然後這份努力卻也是立竿見影的。在古羅馬,風帆還沒有普及的時代,巨型戰艦是靠著上千名划船手共同划槳來推動的,但是速度並不快,因為每個人都看不到自己努不努力划船有什麼不同,但如果在這上千人中選10個人去划龍舟,保證划得飛快,因為首先你的努力是可以看到的,其次,如果你不努力划船,其他的夥伴要用什麼眼光看你,這種胡蘿蔔與大棒並存的狀態,也就促使了小公司往往效率比大公司要高。

至於說高科技帶來了可放大性,這個毋庸置疑。在餐館或理髮館,每次只能為乙個顧客提供服務,但是如果你解決了乙個熱門的技術難題,別人都會使用你的解決方案,這就是可放大性。而這種可放大性又恰恰是小團體可以與大公司有的一拼的地方,尤其在生物科技和軟體類領域,因為這些領域與資金關係不大,但槓桿作用卻非常明顯。

所以,程式猿,知道該怎麼做了嗎。

網上永遠充斥著程式語言優劣的套路,甚至形成了一條鄙視鏈,然後還有諸如「php是最好的語言」這樣的梗。當然,基本上誰也不會把這種鄙視鏈當真,主流的聲音基本上是,程式語言屬於身外之物,實現手段,思想、演算法才是核心。不過作者對此又持有不同觀點,認為一門好的語言可能決定了乙個專案甚至乙個公司的成敗。作為lisp的鼓吹者,作者甚至認為他的viaweb的創業成功,就是因為使用了lisp,因為lisp簡潔、易於修改(以及一些我不能理解的有點,比如lisp的巨集),使得他們能夠最快速度的做出新功能,始終領先競爭對手。

其實我也覺得選擇好的程式語言並非那麼無關緊要,尤其是最近學了python後,更是覺得c++實在是太複雜了,用個三五年時間還不一定能夠專精,的確有點不值。當然,別人會有很多理由告訴你用c/c++的好處,比如這是嵌入式的首選呀,比如效率高呀之類,第乙個理由其實也是我開始跳出嵌入式的理由,編譯、燒寫、除錯、修改、再編譯、再燒寫……總覺得有點浪費生命。後乙個理由其實是不成立的,首先,效率其實不應該是軟體的首要考慮的問題,首要考慮的問題應該是實現功能,過早優化是萬惡之源;其次,也不是說使用了c/c++就獲得了高效率,它僅僅是為最大限度的提高效率提供了可能,而不是決定了效率,彙編效率高吧,機器碼效率高吧,但我絕對有信心用機器碼寫出效率比python還低的程式。所有,關於執行效率,更好的方法其實是有一種效率的檢測機制,找到執行的瓶頸,讓後再針對性的優化。

讀《黑客與畫家》

1964年生,中產階級家庭,聽上去就像在美國。父親是設計核反應堆的物理學家,母親在家照他和他的妹妹。青少年時開始程式設計。還喜歡很多與計算機無關的東西。進入大學時主修哲學,又轉修計算機,人工智慧。讀到博士時,又旁聽藝術系。畢業後學習繪畫。1992年,在美國做程式設計師。在繪畫與程式設計師中最終選擇了...

讀《黑客與畫家》

主要介紹了黑客是怎樣成長的以及它們看待世界的方式。首先是為黑客正名,黑客最初的意思是熱愛技術的高手。用書呆子不受歡迎的現象揭示了社會等級,群體,團體中人與人之間的關係。表達了一些自己的思考和認識 在任何社會等級中,沒有自信的人通過虐待他們眼中的下等人來顯示自己的身份,so,在美國社會中,底層白人是對...

讀《黑客與畫家》總結

個人部落格 mypython.me 讀完整本之後,瞬間對paul graham的景仰有如滔滔江水連綿不絕。書名很有趣,似是一本技術書,確切地說,他是一本解讀黑客 程式設計師或創作者 的書。這本書前半部分主要講了黑客是如何成長的,以及他們看待世界的一些觀點,中間部分講的則是黑客怎樣做出自己的成果,這些...