對於多數程式設計師來說,40歲之前賺到別人60歲的錢是普遍目標,不過職業的進階也印證著人生的進階,所以何時開始思考未來的職業規劃,都不算早。
無論你是1年小白、5年資深還是10年技術專家,或者更高階的CTO,都可以在書單中找到適合自己目前階段的書,清晰化未來要走的方向,讓你的路越走越寬,財富累積/技能累積/經驗累積也會愈發順利。
初級程式設計師工作經驗在3年以下,處於打基礎、定方向的階段,這時候建議主要精力用於夯實基礎,規範程式設計上,將會終身受益。
一、瞭解自己所在的領域,對吃飯的工具有清晰的認知
《編碼:隱匿在計算機軟硬體背後的語言》 豆瓣評分:9.2分
這本書常年排在程式設計師必讀書單TOP5內,作者用豐富的想象將看似繁雜的計算機工作原理闡述得通俗易懂。
二、程式碼是一個程式設計師的靈魂,每個優秀的程式設計師都應該認真對待親手寫出的程式碼
《程式碼整潔之道》 豆瓣評分:8.6分
閱讀這本書有兩種原因:第一,你是個程式設計師;第二,你想成為更好的程式設計師。
作者Bob大叔給出了一系列整潔程式碼操作實踐,並用實際專案的正、反案例,說明只要遵循這些規則,就能編寫出乾淨的程式碼,從而有效提升程式碼質量。
而乾淨的程式碼,既容易理解、質量可靠,而且讓專案更容易啟動和延續,也為後期維護、升級奠定了良好基礎。
三:從實際問題出發,讓自己的程式語言和思維更上一層樓
《程式設計珠璣》 豆瓣評分:9.1
作者Jon Bentley可以說是計算機科學大家培養專業戶,Java之父James Gosling就是他的學生。
他選取了典型的複雜程式設計和演算法問題,生動描繪大師們在探索解決方案中發生的軼事、走過的彎路和不斷精益求精的歷程,總結了許多獨特而精妙的設計原則、思考和解決問題的方法以及實用程式設計技巧。比如和Bob Martin討論密西西比河一天流出多少水,用這樣一個小問題引出粗略估算的技巧。
四、多學點演算法和資料結構,提高程式設計水平
《資料結構和演算法分析(套書)》 豆瓣均分:8.7分
國內外很多大學都拿它當作教材,這套書非常系統、全面、嚴謹,適合對資料結構和演算法有些基本瞭解,並且掌握了至少一門程式語言的程式設計師。而且,作者用了C\C++\Java三種語言分別寫了三個版本。
被眾多程式設計師選為最好的演算法入門書,看完了這本書再看其它演算法書,會很有底氣。
五、初級程式設計師必備的軟技能,學習做好職業規劃、自我營銷
《軟技能—程式碼之外的生存指南》 豆瓣評分:8.0分
概括了軟體行業從業人員所需的“軟技能”,從揭秘面試的流程到精耕細作出一份殺手級簡歷,從建立大受歡迎的部落格到打造個人IP,從提高自己工作效率到與如何與“拖延症”做鬥爭,甚至包括如何投資不動產,如何關注自己的健康,堪稱程式設計師的生活百科全書。
從部門新人變為老人後,需要對自己的職業規劃有明確方向,如果選擇專攻技術,必然要多學習,進一步提高業務能力和技術能力,積累優質的專案經驗。
一、“程式碼有很多種壞味道,重複是最壞的一種”,先讓你的程式碼更優雅
《重構:改善既有程式碼的設計》 豆瓣評分:9.0分
重構,就是在不改變外部行為的前提下,有條不紊地改善程式碼。本書凝聚了軟體開發社群專家多年實踐經驗,解釋重構的原理和最佳實踐方式,並指出何時何地應該開始挖掘你程式碼以求改善。
整本書第三章“程式碼壞味”,寫的很有用。什麼是程式碼的壞味道,如何消除這些壞味道,這是一本關於程式碼美學的一本書,培養碼農那高貴的code taste的不二選擇。
二、總有不合理的軟體專案存在,如何避免犯一些經典錯誤
《快速軟體開發》 豆瓣評分:8.4分
軟體開發處處都是陷阱,作者告訴你前人都踩了哪些坑。本書總結了以微軟為代表的美國軟體業的專案實踐經驗,並列出了可以提高專案開發速度的方法和技巧。
比如,過緊或不合理的進度計劃可能是軟體開發唯一最具破壞力的殺手,所以開發人員要提高談判能力,合理規劃專案進度。
三、技術能力之外,提高工作效率很重要
《高效程式設計師的45個習慣》 豆瓣評分:8.2分
總結高效程式設計師在開發過程中的45個個人習慣、思想觀念和方法,有助於開發人員在開發程序、編碼工作、開發者態度、專案和團隊管理,以及持續學習等方面積極修煉。
養成這些好的習慣,可以極大地提升自己的程式設計實力,更快速、更可靠地交付更高質量的軟體,從而成為真正的高效程式設計師。
四、程式設計師職業生涯到了一定階段,系統地思考職業發展
《軟技能2:軟體開發者職業生涯指南》 豆瓣評分:9.0分
瞭解軟體開發從業者需要具備的各種“軟技能”,包括如何選擇工作崗位、如何選擇技術方向、如何拓展技術技能、如何與團隊和領導融洽相處等等。
五、培養專業的軟體開發素養,具備良好的程式設計實踐
《程式設計師修煉之道:通向務實的最高境界(第2版)》 豆瓣評分:9.2分
理解身為一名程式設計師到底意味著什麼,本書透過許多富有娛樂性的奇聞軼事、有思想性的例子以及有趣的類比,全面闡釋了軟體開發的最佳實踐和重大陷阱。
書中有一章的標題是“我的原始碼被貓吃了”,其實說的是當你發現問題時,重要的是解決它,而不是把錯誤推給“貓”。
華為雲資深架構師董老師在“雲享讀書會”領讀過這本書,拆解書中精華知識,學練結合,拒絕紙上談兵。
這個時期的程式設計師,或多或少要開始思考職業拐點:是繼續做一名底層碼農,還是往前走兩步,成為一個優秀的全棧工程師或者軟體設計師。
無論是前後端技術一把手的全棧工程師,還是有程式設計能力的軟體設計師,都得精通多門程式語言,有系統性的技術能力。前幾年打好技術基礎後,此時更要注重技術之外的軟體開發細節,讓自己的工作更勝一籌。
一、全棧工程師必備技能之協調客戶、管理好專案
《人月神話》 豆瓣評分:8.4分
軟體領域的聖經,內容源於作者在IBM公司System/360家族和OS/360中的專案管理經驗。書名中的“人月”指的是一個人在一個月內完成的工作,“神話”指透過人手來縮短專案實踐是神話。
雖然書裡很多概念、例子、技術都屬於上古時期的遺蹟了,但是書裡介紹的軟體開發的困難、管理的思路,仍然可以在今天的軟體開發中找到對應的場景。
二、全棧工程師培養可用性思維
《點石成金 : 訪客至上的Web和移動可用性設計秘笈》 豆瓣評分:8.2分
一本關於Web設計原則而不是Web設計技術的書,作者用幽默的語言揭示Web設計中重要但卻容易被忽視的問題,只需幾個小時,便能對照書中講授的設計原則找到網站設計的癥結所在,常看常新。
三、軟體設計模式領域的里程碑著作
《設計模式》 豆瓣評分:9.1分
設計模式不是語法規定,而是一套用來提高程式碼可複用性、可維護性、可讀性以及安全性的解決方案,一般的大型專案開發或者框架設計,都會用設計模式來組織程式碼。
本書從面向物件的設計中精選出23個設計模式,面向物件開發必讀,雖然隨著動態語言的發展,很多模式都已經融入到語言當中,但是作為一個好的開發者,這本書講的不是模式本身,而是模式的軌跡。
四、轉變一下程式設計師的思維,認識互動設計的重要性
《互動設計之路》 豆瓣評分:7.9分
五、面對漫長的職業生涯,靜下心來追求“良質”
《禪與摩托車維修藝術》 豆瓣評分:8.3分
一本非典型的適合程式設計師閱讀的哲學書,霍金、喬布斯都曾推薦過。書中講述作者和兒子 騎摩托車旅遊路途所悟到的“禪”,其中最關鍵的就是“良質”。
舉個例子,寫程式跟維修摩托車一樣,有時候會枯燥、機械且乏味,但如果用“良質”的境界用心去對待這件事,找到內心的平衡,最好能達到“物我兩忘”的境界,最終的結果就是另一番局面了。
恭喜你,已經進階到程式設計師的金字塔頂端了!入行有10多年經驗的你,有過專案開發經歷,精通多門程式語言且熟悉資料庫,對行業、技術、產品都有了深層次的認識,帶好團隊成為更關鍵的業務能力。
一、為解決架構設計模式中的“疑難雜症”開啟思路
《企業應用架構模式》 豆瓣評分:8.3分
將40多種常見的解決方案轉化成模式,每個模式都給出使用方法和實現資訊,並配以詳細的Java程式碼或C#程式碼示例。
雖然書中有些內容放在現在有點過時,但如網友所言,在今天的開發思想環境下,也許再也不會出來這樣一本重量級的企業架構模式的書,甚至其中的很多模式會被覺得太重,太Java/.NET,但這才是真正的大型軟體專案應有的架構模式,值得每一個程式設計師細細品味。
二、跟著國外技術大佬學團隊管理
《極客與團隊》豆瓣評分:8.3分
程式設計師辦公室政治指南,谷歌技術大佬以自身的經歷為基礎,闡明瞭團隊合作的重要性,提出了加強合作的具體方法,並輔以例項進行了深入分析。全文主要從三個角度介紹了團隊合作的方法:如何處理團隊中有關人的方面;如何在良好或不佳的公司中工作;如何與使用者合作創造更出眾的產品。
三、帶領團隊完成敏捷轉型
《敏捷轉型:打造VUCA時代的高效能組織》 豆瓣評分:9.2分
為了幫助更多期待轉型或者處於轉型過程中的企業走出誤區、突破阻礙,本書重點闡述了敏捷轉型的步驟、方法和策略,用大量真實的案例,生動還原敏捷轉型容易走入的誤區,以及企業在轉型過程中常見的疑惑。
四、從技術人員轉型為領導者,系統提高技術領導力
《成為技術領導者》 豆瓣評分:8.3分
很多技術人員固有思維會阻礙真正的交流,甚至忽略真正的問題,這本書能夠清晰的指出這些事情。
作為一名成功領導者所必須掌握的領導方法與技巧——創新、激勵和組織(MOI模型)。本書提出了一些方法,供技術人員分析自己在這三個方面的領導技巧,並提供了開發這些技巧所需的實踐步驟。
五、架構師也好,CTO也罷,管理團隊有時候比技術能力更重要
《人件》 豆瓣評分:8.2分
從管理人力資源、建立健康的辦公環境、僱用並留用正確的人、高效團隊形成、改造企業文化和快樂工作等多個角度,闡釋瞭如何思考和管理軟體開發的最大問題——人(而不是技術),以得到高效的專案和團隊。
本書的一個基本出發點就是,管理者不應該把員工看作冷冰冰的機器或可隨時替換的零件,而應尊重他們的生物、社會屬性,當成有血有肉的“人件”來管理。
以上列舉的20本書,雖然不能做到面面俱到,但可以從“術”的層面,為想要擺脫焦慮、走上技術進階之路的程式設計師指點迷津,鑽研出職業進階的“道”。
對於多數程式設計師來說,40歲之前賺到別人60歲的錢是普遍目標,不過職業的進階也印證著人生的進階,所以何時開始思考未來的職業規劃,都不算早。
無論你是1年小白、5年資深還是10年技術專家,或者更高階的CTO,都可以在書單中找到適合自己目前階段的書,清晰化未來要走的方向,讓你的路越走越寬,財富累積/技能累積/經驗累積也會愈發順利。
初級程式設計師(0-3年)初級程式設計師工作經驗在3年以下,處於打基礎、定方向的階段,這時候建議主要精力用於夯實基礎,規範程式設計上,將會終身受益。
一、瞭解自己所在的領域,對吃飯的工具有清晰的認知
《編碼:隱匿在計算機軟硬體背後的語言》 豆瓣評分:9.2分
這本書常年排在程式設計師必讀書單TOP5內,作者用豐富的想象將看似繁雜的計算機工作原理闡述得通俗易懂。
二、程式碼是一個程式設計師的靈魂,每個優秀的程式設計師都應該認真對待親手寫出的程式碼
《程式碼整潔之道》 豆瓣評分:8.6分
閱讀這本書有兩種原因:第一,你是個程式設計師;第二,你想成為更好的程式設計師。
作者Bob大叔給出了一系列整潔程式碼操作實踐,並用實際專案的正、反案例,說明只要遵循這些規則,就能編寫出乾淨的程式碼,從而有效提升程式碼質量。
而乾淨的程式碼,既容易理解、質量可靠,而且讓專案更容易啟動和延續,也為後期維護、升級奠定了良好基礎。
三:從實際問題出發,讓自己的程式語言和思維更上一層樓
《程式設計珠璣》 豆瓣評分:9.1
作者Jon Bentley可以說是計算機科學大家培養專業戶,Java之父James Gosling就是他的學生。
他選取了典型的複雜程式設計和演算法問題,生動描繪大師們在探索解決方案中發生的軼事、走過的彎路和不斷精益求精的歷程,總結了許多獨特而精妙的設計原則、思考和解決問題的方法以及實用程式設計技巧。比如和Bob Martin討論密西西比河一天流出多少水,用這樣一個小問題引出粗略估算的技巧。
四、多學點演算法和資料結構,提高程式設計水平
《資料結構和演算法分析(套書)》 豆瓣均分:8.7分
國內外很多大學都拿它當作教材,這套書非常系統、全面、嚴謹,適合對資料結構和演算法有些基本瞭解,並且掌握了至少一門程式語言的程式設計師。而且,作者用了C\C++\Java三種語言分別寫了三個版本。
被眾多程式設計師選為最好的演算法入門書,看完了這本書再看其它演算法書,會很有底氣。
五、初級程式設計師必備的軟技能,學習做好職業規劃、自我營銷
《軟技能—程式碼之外的生存指南》 豆瓣評分:8.0分
概括了軟體行業從業人員所需的“軟技能”,從揭秘面試的流程到精耕細作出一份殺手級簡歷,從建立大受歡迎的部落格到打造個人IP,從提高自己工作效率到與如何與“拖延症”做鬥爭,甚至包括如何投資不動產,如何關注自己的健康,堪稱程式設計師的生活百科全書。
程式設計師的第二階段:中高階程式設計師(3-5年)從部門新人變為老人後,需要對自己的職業規劃有明確方向,如果選擇專攻技術,必然要多學習,進一步提高業務能力和技術能力,積累優質的專案經驗。
一、“程式碼有很多種壞味道,重複是最壞的一種”,先讓你的程式碼更優雅
《重構:改善既有程式碼的設計》 豆瓣評分:9.0分
重構,就是在不改變外部行為的前提下,有條不紊地改善程式碼。本書凝聚了軟體開發社群專家多年實踐經驗,解釋重構的原理和最佳實踐方式,並指出何時何地應該開始挖掘你程式碼以求改善。
整本書第三章“程式碼壞味”,寫的很有用。什麼是程式碼的壞味道,如何消除這些壞味道,這是一本關於程式碼美學的一本書,培養碼農那高貴的code taste的不二選擇。
二、總有不合理的軟體專案存在,如何避免犯一些經典錯誤
《快速軟體開發》 豆瓣評分:8.4分
軟體開發處處都是陷阱,作者告訴你前人都踩了哪些坑。本書總結了以微軟為代表的美國軟體業的專案實踐經驗,並列出了可以提高專案開發速度的方法和技巧。
比如,過緊或不合理的進度計劃可能是軟體開發唯一最具破壞力的殺手,所以開發人員要提高談判能力,合理規劃專案進度。
三、技術能力之外,提高工作效率很重要
《高效程式設計師的45個習慣》 豆瓣評分:8.2分
總結高效程式設計師在開發過程中的45個個人習慣、思想觀念和方法,有助於開發人員在開發程序、編碼工作、開發者態度、專案和團隊管理,以及持續學習等方面積極修煉。
養成這些好的習慣,可以極大地提升自己的程式設計實力,更快速、更可靠地交付更高質量的軟體,從而成為真正的高效程式設計師。
四、程式設計師職業生涯到了一定階段,系統地思考職業發展
《軟技能2:軟體開發者職業生涯指南》 豆瓣評分:9.0分
瞭解軟體開發從業者需要具備的各種“軟技能”,包括如何選擇工作崗位、如何選擇技術方向、如何拓展技術技能、如何與團隊和領導融洽相處等等。
五、培養專業的軟體開發素養,具備良好的程式設計實踐
《程式設計師修煉之道:通向務實的最高境界(第2版)》 豆瓣評分:9.2分
理解身為一名程式設計師到底意味著什麼,本書透過許多富有娛樂性的奇聞軼事、有思想性的例子以及有趣的類比,全面闡釋了軟體開發的最佳實踐和重大陷阱。
書中有一章的標題是“我的原始碼被貓吃了”,其實說的是當你發現問題時,重要的是解決它,而不是把錯誤推給“貓”。
華為雲資深架構師董老師在“雲享讀書會”領讀過這本書,拆解書中精華知識,學練結合,拒絕紙上談兵。
程式設計師的第三階段:全棧工程師/軟體設計師(5-10年)這個時期的程式設計師,或多或少要開始思考職業拐點:是繼續做一名底層碼農,還是往前走兩步,成為一個優秀的全棧工程師或者軟體設計師。
無論是前後端技術一把手的全棧工程師,還是有程式設計能力的軟體設計師,都得精通多門程式語言,有系統性的技術能力。前幾年打好技術基礎後,此時更要注重技術之外的軟體開發細節,讓自己的工作更勝一籌。
一、全棧工程師必備技能之協調客戶、管理好專案
《人月神話》 豆瓣評分:8.4分
軟體領域的聖經,內容源於作者在IBM公司System/360家族和OS/360中的專案管理經驗。書名中的“人月”指的是一個人在一個月內完成的工作,“神話”指透過人手來縮短專案實踐是神話。
雖然書裡很多概念、例子、技術都屬於上古時期的遺蹟了,但是書裡介紹的軟體開發的困難、管理的思路,仍然可以在今天的軟體開發中找到對應的場景。
二、全棧工程師培養可用性思維
《點石成金 : 訪客至上的Web和移動可用性設計秘笈》 豆瓣評分:8.2分
一本關於Web設計原則而不是Web設計技術的書,作者用幽默的語言揭示Web設計中重要但卻容易被忽視的問題,只需幾個小時,便能對照書中講授的設計原則找到網站設計的癥結所在,常看常新。
三、軟體設計模式領域的里程碑著作
《設計模式》 豆瓣評分:9.1分
設計模式不是語法規定,而是一套用來提高程式碼可複用性、可維護性、可讀性以及安全性的解決方案,一般的大型專案開發或者框架設計,都會用設計模式來組織程式碼。
本書從面向物件的設計中精選出23個設計模式,面向物件開發必讀,雖然隨著動態語言的發展,很多模式都已經融入到語言當中,但是作為一個好的開發者,這本書講的不是模式本身,而是模式的軌跡。
四、轉變一下程式設計師的思維,認識互動設計的重要性
《互動設計之路》 豆瓣評分:7.9分
五、面對漫長的職業生涯,靜下心來追求“良質”
《禪與摩托車維修藝術》 豆瓣評分:8.3分
一本非典型的適合程式設計師閱讀的哲學書,霍金、喬布斯都曾推薦過。書中講述作者和兒子 騎摩托車旅遊路途所悟到的“禪”,其中最關鍵的就是“良質”。
舉個例子,寫程式跟維修摩托車一樣,有時候會枯燥、機械且乏味,但如果用“良質”的境界用心去對待這件事,找到內心的平衡,最好能達到“物我兩忘”的境界,最終的結果就是另一番局面了。
程式設計師的第四階段:架構師、CTO(10年以上)恭喜你,已經進階到程式設計師的金字塔頂端了!入行有10多年經驗的你,有過專案開發經歷,精通多門程式語言且熟悉資料庫,對行業、技術、產品都有了深層次的認識,帶好團隊成為更關鍵的業務能力。
一、為解決架構設計模式中的“疑難雜症”開啟思路
《企業應用架構模式》 豆瓣評分:8.3分
將40多種常見的解決方案轉化成模式,每個模式都給出使用方法和實現資訊,並配以詳細的Java程式碼或C#程式碼示例。
雖然書中有些內容放在現在有點過時,但如網友所言,在今天的開發思想環境下,也許再也不會出來這樣一本重量級的企業架構模式的書,甚至其中的很多模式會被覺得太重,太Java/.NET,但這才是真正的大型軟體專案應有的架構模式,值得每一個程式設計師細細品味。
二、跟著國外技術大佬學團隊管理
《極客與團隊》豆瓣評分:8.3分
程式設計師辦公室政治指南,谷歌技術大佬以自身的經歷為基礎,闡明瞭團隊合作的重要性,提出了加強合作的具體方法,並輔以例項進行了深入分析。全文主要從三個角度介紹了團隊合作的方法:如何處理團隊中有關人的方面;如何在良好或不佳的公司中工作;如何與使用者合作創造更出眾的產品。
三、帶領團隊完成敏捷轉型
《敏捷轉型:打造VUCA時代的高效能組織》 豆瓣評分:9.2分
為了幫助更多期待轉型或者處於轉型過程中的企業走出誤區、突破阻礙,本書重點闡述了敏捷轉型的步驟、方法和策略,用大量真實的案例,生動還原敏捷轉型容易走入的誤區,以及企業在轉型過程中常見的疑惑。
四、從技術人員轉型為領導者,系統提高技術領導力
《成為技術領導者》 豆瓣評分:8.3分
很多技術人員固有思維會阻礙真正的交流,甚至忽略真正的問題,這本書能夠清晰的指出這些事情。
作為一名成功領導者所必須掌握的領導方法與技巧——創新、激勵和組織(MOI模型)。本書提出了一些方法,供技術人員分析自己在這三個方面的領導技巧,並提供了開發這些技巧所需的實踐步驟。
五、架構師也好,CTO也罷,管理團隊有時候比技術能力更重要
《人件》 豆瓣評分:8.2分
從管理人力資源、建立健康的辦公環境、僱用並留用正確的人、高效團隊形成、改造企業文化和快樂工作等多個角度,闡釋瞭如何思考和管理軟體開發的最大問題——人(而不是技術),以得到高效的專案和團隊。
本書的一個基本出發點就是,管理者不應該把員工看作冷冰冰的機器或可隨時替換的零件,而應尊重他們的生物、社會屬性,當成有血有肉的“人件”來管理。
對於多數程式設計師來說,40歲之前賺到別人60歲的錢是普遍目標,不過職業的進階也印證著人生的進階,所以何時開始思考未來的職業規劃,都不算早。
以上列舉的20本書,雖然不能做到面面俱到,但可以從“術”的層面,為想要擺脫焦慮、走上技術進階之路的程式設計師指點迷津,鑽研出職業進階的“道”。