優秀的黑客應該是藝術家
本系列文章是《黑客與畫家》的讀書筆記。以下為第二章 黑客與畫家
讀後感。
君子善假於物
在設想一件事時,我總告誡自己:千萬、千萬不要重複造輪子!不要覺得自己特牛逼,不要覺得市場上現有的產品都是垃圾,無法承載自己的夢想,然後就要擼起袖子從頭到尾自己去幹一番。
如果你是這樣的完美主義者(其實就是一個傻叉),那麼註定什麼事也做不了。因為你會一直陷入主營業務之外的其他事情。比如你有一個偉大的想法,想做一個網站將這個想法呈現。然後你選擇一切自己來處理,伺服器要自己弄,不用現成的雲伺服器,因為覺得自己的資料很寶貴。程式碼不用第三方框架,每一行程式碼都要自己寫。
這樣折騰下去,肯定啥事也做不了。有一個想法要驗證,根本就不需要用網站,微信公眾號能不能實現?第三方平臺能不能先試點?相信我,你的想法在很大概率上是沒市場的。
正所謂"君子生非異也,善假於物也",一定要善於藉助現有的工具,我們要搭建的是藝術品,不應該去生產原料。而且自己生產的原料極大可能比現有的要差。
創造優美事物的方式往往不是從頭做起,而是在現有成果的基礎上做一些小小的調整,或者將已有的觀點用比較新的方式組合起來。
靈感是在創造的過程中產生的
上學時,每次寫作文,不可能是完全想好了再動筆,時間上也絕不允許這麼做。都是有個思緒就開始寫,在寫的過程中自然就有靈感。寫程式也一樣,不可能預先將一切都想清楚,如果在寫程式碼之前要先將各種類的關係想好,每個方法命名好,那寫程式碼就跟做填空題一樣,且不說這樣降低了寫程式碼的腦力樂趣,這樣做真的有效嗎?但凡寫過程式的人都知道程式碼是需要迭代升級的,我們不可能做到預先知道每個細節。因此,我們把整個程式想清楚的時間點,應該是在編寫程式碼的同時,這與作家、畫家和建築師的做法完全一樣。可以理解為寫草稿,再修改。
出於這樣的程式設計習慣,格雷厄姆偏向於喜歡動態語言,因為他需要的是一種可以隨意塗抹、擦擦改改的語言,不想正襟危坐,把一個盛滿各種變數型別的茶杯,小心翼翼放在自己的膝蓋上,為了與一絲不苟的編譯器大嬸交談,努力地挑選詞語,確保變數型別匹配,好讓自己顯得禮貌又周到。

優秀的黑客應該是藝術家
優秀的黑客應該是一個藝術家
每一個優秀的黑客都會有自己的專案,因為他們熱愛程式設計,就一定要開發自己的專案。如同一個熱愛畫畫的畫家一定會有自己的作品。
如果黑客只是一個負責實現領導意志的技術工人,職責就是根據規格說明書寫出程式碼,那麼他其實與挖水溝的工人是一樣的,從這頭挖到那頭,僅此而已。
由於經濟的考量,黑客前期應該先找一份工作來餬口,即使工作中所寫的程式碼並非自己喜歡的。而晚上則是黑客創作的時間。
黑客對於自己的程式碼質量要有類似於潔癖者的嚴苛要求,程式寫出來是給人看的,附帶能在機器上執行。但現實中,很多人寫的程式只求能在機器上跑起來就可以了,然後不到兩個月,自己都看不懂以前寫的程式碼了,更別提其他人。
此外,優秀的黑客必須具備“換位思考”的能力,判斷這一點的標準就是看他怎樣向沒有技術背景的人解釋技術問題。