黑客與畫家
黑客與畫家的共同之處:他們都是創作者。
“數學家”、“物理學家”、黑客
計算機科學領域的人包含了“數學家”、“物理學家”、黑客。“數學家”和黑客在兩個極端,中間是“物理學家”。這里的“數學家”是指做純數學理論研究的人(開發),“物理學家”是指依據理論指導做實驗證明理論的人(驗證),黑客是根據自己喜好運用理論工具創作的人(使用)。
黑客
計算機科學的范圍給學習計算機帶來困惑,我是否應該學會“數學家”、“物理學家”、黑客三者學的東西。答案是否定的,如果我們要做一個黑客,一個創作者,就要像一個畫家,專注于創作的東西。畫家只要會使用畫筆、顏料,但是并不需要了解顏料的化學成分;一個黑客在創作的時候并不需要絕對地去了解計算的原理,創作中我們需要什么,就拿出什么來用。黑客作為創作者,不處理數學問題。
黑客站在了“數學家”和“物理學家”的肩膀上,“數學家”、“物理學家”是原創 ,而黑客在現有的成果基礎上借鑒、調整、組合制造一些東西出來。
黑客如何學習
黑客主要是通過實戰學習,而不是課程。一個優秀的黑客,應當會有根據自身愛好創建的自己的項目,應當是在業余的時候也從事著自己喜歡做的事情。
一般情況,常規的教育要求我們先在紙上搞清楚程序,再開始編程;事實上,直接在電腦上編程,不斷地修改調試是更有效的方法。紙上談兵比實戰來得痛苦。
黑客和畫家一樣,定期從頭開始,而不是在一個項目上長年累月的工作,并且試圖把所有的新的想法都以修訂版的形式包括進去。創作的時候,自身設計一個規格,預先承認規格設計是不完美的,在編程的時候,就可以根據需要當場修改規格,最終會有一個更好的結果。
模仿是很好的學習方法,編程和畫畫一樣,在模仿的過程中可以學會注意細節。
在學校,純學習理論,則是一直在研究“怎么做”;在公司,純做任務,則是一直在決定“做什么”。而搞定“做什么”和“怎么做”是黑客都應該具有的素質。好的黑客應該可以單獨做出一個自身設想的好項目,而且應該懂得“換位思考”,了解用戶需求,當然,“換位思考”并不就意味著你要做自我犧牲。實際上,這是完全不同的兩回事。了解別人對于事情的看法,并不代表你為他的利益服務。個人創作看似身單力薄,但實際比以團隊為單位的創作者更有效率、更有效果。多人開發最好是將整個項目分割為獨立的模塊,設計良好的模塊接口,而且要有良好的說明文檔。
黑客的作品的評價和畫作一樣,由時間證明其價值。