本書是一本為程序員提供成長指導(dǎo)的圖書。它涵蓋了程序員職業(yè)生涯需要面對的多種問題,并給出了實用的解決方案。本書共分為8章,第1、2 章作為一個整體模塊,幫助讀者從客觀的角度重新認(rèn)識程序員這個職業(yè),然后闡述了技術(shù)為什么是程序員成長的根基;第3~5章作為一個整體模塊,帶領(lǐng)讀者以程序員的身份融入職場,幫助讀者樹立項目全局觀,了解如何做到本色做人、角色做事,以及如何在程序員崗位上可持續(xù)發(fā)展;第6~8章作為一個整體模塊,幫助讀者了解程序員的職業(yè)發(fā)展,以及培養(yǎng)多聽多想、打開格局的思維能力和自驅(qū)力。
本書適合想要從事或剛從事程序員職業(yè)的新手和準(zhǔn)新手,以及在職業(yè)發(fā)展中遭遇瓶頸的程序員閱讀。
這是一本資深程序員的職場告白,提供實用的編程技巧和職業(yè)發(fā)展指導(dǎo),讓你在程序員的道路上走得更遠、更穩(wěn);其特色在于職場晉升與職業(yè)發(fā)展、團隊協(xié)作與溝通、程序員燈塔助力學(xué)習(xí)與創(chuàng)新。作者全網(wǎng)技術(shù)博文閱讀量超200萬。
本書是一本為程序員提供成長指導(dǎo)的圖書,涵蓋程序員在職業(yè)生涯中需要面對的多種問題,并給出實用的解決方案。本書不僅為初學(xué)者提供了基礎(chǔ)知識,還為經(jīng)驗豐富的程序員提供了新的思考方向。通過閱讀本書,讀者能夠更好地掌握程序員的技能,并在職業(yè)生涯中取得更大的成功。
本書共分為8章,分別介紹如下。
第1章先導(dǎo):重新認(rèn)識程序員這個職業(yè)
第1章是先導(dǎo)篇。很多人想做程序員,首要原因是其高額的薪資。然而,在高薪的背后,也有許多鮮為人知的壓力。程序員崗位是一個高競爭、高壓力、高淘汰的崗位,有著鮮明的崗位特點。外界對程序員有不少刻板的印象,比如不修邊幅少言木訥之類。而實際上,程序員的生活也是豐富多彩的。你是否真正走進過他們的日常生活?是否了解他們的關(guān)注點?本章帶領(lǐng)讀者打破固有認(rèn)知,重新開始建立對程序員的印象,重新認(rèn)識程序員這個職業(yè)。
第2章入門:技術(shù)是成長的根基
第2章是技術(shù)入門篇。如果想在未來從事程序員職業(yè),那么應(yīng)該從基礎(chǔ)技術(shù)入手,學(xué)習(xí)一門基礎(chǔ)的編程語言和計算機通用技術(shù)。構(gòu)建知識體系也非常重要,讀者可以不用一次構(gòu)建完成,但絕不能不做這項工作。
第3章經(jīng)驗:樹立項目全局觀
第3章是經(jīng)驗篇,旨在幫助程序員快速融入規(guī)范的軟件開發(fā)項目中。在工作中,程序員時刻面對的就是軟件開發(fā)項目。程序員是項目中非常重要的角色,一定要有全局意識,能推進流程、突破關(guān)鍵問題。本章將深入探討程序員的代碼開發(fā)工作,深入學(xué)習(xí)代碼管理、文檔管理、IDE等。本章最后將探討敏捷開發(fā),它是熱門的、科學(xué)的軟件開發(fā)方法。
第4章職業(yè):本色做人、角色做事
第4章是職業(yè)篇。作為一個專業(yè)領(lǐng)域的職場角色,程序員有自己準(zhǔn)確的定位和職責(zé)范圍。專業(yè)程序員,應(yīng)有專業(yè)的工作態(tài)度;在處理人際關(guān)系方面,應(yīng)有高情商的表現(xiàn);對于空閑時間的處理,也應(yīng)充實和有意義。
第5章進階:程序員的可持續(xù)發(fā)展
第5章是進階篇,從軟技能角度探討程序員如何可持續(xù)發(fā)展,具體內(nèi)容包括:如何實現(xiàn)代碼規(guī)范、可以參考的優(yōu)秀編程原則、如何通過自動化來實踐規(guī)范、如何提高代碼的可讀性、怎樣理解源碼即設(shè)計、如何做代碼的審查工作,以及如何落地代碼的單元測試等。
第6章升職:程序員的職業(yè)發(fā)展
第6章是升職篇。在職場中,成長的一個重要標(biāo)志是升職和加薪,這是客觀上對個人能力的肯定。程序員的職業(yè)發(fā)展同樣遵循這個規(guī)律。是在技術(shù)層面持續(xù)發(fā)力,成為技術(shù)專家,還是同時學(xué)習(xí)管理知識,向著技術(shù)管理崗位努力?程序員需要懂產(chǎn)品嗎?本章將探討這些問題。本章還會重點討論如何提升程序員素養(yǎng)、開源、學(xué)習(xí)時間管理與授權(quán)等。對升職、加薪感興趣的初、中級程序員,可重點閱讀本章。
第7章思維:多聽多想、打開格局
第7章是思維篇。作者有一句牢記在心的格言:信念產(chǎn)生行動、行動養(yǎng)成習(xí)慣、習(xí)慣生成性格、性格決定命運?梢娝枷搿⑿拍畹闹匾。首先改變思維,思維會引領(lǐng)行動,意志堅強的人,往往執(zhí)行力也不會差;有了行動之后,需要持之以恒,堅持行動能形成習(xí)慣;習(xí)慣則會塑造大腦,培養(yǎng)獨特的氣質(zhì)、性格;而性格往往決定命運,這是大家熟知的。究其根源,必須重視思維的提升,這是一個優(yōu)秀程序員與普通程序員之間最關(guān)鍵的差異之一。
程序員成長手記前言第8章自驅(qū):路遙知馬力
自驅(qū)力是個人成長中非常重要的能力,甚至可以稱它為第一能力。擁有自驅(qū)力的人,不需要別人的督促,就會主動去做自己該做的事情。他們往往有著明確的目標(biāo)和強勁的動力,懂得化被動為主動,通過努力獲取自己追求的東西。主動意味著一切,這是本章想要強調(diào)的。在本章最后,還會介紹熵增理論,探討如何通過成長來抵御生命的負(fù)熵。
三大模塊
本書8章又可以進一步劃分為三大模塊。每個模塊的側(cè)重點不同。
其中,第一模塊(第1、2章)側(cè)重于打破認(rèn)知、新手入門,帶領(lǐng)讀者重新認(rèn)識程序員這個職業(yè)角色,介紹程序員基礎(chǔ)技術(shù)要素。
第二模塊(第3~5章)側(cè)重于職場融入、技術(shù)進階,帶領(lǐng)讀者融入程序員職場,幫助讀者樹立項目全局觀,以便與各角色的協(xié)作如魚得水、在各類問題的處理上游刃有余。
第三模塊(第6~8章)側(cè)重于思維提升、自驅(qū)成長,帶領(lǐng)讀者突破成長瓶頸,建立方法論,打開認(rèn)知格局,持續(xù)精進。
三個模塊層級是遞進關(guān)系。
定位
首先,本書的定位是一本手記。
既然是手記,那么本書按照排檢法把有關(guān)知識、資料、事實等加以匯編,供讀者隨手查考。所以,作者建議讀者先認(rèn)真閱讀本書目錄,了解大致脈絡(luò),再進一步閱讀。這樣能讓讀者做到心中有數(shù),在需要查閱的時候,快速、準(zhǔn)確定位內(nèi)容,收獲想要的答案。
其次,本書還定位為一本關(guān)于程序員軟技能的書。
何謂軟技能?軟技能與硬技能相對應(yīng)。硬技能是指程序開發(fā)必須掌握的專業(yè)知識。它的內(nèi)容往往是明確的、可說的、易傳播的,比如計算機操作系統(tǒng)、數(shù)據(jù)庫、計算機網(wǎng)絡(luò)、編程語言等知識。硬技能水平的高低是可以量化的。
關(guān)于程序員硬技能,比較有名的圖書有《算法導(dǎo)論》《深入理解Java虛擬機》《JavaScript高級程序設(shè)計》等。
軟技能則是可定性感受的一種能力,很難量化,比如表達能力、管理能力、組織能力、理解能力、架構(gòu)設(shè)計能力、編程思想水平、代碼編寫習(xí)慣、文檔寫作水平等專業(yè)相關(guān)能力。關(guān)于軟技能,無法直截了當(dāng)?shù)亟o出確切、客觀的評價,只能根據(jù)感覺在一個相對范圍內(nèi)給出觀點,比如我們會說用這樣的設(shè)計模式重構(gòu)代碼會讓代碼更可讀,而不會說用這樣的設(shè)計模式重構(gòu)代碼會讓代碼90%可讀。
關(guān)于軟技能,比較有名的書有《人月神話》《代碼整潔之道》《軟技能:代碼之外的生存指南》《納瓦爾寶典:財富與幸福指南》《非暴力溝通》等。
軟技能與硬技能,孰更重要?
作者認(rèn)為:同等重要。
猿小兔和猿山羊
為了增加閱讀的趣味性,本書還帶來了兩位漫畫朋友:猿小兔和猿山羊。
猿小兔是一名程序員小白,像很多新手一樣,她對學(xué)習(xí)編程技術(shù)懷有極大的熱情,但由于缺乏經(jīng)驗、知識儲備較少,因此仍處于技術(shù)學(xué)習(xí)的初期。在本書中,她主要扮演提問者,提出一些閱讀本書時可能遇到的問題與困惑。同時,她也是一位勤奮的閱讀者,在適當(dāng)?shù)臅r候,還會總結(jié)心得,以便與其他讀者分享。有了她的陪伴,讀者在程序員成長道路上應(yīng)該不會感到孤單。
猿山羊是一名資深程序員,擁有多年編程工作經(jīng)驗。他深諳程序員成長之道,對程序員各個時期遇到的成長問題有很透徹的理解。在本書中,他主要負(fù)責(zé)解答猿小兔的提問,并且在適當(dāng)?shù)臅r候給出學(xué)習(xí)重點,以及提出一些引發(fā)讀者深度思考的問題。猿山羊豐富的經(jīng)驗一定能幫助讀者少走彎路。
本書的目標(biāo)讀者
作者將本書目標(biāo)讀者大致分為以下五類。
第一類:想要未來從事程序員職業(yè)的學(xué)生。
第二類:想要轉(zhuǎn)崗做程序員的其他職場人士。
第三類:程序員新手。
第四類:職業(yè)發(fā)展遭遇瓶頸的程序員。
第五類:關(guān)注程序員成長話題的人。
交流與反饋
由于水平有限,書中錯漏之處在所難免,懇請廣大讀者批評指正。作者也非常愿意在書本之外,和讀者進行更多的溝通、交流。
這里提供以下五個交流、反饋方式。
① 作者微信:anthony1453
② QQ 群:905500072
③ GitHub issues 留言:https://github.com/TUARAN/Programmer-s-Growth-Manual/issues
④ 作者個人博客留言:https://tuaran.github.io/
⑤ 作者掘金社區(qū)主頁留言:https://juejin.cn/user/1521379823340792
作者鄭重承諾:你留下的每一句話都會被看到、被認(rèn)真思考和被回復(fù)。讀者的點滴建議是作者巨大的財富。
雄關(guān)漫道真如鐵,而今邁步從頭越,你我共勉。
涂阿燃,51CTO社區(qū)專家博主,資深程序員,深耕前端編程、人工智能領(lǐng)域掘金技術(shù)社區(qū)簽約作者、社區(qū)共建者、優(yōu)秀創(chuàng)作者,互聯(lián)網(wǎng)技術(shù)社區(qū)熱門博主,全網(wǎng)博客文章300余篇,全網(wǎng)閱讀量200余萬。
作者序
前言
第1章先導(dǎo):重新認(rèn)識程序員這個職業(yè)
1.1高薪的背后
1.1.1外界對程序員的刻板印象
1.1.2程序員的工作日常
1.2程序員獨特的職業(yè)氣質(zhì)
1.2.1對技術(shù)充滿熱忱
1.2.2追求卓越
1.2.3用代碼說話
1.2.4讀寫文檔
1.2.5求真務(wù)實
1.3優(yōu)秀的程序員
1.3.1國內(nèi)優(yōu)秀程序員
1.3.2國外優(yōu)秀程序員
1.3.3程序員的視野
第2章入門:技術(shù)是成長的根基
2.1學(xué)一門編程語言
2.1.1編程語言發(fā)展史
2.1.2編程語言分類及介紹
2.1.3編程語言學(xué)習(xí)要義
2.1.4學(xué)習(xí)目標(biāo)與態(tài)度
2.2計算機基礎(chǔ)技術(shù)
2.2.1計算機網(wǎng)絡(luò)基礎(chǔ)
2.2.2計算機組成基礎(chǔ)
2.2.3操作系統(tǒng)基礎(chǔ)
2.2.4數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)
2.2.5數(shù)據(jù)庫基礎(chǔ)
第3章經(jīng)驗:樹立項目全局觀
3.1軟件開發(fā)通用項目管理流程
3.1.1通用項目管理中的崗位角色
3.1.2通用項目管理流程
3.1.3項目管理工具推薦
3.2代碼管理及文檔管理
3.2.1代碼管理工具
3.2.2Git流程及常用操作
3.2.3文檔管理要點及工具
3.2.4Markdown使用指南
3.3在線協(xié)作及IDE
3.3.1在線協(xié)作工具資源
3.3.2花更多時間學(xué)習(xí)IDE
3.4敏捷開發(fā)
3.4.1敏捷開發(fā)定義
3.4.2敏捷軟件開發(fā)宣言
第4章職業(yè):本色做人、角色做事
4.1工作態(tài)度
4.1.1如何對接不同角色的工作
4.1.2對事不對人
4.1.3工作責(zé)任心
4.1.4技術(shù)人的態(tài)度
4.2人際關(guān)系
4.2.1完成大于完美
4.2.2團隊的重要性
4.2.3溝通促進合作
4.3持續(xù)學(xué)習(xí)
4.3.1學(xué)習(xí)方法論
4.3.2費曼學(xué)習(xí)法
4.3.3尋找學(xué)習(xí)途徑
4.3.4獲取學(xué)習(xí)資源
4.4程序員的日常生活
4.4.1工位好物推薦
4.4.2空閑時間管理
第5章進階:程序員的可持續(xù)發(fā)展
5.1代碼規(guī)范
5.1.1優(yōu)秀的編程原則
5.1.2童子軍規(guī)則
5.1.3代碼風(fēng)格指南
5.1.4代碼注釋規(guī)范
5.2代碼可讀性
5.2.1函數(shù)式編程
5.2.2封裝
5.2.3如何寫好注釋
5.2.4代碼分析工具
5.2.5臨時解決方案的持久性
5.3源碼即設(shè)計
5.3.1技術(shù)負(fù)債
5.3.2簡單即美
5.3.3復(fù)用思維
5.3.4設(shè)計模式
5.3.5設(shè)計黃金法則
5.3.6高內(nèi)聚、低耦合
5.3.7謹(jǐn)慎對待設(shè)計的隱形
5.4代碼評審
5.4.1代碼評審策略
5.4.2代碼評審?fù)ㄓ霉ぞ?br />5.4.3代碼評審的項目實踐
5.4.4代碼評審分享
5.5代碼單元測試
5.5.1單元測試的意義
5.5.2單元測試怎么做
5.5.3單元測試要點
第6章升職:程序員的職業(yè)發(fā)展
6.1程序員也要懂產(chǎn)品
6.1.1參與產(chǎn)品建設(shè)
6.1.2觀察用戶
6.1.3人人都是產(chǎn)品經(jīng)理
6.2程序員素養(yǎng)提升
6.2.1優(yōu)先自我檢查
6.2.2開發(fā)并非人越多越好
6.2.3讓項目說話
6.2.4從說yes開始
6.2.5了解技術(shù)的背后
6.2.6學(xué)習(xí)人文知識
6.3開源實現(xiàn)夢想
6.3.1開源的魅力
6.3.2開源協(xié)議
6.3.3開源途徑
6.3.4開源技巧
6.4學(xué)習(xí)時間管理與授權(quán)
6.4.1時間統(tǒng)籌
6.4.2任務(wù)委派
6.4.3結(jié)合技術(shù)和管理
第7章思維:多聽多想、打開格局
7.1切勿急于求成
7.1.1借助外腦
7.1.2程序員也要很努力
7.1.3關(guān)于造輪子這件事
7.1.4放下鼠標(biāo)、離開鍵盤適當(dāng)休息
7.2敢于打破思維定式
7.2.1克蘇魯神話克服恐懼
7.2.2給出編碼理由
7.2.3不要輕易相信自己的假設(shè)
7.2.4代碼炸彈
7.3對代碼進行終身維護
7.3.1關(guān)心自己的代碼
7.3.2成為編碼專家
7.3.3工匠精神
第8章自驅(qū):路遙知馬力
8.1主動意味著很多
8.1.1機會是主動創(chuàng)造出來的
8.1.2主動更新技術(shù)棧
8.2自驅(qū)是進步的原動力
8.2.1長期主義欲速則不達
8.2.2厚積而薄發(fā)注重積累
8.3成長即負(fù)熵本身
8.3.1接受多元化
8.3.2熵增理論
8.3.3成長型程序員
附錄
附錄AAIGC浪潮
A.1ChatGPT的背后
A.2人工智能的發(fā)展
A.3國內(nèi)AIGC發(fā)展現(xiàn)狀
附錄B專業(yè)術(shù)語
B.1程序員常用專業(yè)術(shù)語
B.2互聯(lián)網(wǎng)術(shù)語
后記