1. 程式人生 > >《黑客與畫家》 讀書筆記(二)

《黑客與畫家》 讀書筆記(二)

           最近很忙,每天閱讀的時間很少,看書進度很慢,想看的書又很多,東看看西看看,一看就會有思考,或是共鳴,或是反省,或是啟迪,結果看書進度更慢了。轉眼要到9月份了,小朋友都要開學了。今年答應了小朋友,陪他出去旅遊的,當做是一起去參加《爸爸去哪兒》第四季了。最後選擇了去大連。然後在飛機上匆匆讀了三章(良好的習慣 /另一條路 / 如何創造財富),依舊是迫不及待地想寫讀書筆記,因為共鳴太多,這種共鳴不僅是數量上的多,而且契合度非常高。高到什麼程度?高到,我只想把書裡的原話摘錄下來:(注:當然這種方式也讓不注重形式,在形式上喜歡偷懶的我感到特別舒服。就像工作中,我喜歡把自己寫的常用命令和指令碼丟到一個文件裡,一段一段的,只是每段加上個tag。要用的時候直接根據tag搜尋。當然前提是能記住那些自己打的tag,但我真的就莫名記住了。形式上的雜亂無章,有時候卻是高效的,比分門別類建幾級資料夾,再建一堆檔案,並儲存在不同資料夾下面,要方便和高效得多。可能是我以前很注重形式,反映在結果上卻是非常低效,於是開始走向另一個極端。當然,這樣做,更為重要的是,有時候靈感是一瞬間的,而且是巢狀的,一個靈感和想法,又產生出了子靈感和子想法,就像大熱天一手握著冰激凌,裡面還有葡萄乾,杏仁,一手準備把它包好裝好,放冰箱裡。等包好了,冰棍都化了,所以索性直接吃肚子裡)

(注:雖然讀到作者對於某些技術的表述,看法和發展趨勢,有些看歷史書的感覺,但這種侷限性的產生在技術日新月異的IT行業是不可避免的,畢竟作者是在談十幾年前的技術發展;那還是從C/S向 B/S轉變的年代。但作者的思考方法和思考角度,依然可以用到現在,去思考如今的發展趨勢。之所以用“注”來表述這段,是因為原書中很多背景,甚至很多很有價值的資訊也是以“注”的形式出現的,似乎外國作者的書都很喜歡這個套路)

4 良好的壞習慣

只有深入瞭解當前的技術,黑客才能構想下一代技術

黑客都是聰明人,很少出現所有人意見一致的情況。如果他們都說有問題,那麼也許真的就是什麼地方出了問題

黑客是不服從管教的,這就是他們的本性。這也是美國人的本性。矽谷出現在美國,而不是出現在法國、德國、英國、日本,這絕非偶然。後面那些國家的人們總是按部就班地行事。

5 另一條路

你想要用什麼語言,就能用什麼語言。不同的語言適合不同的任務,你應該根據不同場合,挑選最合適的工具

一般來說,這時候你確實是對軟體內部的情況一清二楚。當然,這不是說你把所有程式碼都裝在了腦子裡,而是說你閱讀程式碼的時候,非常自如流暢,不會像偵探破案那樣苦思冥想,而是像飛行員那樣,瞄一眼儀表板,就對飛行狀況胸有成竹。

我們的客戶支援是免費的,因為我們希望知道使用者的反應。如果他們使用時遇到困難,我們希望立刻知道,這樣就能再現錯誤、解決問題、釋出新版本。

客戶支援實際上就是質量監控,也是某種程度的市場營銷。除了記錄bug,客服人員還必須大概瞭解相關知識、回答與bug相關的一些問題、解釋令使用者迷惑不解的功能等。[註釋]有時,他們也扮演了使用者的代理人,我們會問他們哪個新功能是使用者更想要的,他們總是能做出正確的回答。

實現某個構思,會帶來更多的構思。所以,將一個構思束之高閣,不僅意味著延遲它的實現,還意味著延遲所有在實現過程中激發的構思。事實上,將一個構思束之高閣,甚至會限制新構思的產生。因為你看一眼堆放在一邊、還沒有實現的構思,就會想“我已經為下一個版本準備了很多新東西要實現了”,你就懶得再思考更多的新功能了。

大部分程式碼都有明確的負責人,而且只有一個。如果你負責某件事,那就真的是你負責。除了你以外,沒有人能批准(他們甚至都不知道)這部分程式碼的釋出。如果你出錯了,沒有人會提醒你,唯一的程式碼保護機制就是你的羞恥心,你不想被同事當成傻瓜,這就足矣

