
張建飛
這是一本爲專業程序員而寫的書,寫好代碼、追求卓越和工匠精神是每個程序員都應該具備的優秀品質。 本書共有13章內容,主要分爲技藝部分、思想部分和實踐部分。技藝部分詳細介紹了編程技巧和方法論,並配以詳盡的代碼案例,有助於讀者提高編寫代碼的能力,優化代碼質量。思想部分主要包括抽象能力、分治思想,以及程序員應該具備的素養等內容。實踐部分主要介紹了常見的應用架構模式,以及COLA架構的設計原理。
這本書分爲三部分,第一部分講技藝,內容包括命名、規範、函數、設計原則、設計模式、模型、DDD等七大類知識,前面三部分可以統稱爲編碼規範,後面四部分可以認爲是一些進階技巧,前面三部分內容是每一個開發必須要遵守的底線,後面四部分則是作爲一個有追求的開發要必備的知識技能,只有掌握了這些,才能實現從碼農到工匠的轉變。 第二部分講思想,這部分內容比較抽象,作者講了抽象、分治、技術人的素養、技術Leader的修養等,其實大多數內容我們都耳熟能詳,如:抽象、分層設計、成長型思維、批判性思維、記筆記等等,但在實際工作、生活中往往會拋之腦後。 第三部分講實踐,作者講了COLA架構以及工匠平臺。COLA等優秀的架構不是一蹴而就的,而是在已有的架構基礎上不斷優化,推陳出新,演進而來的。我們作爲程序員,其實非常有必要去了解和熟悉這些架構,並結合項目實際合理運用,讓我們的開發更便捷,效率更高效。 其實本書最讓我印象深刻的是第11章,講技術Leader的修養。技術Leader應該就是俗稱“TL”。那麼什麼是TL?TL和Manager之間有什麼區別呢? 作者提到幾點與TL職責相關的事情: 技術氛圍 作爲一個TL,如何去提升團隊的技術氛圍,重燃團隊對技術的熱情,是TL的責任與使命。 一個技術團隊,尤其是做業務開發的技術團隊,如果沒有“技術味道”,管理者完全不關心技術細節,績效完全和業務KPI綁定,就會導致工程師們整天只會寫if-else的業務代碼,得不到技術上的成長。在這樣的技術團隊,團隊的戰鬥力和凝聚力都會每況愈下。 如何提升技術氛圍,作者提供了四點思路: 1、代碼好壞味道 可以在每週定期舉行一次“代碼好壞味道”的分享,會議主持人可以輪流當,由主持人給大家分享3個代碼好味道和3個代碼懷味道,這些代碼既可以是來自我們工作中的代碼,也可以是來自開源軟件的源碼。 2、技術分享 分享是倒逼我們去學習和總結的有效手段。在準備分享的過程中,分享者要去閱讀很多資料,將原理弄清楚,最後用通俗易懂的語言表述。 3、CR週報 代碼審查(Code Review,CR)是保證代碼質量和架構風格一致性的重要手段。CR週報就是要把CR的結果透明化,通過週報的形式展現團隊在一週中的CR成果,包括團隊成員的CR評論數排名、代碼分支的質量情況,以及CR中的典型案例。這種透明化非常有價值,既可以幫助技術Leader瞭解代碼質量的概況,也能極大地調動團隊成員進行CR的積極性。 4、讀書會 讀書的範圍可以不止侷限於技術類書籍,讀書方式可以是同讀一本書,也可以是採用拆書的方式,每個人分別讀書的一章或幾章。另外對於讀書會的舉辦頻率也不要求固定,工作任務緊的時候,頻率適當放低,甚至暫停。 目標管理 一個好的Leader,應該是願意花時間和下屬一起討論、制定目標的。在過程中,給予幫助和指導,及時對焦糾偏,確保目標的達成。這樣做是對下屬負責,也對自己負責,至少不至於在談績效時造成意外,出現管理事故。 目標管理常見手段有關鍵績效指標(KPI)和目標與關鍵成果(OKR)兩種方式。相比較而言,一味地追求KPI,可能會導致短視;OKR更注重短期利益和長期戰略之間的平衡。 OKR主要有如下兩個特點: OKR可以不和績效掛鉤,主要強調溝通和方向。 OKR比KPI多了一個層級的概念,O(Objective)是要有野心的、有一定的模糊性,但是KR(Key Results)需要是可量化的,並且KR一定要爲O服務,不能偏離O的方向。 技術規劃 技術規劃的四個層次: 1、當前問題 第一層問題解決是最直接的,主要看團隊中現在有什麼迫切、緊急的問題需要解決,有哪些坑要去填。例如,業務增長比較快、當前架構缺乏彈性、要做服務化拆分、加入分佈式緩存、分表分庫等。又如,因爲代碼質量(可讀性、可維護性)差,要建立一個代碼審查機制,提升代碼質量。 2、技術領域 技術領域要做的是在這些常規領域中,根據業務情況和團隊情況選擇一些領域和命題(比如穩定、性能、效率等),並在這些命題和方向中根據優先級做判斷。比如,完善監控體系提升系統穩定性、使用CDN提升性能、通過測試自動化提升研發效率等。 3、業務領域 讓業務先贏是技術的首要使命,即使我們身處技術團隊,也要充分理解業務、關注業務,要分析業務數據和發展趨勢,和業務同事充分交流,總結和抽象出業務的發展對技術會提出什麼訴求,需要技術做什麼佈局和建設以應對業務發展的需求。 4、團隊特色 作爲技術團隊,我們要對比團隊內外技術的異同,最終圈定一個差異化區域。這塊區域是團隊的特色技術,是團隊借外力之外要修內功的部分,是不依賴別人而主要靠自己突破的部分,是團隊相比外面的差異化競爭力。這一層很重要,對團隊的口碑、影響力和穩定性都有較大的影響;同時這一層又是最難的,很多技術團隊在這一層次是空白的。 那麼Leader和Manager有什麼區別呢? 簡單來說,Manager是管理事務,是控制和權威;而Leader是領導人心,是引領和激發。Leader要做一些Manager的管理事務,但是管理絕對不是Leader工作的全部。 Leader宣言: 對待上級——有膽量 對待平級——有肺腑 對待下級——有心肝
這本書真不錯。他寫的這兩本書都很不錯,還有一本書是《程序員的底層思維》,也是很不錯的,只不過那本書早就看完了。本書主要通過技藝、思想以及實踐三大模塊來講解。在技藝部分主要是介紹了命名的重要性、開發代碼的一些規範、函數應該注意的點、常用的設計原則、設計模式以及模型和領域驅動(DDD)的核心。思想方面主要是抽象、分治、技術人的素養以及作爲技術Leader的養成記。最後在實踐部分作者介紹了COLA架構——一個遵循DDD設計的開發框架以及利用COLA架構書寫的實踐代碼。 總之,本書看完還是有所收穫的,我們作爲程序員不僅僅是隻寫業務代碼,更要提高我們的架構能力和設計能力。推薦大家看一下張建飛的這兩本書,看完之後,你會在寫代碼的時候就會注意,應該儘可能寫“壞代碼”。
一本比較全面的書籍,涉及軟件開發的方方面面,從編碼規範、架構設計到代碼編寫都有涉及,最後還奉上自己的開源項目以饗觀衆,有概念,有思想,有乾貨。 作者有大廠的工作經歷結合思考與提煉形成這本碼農成長祕籍,適合在升級打怪路上迷茫的每一位小羔羊。
本書涵蓋的主題較多,從命名、規範、函數等編程細節,到設計原則、設計模式、模型、DDD等原則模式,到抽象、分治思想、技術人成長的素養,最後還介紹了 COLA 框架的架構和使用案例。 由於主題較多,大部分主題並沒有足夠深入,不過還是值得一讀,以幫助自己建立體系化的認知,爲進一步的學習實踐指明方向。
謝謝大家支持,有想法隨時和我交流
本書作者有着豐富的阿里工作經驗,經歷了衆多高複雜度的項目架構設計,再加上自身對代碼質量的高要求,對好的技術味道的崇尚,經過一系列的自我思考,優秀前輩的借鑑以及親身實踐,逐步沉澱出一套適用於大多數場景的整潔架構的方法論和運行框架。 本書文筆精煉,講述了整潔架構的道,術,器,專業知識輸出的同時,體現了個人的思考路徑和結果,也傳達了衆多普世的理念和方法論。值得軟件工程師閱讀,對硬軟能力的提升都會有很大幫助。 這本書我給打四分,一分給精煉的表達,清晰的敘事脈絡,容易讓讀者接受,一分給專業且新穎的知識和產品輸出,對讀者來說軟硬實力都具有可操作性,一分給作者的分享精神,代碼開源以及個人方法論的輸出,最後一分作爲對作者的支持,書是優秀的,希望作者未來可以產出更多優秀的內容。
作者語言精煉流暢。除了第7,12,13章介紹具體細節以外,本書介紹的方法論和思想都很通用有用。技藝部分的內容與《編寫可讀代碼的藝術》大致相同。 特別值得一提的是,8-11章總結的經驗感悟,在做事爲人方面都於我頗有啓發。
比較好讀的一本書,沒有晦澀難懂。對於DDD的描述沒太理解。 全書分爲三部分: 技藝,思想,實踐。更偏愛思想部分的內容。 技藝,即編碼過程中的具體技巧,包括命名,編碼規範,函數使用,solid設計原則,GoF設計模式,UML模型建模,DDD概述。 思想,有點偏心靈雞湯,但是又是實實在在的作者所想所思所得,作爲技術人能感同身受。抽象是技術的核心,以簡練的抽象模型抓住本質問題並概括出複雜的業務背景;分而治之,也是大數據的內核,拆解單體的時間和空間複雜性;技術人素養很實在的要素:不教條,批判型思維(聚焦問題本質),成長型思維,結構化思維,工具化思維,好奇心,記筆記,有目標,選擇的自由,平和心態,精進。以上技術人素養概述起來就是:抽象,批判,成長,平和。leader修養中最印象深刻的是:不需要高高在上指點江山的技術manager,需要深入系統深入代碼細節,給團隊帶來改變的leader。manager是事務管理,是控制和權威;leader是領導人心,是引領和激發。要視人爲人,管理好對事的績效貨幣和對人的關係貨幣。對待上級要有膽量,對待平級要有肺腑,對待下級要有心肝。 實踐:講解了具體的架構,包含業務架構,應用架構,系統架構,數據架構,物理架構,運維架構。典型應用架構:分層架構,cqrs,六邊形架構,洋蔥架構,DDD。
比較基礎的一本書,內容上除了一直在談的代碼的清晰性,整潔性之外,詳細介紹了自己團隊研究出的框架,讀起來門檻並不會很高。 讓我感興趣的是這個書名起的很有特色。從碼農到工匠,象徵着從農民階級轉向工人階級。農耕的特點是看天操作,而工程的特點是有規章,有秩序,有要求。這個題目《從碼農到工匠》很清晰的概括出了代碼精進的方向,不要隨意亂寫,要有規則,有秩序,有紀律。
本書從三個部分來展開,技藝、思想、實踐。 技藝篇包括命名,規範,函數、類、設計原則、設計模式、模型、DDD,從點到面,從局部到整體,逐步的描述了一個碼農應該具備的技藝,並且如何掌握。其他也推薦了《代碼整潔之道》,《領域驅動設計》等書。 思想篇包括抽象思維,分治思想,技術人的素養,leader的素養。抽象思維是必不可少的,有了它才能夠更好的把現實世界映射爲軟件世界。文中也介紹瞭如何培養抽象的思維,多閱讀,多總結,培養領域建模。分治是應對日益複雜,龐大的軟件世界的法則,把大問題分成一個個小問題,逐個解決,達到最終解決完整問題得目的。技術人要有追求,除了技術外,還應該保持好奇心,持有終身學習的態度,才能一直適應時代的發展。一位好的技術leader需要有敏銳的技術嗅覺,能夠很好的帶領團隊,培養團隊的戰鬥能力,文中也一一介紹瞭如何成爲一名好leader。 實踐篇其實收穫一般,快速略過,主要是總結了一些常見的軟件設計架構吧。 本書文字比較流暢,而且作者是大廠富有經驗的leader,一些經驗之談確實能夠讓人耳目一新,起到指導新人的作用。 綜上,本書滿分5星給4星。