當前位置

首頁 > 教育範文 > 讀後感 > 讀HackersandPainters有感

讀HackersandPainters有感

推薦人: 來源: 閱讀: 2.73W 次

人類世界還沒有充分領會到程序員的美學,但是Paul Graham卻以生動的文筆與幽默的語言,和着犀利的思想,將這種美帶到了我們面前,超越了時代,Hackers and Painters讀後感

讀HackersandPainters有感

正是如此。不管你是一個做做紙飛機的業餘愛好者,還是一個在軟件工程的體制內謀生的專業程序員,究其根本,都是從事着創造程序的職業。我說創造,因爲寫程序是需要靈感,需要極大的熱情的--這一點和畫家無異--雖說計算機是精確的、死板的、有條不紊的,但是什麼是程序呢?

程序就是告訴別人一個算法中究竟有什麼奧義,順帶告訴計算機怎麼執行看到這種解釋的那一瞬間,我就被這種美給折服了。多麼原始而狂放的表現形式!告訴計算機如何執行?這種工作交給老實巴交的編譯器大媽(Aunt compiler,虧他想得出來啊…)就好了。這樣解釋的話,程序員不是和畫家很像嗎?所以我就在想,"體制內的廢人們在做什麼呢?"每天上班打開TFS,幹掉屬於自己的幾個Work Items,然後下班,離開"過早設計"的噩夢。在PG的體系裏,他討厭一切的靜態類型的編程語言,聲稱你用那些語言寫程序的時候,就像"正襟危坐,努力挑選着詞彙想要不激怒那些死板的編譯器"一樣--PG認爲靜態類型的.語言簡直和學校裏教你如何編程(例如先在紙上寫下來)形成了完美的呼應,而這樣通常不能產生好的程序,因爲他認爲程序是用來創造思想的,而不是表達一種已經存在的思想(這一點我同意,但是爲什麼他對C語言有那麼深的成見?只能說他沒有理解到如何用C來表達思想,或者說叫"隔行如隔山"吧,真是受不了這一批互聯網時代的腳本小哥們…)--他推崇動態語言,認爲可以塗塗改改的鉛筆纔是表達思想的最好工具。計算機是死板的,但是操縱計算機的人不能死板地握住鋼筆心裏沒底。

也許有人會說,這種方法論完全不適合於"團隊項目",缺少"溝通",但是PG的"不能說的話"讓我明白,有的時候,必要的詞只是一些標籤而已,爲了在特定的時代攻擊特定的人,人類總是喜歡發明禁忌的標籤--其實他們只是想表達"我不同意"而已--通常的情況下,發動這樣的言論的人往往處於極權統治的上層。

PG的團隊,就在他的這種方法的指導下成功了。當然,這裏所指的合作與溝通,是在嚴格限定了個人職責,將工程劃分爲嚴格的模塊後才形成的--幾個人一起維護同一份代碼,只會讓這份代碼變成骯髒不堪的雜物堆放間,讀後感《Hackers and Painters讀後感》。只要接口規定好,不同模塊即使是採用完全不同的語言與通信機制也沒關係的呀--大概這就是新時代的特點--在互聯網上寫程序,真的很靈活。

上軟件工程課最大的收穫之一,就是讓我明白了每個企業都有自己的文化,相互之間有時還水火不容。老師將微軟的文化展現給我們,供我們學習參考,讓我們獲益匪淺;但是我們也不能一味地只是獨尊一家之言,每種文化背後都有成功的故事,這種時候好心的成功者就會跳出來謙虛地解釋,他是如何做得不比別人糟糕的。PG這個憤青,在書中對微軟實施了各種諷刺與攻擊,說微軟太笨重,太迂腐(例如"我被告知微軟的員工被建議不要參與開源項目,即使是休息時間也不行。但是大多數最好的黑客都在參與開源項目。所以實際上這個政策的作用就是使微軟僱不到一流的程序員")。但是書裏面也承認即使富有創新意識,大膽無畏,一個小公司也是無法與這樣的大公司抗衡的--因爲即使你能打得過國王,赤手空拳衝進他的城堡與他一對一決鬥也是完全不可能的事情--城堡裏的人甚至根本就不會意識到挑戰者的存在--大概這就是大公司的生存之道吧,走增量路線,在自己的地盤上拼命修建防禦工事以提防敵人入侵。然而PG也指出了小型起步項目的生存方式--去那些還沒有人修建防禦工事的、全新的領域(這種說法和鄒老師課上講的方法完全吻合),在那些地方迅速地成功。

何爲迅速?開發週期是一個重要的因素。PG指出,在互聯網的時代,"版本號"已經漸漸消亡,軟件的更迭升級更像是一個平滑滾動的過程--離開了桌面軟件的"災難式分發方式"(我還依稀記得那張Abelton Live的正版光盤被劃傷的時候我的心情是多麼糟糕…),便離開了傳統的開發週期--一天升級三四次都沒有問題。關於Bug,處理的方法也和從前不盡相同--這裏特別提一下蘋果的醜事--在新版操作系統發佈的時候,CD/DVD操作功能還沒有完成--他們就這樣把新的操作系統賣出去了!後來用戶不得不自己充當修理工的角色,以打補丁的形式補上這個功能…

傳統的方法是--在每一次版本更迭中,加入大量的新Features,然後再把代碼交給QA進行測試。但是這樣到最後頂多也就是得到一個"統計學上合格"的版本。

有時明明知道某個功能無法使用,但是新的軟件還是照樣被分發給用戶。

但是在互聯網上情況就不一樣了--既然不能用,掛出一個頁面來幹什麼呢?另有一說,說互聯網時代的最大優勢在於用戶全都是Beta版的測試小白,開發者們再也不用看着一堆Core Dump來猜測用戶到底都幹了些什麼了。確實,即使有Bug又怎麼樣?Bug會在無知用戶的嚴峻考驗下迅速地暴露出來,迅速地被網站維護人員感知,再迅速地被開發者消滅掉--所以大部分用戶所看到的軟件都給人一種"毫無漏洞"的感覺--既敏捷,又不失嚴謹--至少看上去是這樣的--不是很好嗎?這種新時代的開發週期模式,確實值得"啊~在學校只學了C語言啊~什麼都不會啊~"這樣的孩子們好好反思--是時候瞭解一些能跟上時代的東西了,不要試圖以80年代的方法論甚至技術來賺10年代的錢。

讀完PG的書,獲益匪淺。黑客的桀驁不遜,小團隊的靈活敏捷,美國式的自由精神,都值得我們好好思考與學習。