(注:這種觀點顯然和搞專案管理,特別是搞質量管理,搞流程管理的人的看法是大相徑庭的。但作者的看法主要針對的是小公司。事實上,在作者看來,大公司和小公司不是一個時代的物種,雖然小公司有些會成長為大公司,但那相當於基因突變了。而在我看來,專案管理,敏捷,這些都是方法論。學習方法論,本身不能和學習的內容劃等號。特別是從工學的角度看,學會學習的方法,是為了更好地學習,學到學習方法很重要,但絕不是目的本身,因為光知道方法論,是不足以完成工程的。因此在工科領域,方法論還是更傾向於務虛的。有意思的是,管路學上卻是恰恰相反的,學習的目的就是學習方法論,體現價值的也是在務虛的方面)

沒有盜版是一種“優勢”,但也是一個問題。一定數量的盜版對軟體公司是有好處的。不管你的軟體定價多少,有些使用者永遠都不會購買。如果這樣的使用者使用盜版,你並沒有任何損失。事實上,你反而賺到了,因為你的軟體現在多了一個使用者,市場影響力就更大了一些,而這個使用者可能畢業以後就會出錢購買你的軟體。

人們是先做出決定,然後再購買,好像這個行為分成兩個獨立的步驟

事實上,第二步對第一步有反作用,如果某樣商品購買起來很困難,人們就會改變主意,放棄購買。反過來也成立,如果某樣東西易於購買,你就會多買一點。自從有了亞馬遜網上書店,我買的新書比什麼時候都多

(注:事實上,多年以後,Walmart和亞馬遜都有做過讓登入和購物變得更加便捷的專案。例如:讓使用者可以先不註冊,下了訂單送貨時再註冊,再填寫必要資料;系統會記錄使用者的所有操作-包括未完成訂單的操作。資料分析部門會回放使用者的操作,分析未完成訂單的原因。記得,分析結果中排名前十的一項,就是因為一個註冊頁面太繁瑣了,於是才有了之前提及的那個專案)

如果你想把錢藏在安全的地方,請問你是選擇放在家中床墊下面,還是放在銀行?這個比喻對伺服器管理的方方面面都適用,不僅是安全性,還包括正常執行時間、頻寬、負載管理、備份等,都是我們佔優

(注:這些話,在這個大資料,雲端計算時代,聽上去有些像是雲端計算,雲端儲存的廣告詞)

創業公司的壓力很大,不幸的是,這一點在網際網路軟體業也發揮到了極致。許多軟體公司的開發者都有一段睡在桌子底下(或者類似經歷)的日子,尤其是在初創期。令人驚恐的是,對於網際網路軟體來說,這樣的日子沒有盡頭,什麼都不足以阻止這種事情成為常態

網際網路軟體的出現使得這兩種工作結合在一起,因此把它們各自不同的工作壓力也合在一起。程式設計師變成了系統管理員,但是工作職責的範圍卻沒有明確界定,使得工作壓力陡然增加。

許多農場用電籬笆防止奶牛逃跑,但是不少電籬笆其實並沒有通電。不過奶牛們已經吃過苦頭,顯然學會了不去碰電籬笆,這時不通電也能起到效果。“奶牛們,行動吧!”他寫道,“趁著統治者打鼾時,奪回你們的自由!

使用者總是對的,但是不同的使用者要求不一樣。低端的使用者要求簡化操作和清晰易懂,高階的使用者要求你增加新功能。軟體最大的好處就是讓一切變得簡單。但是,做到這一點的方法是正確設定預設值,而不是限制使用者的選擇

不要被微軟嚇到。你能做到它做不到的事情,正如它能做到你做不到的事情一樣。開發網際網路軟體不需要得到任何人的許可,沒有人能夠阻止你

6 如何創造財富

如果你想致富,應該怎麼做?我認為最好的辦法就是自己創業,或者加入創業公司。幾百年來,這一直是致富的可靠途徑。

創業公司往往與技術有關,所以“高技術創業公司”這個短語幾乎就是同義重複。創業公司其實就是解決了某個技術難題的小公司。許多人對此一無所知,但也發了財。這就好像你不用學習物理學也能成為一個出色的棒球投球手。但是,我認為理解這些原理,有助於你取得成功

從經濟學觀點看,你可以把創業想象成一個壓縮過程,你的所有工作年份被壓縮成了短短几年。你不再是低強度地工作四十年,而是以極限強度工作四年。在高技術領域,這種壓縮的回報尤其豐厚,工作效率越高,額外報酬就越高。

創業公司不是變魔術。它們無法改變創造財富的法則,它們只是代表了財富創造麴線遠端上的一點。這裡有一個守恆定律:如果你想賺100萬美元,就不得不忍受相當於100萬美元的痛苦。承受較大的壓力通常會為你帶來額外的報酬,但是你還是無法逃避基本的守恆定律。如果創業那麼輕鬆,那麼所有人就都去創業了。

