駭客與畫家 Hackers and Painters (2004)
駭客和畫家都是創作者 駭客和畫家都是創作者,因為他們都致力於創造美好的事物。 他們不被視為研究人員,但如果他們在創造事物的過程中發現了新的技術,那就更好了。 他們不被視為工程師,因為工程師關注的是「如何做」,而駭客和畫家則關注「做什麼」。 最好的駭客會創造規格,而不是僅僅實現規格。 駭客和畫家都透過實作來學習。 大多數駭客不是透過大學課程來學習駭客技術的,而是透過自己寫程式來學習。 畫家會留下作品的軌跡,因此你可以透過觀察他們的作品按時間順序排列來觀察他們的學習過程。 駭客和畫家都從範例中學習。 對於畫家來說,博物館就是一個技術參考圖書館。 駭客可以透過觀察好的程式來學習編程,不僅要看它們的功能,還要看它們的原始碼。 開源運動的好處之一是讓學習編程變得更容易。 駭客和畫家都透過逐步完善來創作。 繪畫通常從草圖開始,然後逐漸填入細節。 有時最初的計劃會被證明是錯誤的,許多畫作在 X 光下會發現肢體被移動或面部特徵被重新調整。 駭客也應該以這種方式工作,因為程式規格不可能是完美的。 駭客和畫家都需要對美有狂熱的追求。 如果你觀察好的軟體內部,你會發現即使是沒有人會看到的部分也很美觀。 好的軟體就像一幅精美的畫作,即使是細節也經過精心處理。 駭客和畫家都需要同理心。 要做出真正偉大的作品,你必須能夠從使用者的角度看待事物。 大多數駭客為人類受眾製作軟體,為了吸引受眾,你必須了解他們的需求。 同理心可能是優秀駭客和偉大駭客之間最重要的區別。 雖然駭客和畫家有很多共同點,但他們也有一些不同之處。 科學家透過實驗和習題來學習科學,而駭客則透過實作來學習駭客技術。 科學家從一開始就做完美的工作,因為他們只是在複製別人的工作,而駭客從一開始就做原創的工作,只是做得不好。 大公司通常不鼓勵駭客做他們想做的事情。 大學和研究實驗室強迫駭客成為科學家,而公司則強迫他們成為工程師。 大公司希望減少設計成果的標準差,以避免災難,但這也意味著他們會失去最好的產品。 軟體的報酬不如其他類型的創作。 寫小說的報酬不如為垃圾處理器寫廣告文案,駭客編程語言的報酬不如想辦法將公司的舊資料庫連接到他們的網路伺服器。 儘管存在這些挑戰,但駭客仍然可以透過從事日常工作並在工作之餘開發出色的軟體來創造美好的事物。 這就是開源駭客的意義所在。 開源可能是正確的模式,因為它已經被所有其他類型的創作者獨立證實。 駭客不應被視為科學家 將駭客歸類為科學家其實是個錯誤的標籤,因為他們的工作方式與目標都與科學家截然不同。 源碼中提到,將駭客的工作稱為科學會讓他們覺得自己應該以科學的方式行事,導致他們偏離創造美好軟體的初衷,而去追求適合寫研究論文的醜陋系統。 以下列出幾個支持駭客不應被視為科學家的論點: 駭客是創作者,而不是科學家。 他們像畫家、作家和建築師一樣,專注於創造美好的事物。 他們的工作重點是設計和創造,而非科學研究和實驗。 駭客透過實作學習,而不是透過科學方法。 他們從編寫程式、犯錯和除錯的過程中學習。 科學家則透過實驗和驗證假設來學習。 駭客的成功標準與科學家不同。 科學家追求的是可驗證的真理和可重複的實驗結果。 駭客的成功則取決於他們創造的軟體是否美觀、實用和受歡迎。 駭客需要同理心,而科學家則不一定。 為了創造出優秀的軟體,駭客需要了解使用者的需求和思維方式。 科學家則更注重客觀性和理性分析。 將駭客視為科學家會阻礙他們發揮創造力,並導致他們追求錯誤的目標。 駭客應該被視為創作者,並被賦予自由去探索、實驗和創造美好的軟體。 從畫家身上學習駭客之道 從畫家身上,駭客可以學習到許多寶貴的經驗和技巧,這些技巧可以幫助他們創造出更優秀的軟體。 透過實作學習: 就像畫家透過不斷練習來提升技巧,駭客也應該透過實際編寫程式來學習。 不要害怕犯錯,從錯誤中學習,並不斷改進你的作品。 大學課程教導的編程方式與實際編程方式截然不同,駭客應該像作家、畫家和建築師一樣,在編寫程式的過程中逐步完善。 從範例中學習: 就像畫家從大師作品中汲取靈感,駭客也應該研究優秀的程式碼,學習他們的設計理念和技巧。 開源運動為駭客提供了豐富的學習資源,讓他們可以輕鬆地查看和學習他人的程式碼。 逐步完善: 畫家很少一次性完成作品,他們通常會從草圖開始,逐步添加細節和修改。 駭客也應該採用這種迭代的方式來開發軟體,因為一開始就追求完美的規格是不切實際的。 靈活的編程語言和抽象的設計可以幫助駭客更容易地修改程式碼。 對美有狂熱的追求: 偉大的畫作不僅僅是技術的展現,更是美的追求。 同樣地,優秀的軟體也應該追求美感,即使在使用者看不到的細節上也應該精雕細琢。 程式碼的整潔度、變數命名和整體結構都體現了駭客對美的追求。 同理心: 為了創作出能打動人心的作品,畫家需要了解觀眾的情感和喜好。 同樣地,駭客也需要站在使用者的角度思考問題,了解他們的需求和痛點。 具有同理心的駭客才能創造出真正優秀的軟體。 除了以上几点,畫家的工作方式也提供了一些值得駭客借鉴的经验: ...