前言
本書是一本為程序員提供成長指導的圖書,涵蓋程序員在職業生涯中需要面對的多種問題,并給出實用的解決方案。本書不僅為初學者提供了基礎知識,還為經驗豐富的程序員提供了新的思考方向。通過閱讀本書,讀者能夠更好地掌握程序員的技能,并在職業生涯中取得更大的成功。
本書共分為8章,分別介紹如下。
第1章 先導:重新認識程序員這個職業
第1章是先導篇。很多人想做程序員,首要原因是其高額的薪資。然而,在高薪的背后,也有許多鮮為人知的壓力。程序員崗位是一個高競爭、高壓力、高淘汰的崗位,有著鮮明的崗位特點。外界對程序員有不少刻板的印象,比如“不修邊幅”“少言木訥”之類。而實際上,程序員的生活也是豐富多彩的。你是否真正走進過他們的日常生活?是否了解他們的關注點?本章帶領讀者打破固有認知,重新開始建立對程序員的印象,重新認識程序員這個職業。
第2章 入門:技術是成長的根基
第2章是技術入門篇。如果想在未來從事程序員職業,那么應該從基礎技術入手,學習一門基礎的編程語言和計算機通用技術。構建知識體系也非常重要,讀者可以不用一次構建完成,但絕不能不做這項工作。
第3章 經驗:樹立項目全局觀
第3章是經驗篇,旨在幫助程序員快速融入規范的軟件開發項目中。在工作中,程序員時刻面對的就是軟件開發項目。程序員是項目中非常重要的角色,一定要有全局意識,能推進流程、突破關鍵問題。本章將深入探討程序員的代碼開發工作,深入學習代碼管理、文檔管理、IDE等。本章最后將探討敏捷開發,它是熱門的、科學的軟件開發方法。
第4章 職業:本色做人、角色做事
第4章是職業篇。作為一個專業領域的職場角色,程序員有自己準確的定位和職責范圍。專業程序員,應有專業的工作態度;在處理人際關系方面,應有高情商的表現;對于空閑時間的處理,也應充實和有意義。
第5章 進階:程序員的可持續發展
第5章是進階篇,從軟技能角度探討程序員如何可持續發展,具體內容包括:如何實現代碼規范、可以參考的優秀編程原則、如何通過自動化來實踐規范、如何提高代碼的可讀性、怎樣理解“源碼即設計”、如何做代碼的審查工作,以及如何落地代碼的單元測試等。
第6章 升職:程序員的職業發展
第6章是升職篇。在職場中,成長的一個重要標志是升職和加薪,這是客觀上對個人能力的肯定。程序員的職業發展同樣遵循這個規律。是在技術層面持續發力,成為技術專家,還是同時學習管理知識,向著技術管理崗位努力?程序員需要懂產品嗎?本章將探討這些問題。本章還會重點討論如何提升程序員素養、開源、學習時間管理與授權等。對升職、加薪感興趣的初、中級程序員,可重點閱讀本章。
第7章 思維:多聽多想、打開格局
第7章是思維篇。作者有一句牢記在心的格言:“信念產生行動、行動養成習慣、習慣生成性格、性格決定命運。”可見思想、信念的重要性。首先改變思維,思維會引領行動,意志堅強的人,往往執行力也不會差;有了行動之后,需要持之以恒,堅持行動能形成習慣;習慣則會塑造大腦,培養獨特的氣質、性格;而性格往往決定命運,這是大家熟知的。究其根源,必須重視思維的提升,這是一個優秀程序員與普通程序員之間最關鍵的差異之一。
第8章 自驅:路遙知馬力
自驅力是個人成長中非常重要的能力,甚至可以稱它為“第一能力”。擁有自驅力的人,不需要別人的督促,就會主動去做自己該做的事情。他們往往有著明確的目標和強勁的動力,懂得化被動為主動,通過努力獲取自己追求的東西?!爸鲃右馕吨磺小?,這是本章想要強調的。在本章最后,還會介紹“熵增理論”,探討如何通過成長來抵御生命的負熵。
三大模塊
本書8章又可以進一步劃分為三大模塊。每個模塊的側重點不同。
其中,第一模塊(第1、2章)側重于打破認知、新手入門,帶領讀者重新認識程序員這個職業角色,介紹程序員基礎技術要素。
第二模塊(第3~5章)側重于職場融入、技術進階,帶領讀者融入程序員職場,幫助讀者樹立項目全局觀,以便與各角色的協作如魚得水、在各類問題的處理上游刃有余。
第三模塊(第6~8章)側重于思維提升、自驅成長,帶領讀者突破成長瓶頸,建立方法論,打開認知格局,持續精進。
三個模塊層級是遞進關系。