任何公司的成功歷程中,運氣都是一個很大的隨機因素。那些你在報紙上讀到的成功人士固然很聰明,很努力,但是他們的運氣也不壞

目前還存在的最大的手工藝人群體就是程式設計師。

成立公司的目的不是獎勵那些全部精力投入工作的員工。你不能對老闆說,我打算十倍努力地工作,請你把我的薪水也增加十倍吧!因為公司已經假定你在全力工作了。但是,真正的問題實際上在於公司無法測量你的貢獻

在工業化國家,一個人至少在二十多歲之前,總是從屬於這樣或那樣的某個組織。經過這麼多年,你已經習慣了自己屬於這樣一群人,早上全部起床,都來到同樣幾幢建築物,開始做自己正常情況下沒興趣做的事情。這樣的組織變成了你身份標誌之一:姓名、年齡、頭銜、組織名稱

我們這個世界,你向下沉淪或者向上奮進都取決於你自己,不能把原因推給外界

在大公司中,你只要一般性地努力工作,就能得到意料之中的薪水。你不能明顯無能或懶惰,但是誰也沒覺得你會把全部精力投入工作。

成立公司的目的不是獎勵那些全部精力投入工作的員工。你不能對老闆說,我打算十倍努力地工作,請你把我的薪水也增加十倍吧!因為公司已經假定你在全力工作了。但是,真正的問題實際上在於公司無法測量你的貢獻

除了銷售員以外,還有一個職位,大公司可以僱到頂級人才,那就是高階的管理職位。原因也是一樣的,因為這個職位的貢獻能夠被測量,高階經理對整家公司的表現負責。普通員工的表現往往很難測量,所以也沒人要求他們做出突出表現

你想更努力地工作,但是你的工作與其他許多人的工作混雜在一起,這樣就產生了問題。在大公司中,個人的表現無法單獨測量,公司裡其他人會拖累你

要致富,你需要兩樣東西:可測量性和可放大性。你的職位產生的業績,應該是可測量的,否則你做得再多,也不會得到更多的報酬。此外,你還必須有可放大性,也就是說你做出的決定能夠產生巨大的效應。

我認為,任何一個通過自身努力而致富的個人,在他們身上應該都能同時發現可測量性和可放大性

大公司就像巨型的古羅馬戰艦,一千個划船手共同划槳,推動它前進。但是,兩個因素使得它快不起來。一個因素是,每個划船手看不到自己更努力划槳有何不同;另一個因素是,一千人的團隊使得任何個人的努力都被大大地平均化了。

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

創業公司為每個人提供了一條途徑,同時獲得可測量性和可放大性

什麼是技術?技術就是某種手段,就是我們做事的方式。如果你發現了一種做事的新方式,它的經濟價值就取決於有多少人使用這種新方式。技術就是釣魚的魚竿,而不是那條魚

(注:所以工科相對於純理科而言還是務實的。很多理科產生價值的方式,與工科相比,其實和藝術學科更相似)

創業是有一些潛規則的,其中一條就是很多事情由不得你。比如,你無法決定到底付出多少。你只想更勤奮工作2到3倍,從而得到相應的回報。但是,真正創業以後,你的競爭對手決定了你到底要有多辛苦,而他們做出的決定都是一樣的:你能吃多少苦,我們就能吃多少苦

(注:事實上,我覺得這是零和遊戲的共同特點。不單單創業如此,也適合其他一切零和博弈)

另一條潛規則是,創業的付出與回報雖然總體上是成比例的,但是在個體上是不成比例的。我在前面說過,對於個人來說,付出與回報之間存在一個很隨機的放大因子。你努力30倍,最後得到的回報在現實中並不是30倍,而是0到1000倍之間的一個隨機數。假定所有創業者都努力30倍,最後他們得到的總體平均回報是30倍,但中位數卻是0。大多數創業公司都以失敗告終,其中並不都是很爛的專案(網際網路泡沫時期曾經出現過專門介紹狗糧的入口網站)。一種很普遍的情況是,某個創業公司確實在開發一個很好的產品,但是開發時間太長了一點,結果資金都用完了,只好關門散夥。

創業公司不像能經受打擊的黑熊,也不像有盔甲保護的螃蟹,而是像蚊子一樣,不帶有任何防禦,就是為了達到一個目的而活著

創業公司如同蚊子,往往只有兩種結局,要麼贏得一切,要麼徹底消失。你通常不知道自己會是哪一個結局,只有等到最後一刻才會明瞭

創造財富不是致富的唯一方法。在人類的歷史長河中,它甚至不是最常見的方法。就在幾個世紀前,財富的主要來源還是礦石、奴隸、農奴、土地、牲畜,而快速獲得財富的方法只有繼承、婚姻、征服、沒收。所以,很自然地,財富的名聲不好。