
馬克斯·卡納特-亞歷山大
本書的前三部分內容首先聚焦的是程序員應該瞭解的基本原則,然後是關於軟件的複雜性和簡約性的各個方面。在此之後,第四部分介紹代碼調試。接着是第五部分,包含一整套全新的原則,都是我在《簡約之美》出版之後陸續整理出來的,基於的是我將《簡約之美》中的原則成功應用在大型工程團隊內的經驗。接下來第六部分敘述的是軟件設計原則背後的哲學。其中包含一章“測試的哲學”,討論的是有關軟件測試的基本原則,比我在第一本書裏講解得更加透徹。最後迎來的是第七部分,內容都是圍繞我所有博客中最受歡迎的文章來編寫的。開篇首先解釋了爲什麼“持續改善”應該作爲軟件開發中產品管理的哲學,然後討論的是如何讓你的軟件持續改善,以及成爲一名更好的程序員的具體方法。總的來說,整本書旨在幫助你成爲一名更好的軟件開發者,這也是本書唯一的主旨。我傾向於活在一個軟件簡單易用、快速穩定、設計良好還易於開發的世界裏,你不也希望如此嗎?在《簡約之美》和這本書中,我會告訴你應該通過何種方式來達成這個目的——你所需要做的僅僅是將我傳遞給你的這些知識在工作中應用起來。
從名字看,又是一本教人怎麼編程的書,通常這類書會列舉一些經典的原則,譬如:DRY、KISS等就完事兒,也會因爲外國作者項目和文化的不同,產生距離感。 本書並不是這樣,它不拘泥於編程,裏面沒有一行代碼,但做到了“不分語言、不分團隊”的通用,它細緻到了日常開發的各個環節,實踐的建議,問題的解決方案,甚至一款什麼樣的產品纔算優秀,像一個經歷豐富的前輩在身邊指導,更可貴的是有作者獨特的思考,而不是照搬以往的東西,能給人啓發。如果將書中的內容進行再加工,舉一反三,幫助就更大。
走馬觀花的略讀一遍,大部分是方向性的建議,至少不太適合我,很多地方沒太理解,
understanding software翻譯成編程原則,翻譯得真爛。意譯也應該是編程哲學。看到27章,終於,大師都是要把問題上升到哲學的高度講的。講太深,一般人聽不懂,就沒有用處了。哲學,是科學發展得太慢,跟不上我們解釋世界的本質的需求的背景下,產生的,用於解釋世界的學科。科學可證僞,根基很牢固,但發展真的太慢了。哲學沒有堅實的根基,不牢靠,進而產生了很多流派,辯證的,形而上學的。哲學類比於數學(數學不是科學),有很多符號。數學能加速思維,比如,乘法讓重複進行的加法看起來簡單。微積分讓複雜的數學計算變得極度簡單,快速。西方哲學有很多知名的體系,黑格爾、康德、謝林,等等。中國也有自己的知名哲學體系。這些體系對我來說不重要,它們都是無根之木。但是很多哲學的思維方式值得借鑑。如果簡單地把軟件=知識。有了這個認知的定義,對於軟件治理,思路就打開了。必須要把知識良好地表述,才能構建複雜又易懂的知識。只有較好地描述乘法,才能良好地表達乘法交換律,才能良好地表達微積分,神經網絡(深度學習方向),做到現在的高精度的人臉識別。所以,代碼,要可讀。而且,代碼結構中的很多部分,是“小學”級別的,“中學”級別,“大學”級別的。只有當組織裏的人都接受了“九年義務教育”,才能讓他們構建起現代工業。一羣小學生能構建工業化的中國?要做出好深的學問,需要積累很多“最簡化,又很複雜”的知識。做出高精尖的軟件,就同樣積累很多“最簡化,又很複雜”的代碼。中國的IT企業要做高精尖的技術,應該做什麼,結論就呼之欲出了。接着,還可以有很多其他,在這個視角顯而易見,不在這個視角看不出來的“推論”
結合書中的最佳實踐,可以發現自己工作中的不足並相互印證,關於好代碼的標準、技術人的做事方法等方面都有很好的借鑑意義
看着像是作者以前的文章各種拼拼湊湊起來的一本書,國內軟件工程領域看老外寫的書總感覺不太符合國情。通篇看完沒感覺有什麼太有新意的東西吧,可以快速翻翻,價值一般。
只記住了兩個基本原則,其他的原則有點泛泛而談
編程領域的真知灼見,讀完會有一些收穫