定位
首先,本書的定位是一本手記。
既然是手記,那么本書按照排檢法把有關知識、資料、事實等加以匯編,供讀者隨手查考。所以,作者建議讀者先認真閱讀本書目錄,了解大致脈絡,再進一步閱讀。這樣能讓讀者做到心中有數,在需要查閱的時候,快速、準確定位內容,收獲想要的答案。
其次,本書還定位為一本關于程序員軟技能的書。
何謂軟技能?軟技能與硬技能相對應。硬技能是指程序開發必須掌握的專業知識。它的內容往往是明確的、可說的、易傳播的,比如計算機操作系統、數據庫、計算機網絡、編程語言等知識。硬技能水平的高低是可以量化的。
關于程序員硬技能,比較有名的圖書有《算法導論》《深入理解Java虛擬機》《JavaScript高級程序設計》等。
軟技能則是可定性感受的一種能力,很難量化,比如表達能力、管理能力、組織能力、理解能力、架構設計能力、編程思想水平、代碼編寫習慣、文檔寫作水平等專業相關能力。關于軟技能,無法直截了當地給出確切、客觀的評價,只能根據感覺在一個相對范圍內給出觀點,比如我們會說“用這樣的設計模式重構代碼會讓代碼更可讀”,而不會說“用這樣的設計模式重構代碼會讓代碼90%可讀”。
關于軟技能,比較有名的書有《人月神話》《代碼整潔之道》《軟技能:代碼之外的生存指南》《納瓦爾寶典:財富與幸福指南》《非暴力溝通》等。
軟技能與硬技能,孰更重要?
作者認為:同等重要。
猿小兔和猿山羊
為了增加閱讀的趣味性,本書還帶來了兩位漫畫朋友:猿小兔和猿山羊。

猿小兔是一名程序員“小白”,像很多新手一樣,她對學習編程技術懷有極大的熱情,但由于缺乏經驗、知識儲備較少,因此仍處于技術學習的初期。在本書中,她主要扮演提問者,提出一些閱讀本書時可能遇到的問題與困惑。同時,她也是一位勤奮的閱讀者,在適當的時候,還會總結心得,以便與其他讀者分享。有了她的陪伴,讀者在程序員成長道路上應該不會感到孤單。

猿山羊是一名資深程序員,擁有多年編程工作經驗。他深諳程序員成長之道,對程序員各個時期遇到的成長問題有很透徹的理解。在本書中,他主要負責解答猿小兔的提問,并且在適當的時候給出學習重點,以及提出一些引發讀者深度思考的問題。猿山羊豐富的經驗一定能幫助讀者少走彎路。
本書的目標讀者
作者將本書目標讀者大致分為以下五類。
第一類:想要未來從事程序員職業的學生。
第二類:想要轉崗做程序員的其他職場人士。
第三類:程序員新手。
第四類:職業發展遭遇瓶頸的程序員。
第五類:關注程序員成長話題的人。

交流與反饋
由于水平有限,書中錯漏之處在所難免,懇請廣大讀者批評指正。作者也非常愿意在書本之外,和讀者進行更多的溝通、交流。
這里提供以下五個交流、反饋方式。
①作者微信:anthony1453
②QQ群:905500072
③GitHub issues留言:https://github.com/TUARAN/Programmer-s-Growth-Manual/issues
④作者個人博客留言:https://tuaran.github.io/
⑤作者掘金社區主頁留言:https://juejin.cn/user/1521379823340792
作者鄭重承諾:你留下的每一句話都會被看到、被認真思考和被回復。讀者的點滴建議是作者巨大的財富。
“雄關漫道真如鐵,而今邁步從頭越”,你我共勉。
編者