職業碼農的六年回首——《黑客與畫家》讀後感

袁野發表於2012-09-27

  先搞了一篇《黑客與畫家》的文摘,然後這裡是讀後感,說是”讀後“感,其實很多內容都是我一直在思考的內容,只不過借這個機會一起談一下。

  書的前部分用了不少的篇幅來為“書呆子”正名,不管是別人說還是我自己都認為我就是個“書呆子”,做事一根筋,講理不講情;喜歡脫離人群之外。其實根據我自己的體會,“書呆子”心理通常會有一種優越感,體現在於“你不懂我”的心理暗示。這麼說來,通過語言文字為書呆子正名反而是沒有必要的。就好比對於geek程式設計師而言,評價的標準只有3個:執行時間、佔用記憶體、程式碼長度,這就夠了。

  當你做一件別人不認可的事情的時候,比較大的可能性是你錯了,但也有一定可能性是大家都錯了,而你是對的。黑客的價值在於他們敢於承擔可能的批判,而去做一些常人眼裡看來“叛逆”的事情,這當中蘊涵了改變世界的契機。07年暑假的時候我曾經帶頭鬧事過一回,與現在相比似乎當時更有黑客精神,回頭想想覺得當時很幼稚,這也許是變成熟的訊號,同時也可能是變平庸的訊號。

  在關於“財富”的篇章中,很明顯作者是在鼓勵優秀的書呆子去創業。書呆子通常充滿改變世界的能量,但苦於社交上的不足,難以釋放能量。以財富為吸引,也許是引爆書呆子能量的一種好方法。不過我個人覺得這一部分寫得太有成功學色彩了,而我個人很不喜歡成功學。

  但不得不說這些段落還是引發了我很多共鳴,在我放棄保研的時候,最大的動力就在於不安心於過“安穩但無激情”的生活,這也是和父母分歧最大的地方,父母在乎“安穩”,並不在乎“激情”,但我很在乎,最終我利用他們對我的寵溺打勝了這一仗:P 儘管最終沒考上清華,但這樣的精神是我非常珍惜的,打破現有的格局,扔掉到手或即將到手的東西,去追求更大的價值,這就是創業精神。

  書中有一段很有意思,講述財富是由人創造出來的,其實我一直以來非常贊同這一點。有一年回家的時候,家鄉風行十字繡,老媽也不能免俗,她告訴我繡完成以後通常可以賣不少錢。當時就有這種理解,手工業是一種典型的放大過程,通過勞動力和創造力對簡單的原材料進行加工,成品的價值會被放大很多倍,這讓我很相信財富是可以被創造出來的。

  書中說“目前還存在的最大的手工藝人群體就是程式設計師”,此言不虛,對於程式設計師而言,生產資料的成本非常之低——電腦一臺:在這個資訊時代,電腦已經是必需品;開發工具:開源軟體給我們充分的選擇,購買商業開發工具的價格也不會像購買一座機床那麼誇張;一杯咖啡,零食若干:僅僅是為了讓思考的時候手不閒著。如此低廉的成本,僅僅通過在鍵盤上敲程式碼,就可以創造出活生生的程式,甚至創造出巨大的價值,這樣的現象真是匪夷所思。

  關於“設計”的篇章,讓我找到了很多共鳴。大一的時候,我在學校幫老師做網頁設計,當時我做的還不錯,但一到了要我做海報的時候,我就不行了。我喜歡簡約的設計,可這樣的設計放在海報上的話,如果沒有非常高的水平,結果只能造成海報看起來像大字報一樣,沒有視覺衝擊力。設計有共識,但不同領域的設計,也有獨特的哲學。

  前幾天看了一個紀錄片,講述大自然中各種神奇的結構,比如人類、爬行動物、鳥類、昆蟲等等的結構,以及各種植物中的神奇結構,讓我深深體會到完美的系統並不是靠設計所能得來的,而是進化。

  “設計”應該是一個動詞、一種手段。 具體的說,是一種幫助進化的手段。在純粹的自然界中,進化更多的依賴於自然選擇。放到現實社會裡,並不合適,因為自然選擇需要太長的時間。這時候設計可以成為一種輔助手段,通過設計人為的進行選擇和改造,加速進化的過程。如果設計本身取代了進化,那就是本末倒置了。

  進化是迭代的過程,每一次做完一件事情,肯定是會留下遺憾的。對我自己而言,OJ如此、論壇如此、畢業論文如此、iOS軟體搜尋亦然。 每一次留下的遺憾其實就是下一輪迭代的動力源泉——你想把事情做的更好、想彌補過去的遺憾,於是有了新的思路,可以對它進行改造。

  軟體開發中講究“Refactory to Patterns” ,我對這句話的理解是:模式並不是靠設計而得來的,是靠重構而得來的。“重構”在這裡就是一種“進化”。在過去的開發經歷中,我常常在開發初期就推翻一開始的構思,重新設計;後來越發走向兩個極端——或是貪大求全、或是草草了事。不論是來自於排期的壓力還是懶惰,這種現象都警告著我geek精神的流失。

  回到“設計”,設計應該會取捨,現在業界流行稱為“做減法”。我的理解在於弄清楚什麼東西主要,什麼東西次要。書中說:“當你攀登高山時,必須扔掉一切不必要的裝備,在困難地點或預算不足的條件下,建築師就只能做出很簡練的設計。當解決難題成為壓倒一切的任務時,那些流行樣式與華麗服飾就被拋到一邊去了。 ”

  音樂圈子裡有這麼一句話:“鳥槍換炮日,羅郎才盡時。”這句話本意是說羅大佑在拿著一把吉他的時候寫出了很多好歌,而工作室換了很好的裝置以後,條件好了,反而沒有出彩的作品了。

  在和licstar開發OJ的時候,從0開始,沒有太多參考的東西(那時候國內的OJ很少),也沒有退路。在這樣的條件下反而把事情做出來了,而後來想對OJ進行重構的時候則動力不足,因為有選擇、有退路了。

  突然覺得如果事關人命的話,那會不會真的寫出沒Bug的程式?當然世界上沒有不犯錯的人,但我們應該總以最高的標準來要求,並且要拋棄掉一切可有可無的東西,從最本源的地方入手。

  文章大概就到這裡了,猛然發現已經2000字。回首這6年,從不會程式設計到geek程式設計師;從興趣驅動到職業碼農;從電腦玩家到開發者,轉變不可謂不大。

  這些轉變中,有變好了,也有變差了。失去的東西中有很多是很珍貴的,我一定要尋找回來。

——本文摘自Jim Liu's Blog《我這6年來的成長與倒退,暨《黑客與畫家》讀後感》

相關文章