程式設計師公升級必備

2021-05-23 21:58:57 字數 1564 閱讀 6107

程式設計師公升級必備

學過高中物理的人,應該會記得,原子中的電子獲得能量之後,會發生能級躍遷,到達更高的能量狀態。其實任何工種都是一樣的,要跳出自己的水平,到達更高的級別,不是件容易的事。這個跳躍過程總需要一些東西的輔助。誠然,如果要成為乙個好人,那麼只要做好在幼兒園中學到的一切就足夠。如果要成為乙個好程式設計師,其實所需要的道理也多不了多少,只不過,當水平不夠的時候,永遠不能認識到那些樸素道理的重要。而當水平達到的時候,這些道理自然會明白。所以一本幫助程式設計師高階的書,很容易落到低手覺得是廢話,高手也覺得是廢話的悲慘境地。

好幾年前,有人向我推薦過這本《程式設計師修煉之道》,甚至專門買了一本送到我家。而當年的我,不知道是由於無知、自負、浮躁,或是其他,只草草翻了一下,就下了個「爛書」的定義,扔在書架一角。後來有朋友在我書架上發現,如獲至寶,說已經買不到了。我當然樂得送了人情。在我心目中,最好的入門書永遠是《**大全》,那也是對我影響最深的一部書。

幾年後,再來談這本書,發現很多人的評價比我高得多,自知不妙,趕緊找來重讀,才知道錯過了什麼。在乙個濫俗的譯名之下,在乙個看起來不知所云的目錄之後,在一些讀起來拗口的句子之中,隱藏的竟然是相當偉大的思想——樸素而真摯,簡單而有效。這時候我突然明白,這是一本不遜於《**大全》的偉大著作,後者一直被我譽為「新手聖經」。

經驗這個東西,往往並不能告訴我們什麼一定對,但是可以告訴我們什麼一定不對。這本書完全是經驗凝成,沒有大道理,沒有新觀念。這些樸素的道理就是創造乙個合格軟體和作乙個好程式設計師所必須了解的。比如「提示44不要靠巧合程式設計」,這句話表達的意思是「不要預設立場」。聽起來簡單,但是只要隨手翻翻你最新寫過的一段程式,通常都會發現**中做了大量的「假設」。書中用一道習題,假設了使用者使用命令列環境,假設使用者懂英語……都可能導致問題。怕了吧?幸好還有「提示30你不可能寫出完美的軟體」,這可不是幫你開脫責任,而是在講如何控制需求,這正是能順利完成乙個專案的根本前提,可惜事實上往往到了專案失敗的時候,人們才想起來需求出了問題。

這本書涉獵的範圍相當廣,如何設計架構,如何思考問題,如何測試,如何編碼,如何處理文件……如果細心琢磨,構建軟體的所有主幹和細微枝節都有所涉及。和很多人的看法不同,我不認為這是一本可以輕鬆讀完的書。一方面,這本書涉及的內容太多,雖然已經盡量講述,但所有話題都可以繼續引申出無限的內容;如果用心,還可以配合附錄中所提到的各種**和資源繼續學習。習題也要仔細思考。這絕不是一本**。另一方面,作者用了大量的隱喻,導致讀起來有一定難度。開始我認為是翻譯質量有問題,不過慢慢發現美國的讀者讀起來也未必容易。原因還是涉及的範圍過大。我特意模仿這種風格寫了本文的第一段,雖然是中文,可讀起來也不容易。

可能以上的兩點會阻擋一部分人閱讀這本書,因我也是曾經受阻的人之一。不過,好書並不會隨著時間的推移和平台的變化而消亡,好書只會成為經典。無論是《人月神話》,還是《**大全》,都在時間的長河中沉澱下來,傳頌至今。這本書,雖然也只有10年歷史,不過現在再來翻看,不僅毫不落伍,甚至感覺穿透了時間,看到了這些年中不少自己犯過的錯誤,我相信這也是一本能經得起時間沉澱的書,只不過需要多點耐心。因此,我鄭重地寫下這篇書評,希望能讀到這本書的人再多一點耐心,越過語言的障礙,直入本質,直至躍向更高階別。這個希望,不僅是對新手所說,其實也包括我自己。如本書開頭所說:注重實效的程式設計師應該不斷學習。我們都應該不斷地學習下去。

銀杏科技創始人 霍炬

程式設計師公升級必備

程式設計師公升級必備 學過高中物理的人,應該會記得,原子中的電子獲得能量之後,會發生能級躍遷,到達更高的能量狀態。其實任何工種都是一樣的,要跳出自己的水平,到達更高的級別,不是件容易的事。這個跳躍過程總需要一些東西的輔助。誠然,如果要成為乙個好人,那麼只要做好在幼兒園中學到的一切就足夠。如果要成為乙...

程式設計師必備素質 隨想

寫 這麼多年,突然想到要整理乙個好的程式設計師必備素質。1.紮實的基礎 基礎知識不牢靠都會遇到瓶頸,思維會受到限制,解決問題會難有思路。2.豐富的想象力 需要不按常規出牌,就需要你強大的想象力,把不同問題關聯起來,形成觸類旁通的效果。黑客與畫家 告訴我們最好的程式設計師都是黑客,他們與畫家一樣都豐富...

程式設計師的必備素質

1.程式語言能力。不用多說,作為合格的計算機程式設計師,精通c語言是必須的。2.編碼能力。遵守編碼規範,是乙個程式設計師最基本的要求。3.責任心。程式設計師是網路世界的編織者,最起碼的責任心才能對自己有乙個良好的控制,不做有害於網路秩序的事情。4.英語管理。英語是一門工具,對於程式設計師來說很多有用...