易燃物匯聚 YouTube 有聲書與書評
大話程序員:從入門到優秀全攻略 封面

大話程序員:從入門到優秀全攻略

安曉輝

1827人在讀
14萬字總字數
¥38.35定價

內容簡介

本書分爲選擇、修煉、面試和職場基本功四部分。第一部分有3章,分別是軟件開發工程師一覽,你適合做軟件開發嗎,選擇適合你的方向。從職業規劃和發展的角度,提供了一些工具、方法和模型,幫助我們解答是否要從事軟件開發、幹什麼崗位、在什麼樣的行業和公司工作等問題。第二部分有2章。開發者的職場成長路徑一章介紹了開發者的未來發展方向,讓大家對自己的職場發展路徑有所認識;技術成長指北一章提供了一種技術修煉的模板方法論,每個人都可以將其用到自己身上,變成自己的技術修煉道路。第三部分,講述瞭如何打好面試這場硬仗,分澄清、準備、面試、覆盤四個階段,系統介紹瞭如何準備一次求職面試,善用之,能夠大幅提高面試的成功率。第四部分,我們跳出開發者的技術性工作,精選了日常職場中頻繁用到的10種職場基本功,包括結果導向的工作思維,結論先行的彙報策略,溝通中如何區分事實和判斷,如何請求幫助,怎樣給別人反饋,如何追隨上司,怎樣超越上司的期待,如何堅持計劃實現目標,怎樣突破成長困境,以及職業規劃的3個錦囊。這些思維、方法、意識和工具,能夠爲技術之路保駕護航,讓我們走得更高、更遠。

讀者書評

★★★☆☆

我們的成長分兩個維度:學習和行動。 學習指導實踐,實踐反過來促進學習,螺旋前進。 如果你一直不停地做事情但沒什麼提高,就停下來反思一下,看看是不是沒有好好學習,沒有看到大的格局,沒有用正確的方法去做事;如果你一直不停地學習各種知識、各種方法,但解決現實問題的能力卻沒什麼變化,那就停下來反思一下,是不是自己把學習當成了逃避的手段,缺乏必要的行動。

★★★★★

感覺自己讀到這本書再早兩年就好了。 在之前的位置已經茫然兩年,兩年的沒有能找到合適的目標去成長。 而一場疫情讓我跳出了圈子,否則我應該還在圈子中徘徊。 這本書給我以找到目標的方法。相信我會在2020年有新的改變。一切會更好的。 推薦給所有人閱讀,不限於程序員,書中很多內容對所有人都會有幫助,越早看到收穫會越大。 加油!

★★★★★

實用性極強,句句是乾貨,雖然我不是這個行業的,不是程序員,但是職場的知識很多都是相通的,給程序員看的書一般比較理性和具體,通俗易懂又實用。

★★★★★

真的是一本很好的書,早點讀就好了,至少從思維上有所改變,現在回憶早點讀能讓自己少走很多彎路。此書不限於程序員,任何人都能讀,站在不同的思維角度讀一讀更能有不同的效果。

★★★★★

摘錄:“你在一個平臺上做事情,一定要想清楚,哪些是平臺的能力,哪些是你個人的能力,只有個人的能力纔是你隨時可以帶走的,纔是可以跟着你轉戰南北的。所以,你一定要想想,假如3年後你離開公司,你擁有什麼?會變成什麼樣子?你靠什麼找到下一個機會?”

★★★★★

大話程序員:從入門到優秀全攻略 安曉輝 ◆ 1.3 軟件開發工程師的收入現狀 >> 1.3 軟件開發工程師的收入現狀 本節的具體數據來自國家統計局官網(http://www.stats.gov.cn/tjsj/zxfb/201705/t20170527_1498372.html)。 2016年城鎮非私營單位就業人員分行業年平均工資 ◆ 1.4 軟件開發工程師未來十年還會有這麼高的收入嗎 >> 中國IT行業(信息傳輸、軟件和信息技術服務業)的加速發展,大概從1997年開始,最早是PC互聯網、產業信息化,後來是移動互聯網,現在是互聯網+,再接下來是物聯網、智慧城市、智慧交通、人工智能,一路蓬勃發展,雖有小波折, >> 1.4.2 國家規劃 信息技術和網絡經濟是國家戰略規劃的重點,國家層面將會提供各種政策、資金、資源的支持,保障它快速、廣泛的發展。互聯網+、大數據、人工智能將是重中之重。 ◆ 第2章 你適合做軟件開發嗎? >> 第2章 你適合做軟件開發嗎? 一個人可以做很多事情,但是一定有一些事情更喜歡做,做起來也更得心應手,當你做這些事情時,也更容易做出成績。 這些事情所在的區域,就是你的甜蜜區—愛好、擅長、世界需要的交叉地帶。 在甜蜜區做事情,人會更容易獲得意義感、價值感、成就感。通過把時間和精力投入到你的甜蜜區,就可以讓你真正精通某個領域,打造出自己的長板。 要給自己定位,找到自己的甜蜜區有很多方法,我們這裏介紹幾種常用的方法。 ◆ 工作的三種維度。 ◆ MBTI性格測評。 ◆ 五大職能定位。 ◆ HBDI模型。 同時我們還會介紹一些程序開發者必備的性格特徵,給大家看看優秀開發者所需的能力。最終,希望大家藉助這些方法,分析一下自己,看看自己是否適合做軟件開發。 ◆ 2.1 工作的三種維度 >> 2.1 工作的三種維度 根據交互對象不同,工作可分爲三類。 ① 數據和信息處理。 ② 人際互動。 ③ 事務型操作。 假如你發現自己更願意圍繞着人際交互來做事情,希望自己的工作中大部分時間都在和人打交道,那可能你更適合做管理、銷售、市場、客服、諮詢師等方面的工作。 假如你發現自己更願意做事務性操作類的工作,例如修理計算機、組裝計算機、搭建局域網、修理汽車等,那軟件開發工作可能不太適合你,“運維”或者“網管”也許與你更匹配。 假如你覺得數據和信息很迷人,很享受與數據和信息之間這種確定性、一致性、可預期性較高的互動方式,也很享受通過組織、修改、整合、創造信息來解決問題的這種工作方式,那你現在正在做的開發工作,基本上和你的偏好是吻合的—因爲開發者偏重與數據和信息打交道,以信息和數據爲“輸入”,也以信息和數據爲“輸出”。 >> 根據交互對象不同,工作可分爲三類。 ① 數據和信息處理。 ② 人際互動。 ③ 事務型操作。 ◆ 2.2 MBTI性格測評 >> 從性格適應性上來講,性格類型的中間兩個字母是NT和ST的人與軟件開發工作更爲匹配,例如INTJ、INTP、ENTP、ENTJ、ISTJ、ISTP、ESTP、ESTJ。 從我身邊的開發者羣體來看,INTJ、ISTJ、INTP、ISTP這幾種類型的人偏多,即內傾者偏多。 ◆ 2.3 五大職能定位 >> 需要特別注意的是,就軟件開發領域來講,很少有一進來就成爲管理者的,大部分的技術管理人員都是先做了一段時間技術工作之後,再轉型成爲管理者的。要從開發者轉型到技術管理者,有技而優則仕、打雜、降維、考取PMP證書等幾種方法,具體可以參考我的另一本書《程序員的成長課》。 ◆ 2.4 HBDI模型 ◆ 2.5 程序開發者必備的性格特徵 >> 傑拉爾德·溫伯格(Gerald M. Weinberg)是我特別喜歡的軟件專業作家和思想家,他的技術思想三部曲—《程序開發心理學》《成爲技術領導者》《顛覆完美軟件》,值得每一位想從事軟件開發工作的朋友反覆閱讀。 ◆ 2.6 優秀開發者的必備能力 >> 例如我個人學習編程語言的模式爲:“看書→練習→做實驗→寫文章輸出→做綜合性項目→回顧……”。 >> 總分(包含)關係、對比關係、主次關係、因果關係、時序關係、等級關係、並列關係、遞進關係、循環關係等,都是邏輯關係。 >> 培養邏輯思考力的7大基本方法。 ① 使解決問題的過程透明化。 ② 三角邏輯(結論、論據、數據)。 ③ 歸納法。 ④ 演繹法。 ⑤ MECE。 ⑥ 邏輯樹。 ⑦ 5W2H >> 分析問題時有很多常見的方法可以使用,例如排除法、類比法、極端法、試錯法、魚骨圖分析法、SWOT分析法、5W2H分析法、六頂思考帽等, >> 從這個定義來看,漫無目的地閒聊並不是溝通;自上而下的命令也不是溝通;單方面的告知不是溝通;沒有結果的對話不是溝通;旁敲側擊風格的領導談話還不是溝通…… 因爲它們都不滿足溝通的三個關鍵點:目標、方式、共同協議。 >> ◆ 《溝通的藝術:看入人裏,看出人外》。 ◆ 《關鍵對話》。 ◆ 《非暴力溝通》。 ◆ 《溝通聖經:聽說讀寫全方位溝通技巧》。 ◆ 《所謂情商高就是會說話》(佐佐木圭一著)。 ◆ 《蔡康永的說話之道》。 ◆ 《影響力》。 >> 《OKR工作法》《只管去做:讓你迅速實現增值的目標管理法》和《目標管理實務手冊》。 >> 信息檢索能力強的人,能夠: ◆ 準確描述自己的問題,提取問題關鍵詞。 ◆ 組合使用合適的工具來尋找答案,例如官方WIKI、論壇、文檔、手冊、郵件組、Google、Stack Overflow、CodeGuru、CodeProject、源碼等。 ◆ 有效提問。 網絡上有一篇名爲“提問的智 ◆ 3.1 通用邏輯:選擇大於努力 >> 選擇大於努力,這於我是“多麼痛的領悟”! >> ① 進入好的領域(行業),跟着大的趨勢走。趨勢對了,你什麼都不做都可能比那個入錯行的程序員發展得好。 ② 選擇領域(行業)內領先的公司。行業內TOP 5的公司是引領這個行業發展趨勢的,進入這樣的公司你獲得好發展的概率又高了很多。 >> 先選領域,再選公司” >> 綜合以上3點,就是開發者職業選擇的通用邏輯—先選領域,後選公司,再選崗位。 >> 目前我個人比較看好的領域有(不分先後): ◆ 互聯網。 ◆ 大數據和人工智能。 ◆ 電商。 ◆ 醫療。 ◆ 教育。 ◆ 文娛(含遊戲)。 ◆ 體育。 ◆ 旅遊。 ◆ 金融和保險。 ◆ 智慧城市。 ◆ 高端製造。 ◆ 交通。 ◆ 3.3 根據場景對開發者的分類 >> 雲、傳、端的劃分,對我們選擇軟件公司或開發崗位有非常大的幫助 3.4 根據應用層次對開發者分類 根據軟件與硬件的距離,可以將其分爲3個不同的層次。 ① 底層軟件。 ② 系統軟件。 ③ 應用層軟件。 3.5 研究型與應用型開發者 我們在這裏所說的研究型工程師,主要從事的方向有兩類,一類是複雜產品或大型工程項目的研究、開發,另一類是算法和工程科學等基礎性的研究。在軟件開發領域,現在我們熟知的是與算法相關的研究。 與研究型工程師對應的是應用型工程師,主要從事軟件產品或服務的設計與開發,其工作更多的是面向問題域,根據特定的業務設計做出相應的軟件。 3.6 自頂向下的機會選擇模型 領域相當於水域。 公司相當於船隻。 、傳、端三部分的開發工程師又可以分爲應用型和研究型。研究型門檻高、難度大,但回報高,也更能抵抗年齡帶來的價值衰減,這種類型的崗位往往要求有更高的數學基礎和研究能力,有這方面傾向的人可以選擇。應用型的崗位與業務接觸緊密,其着眼點爲如何用技術更好地實現業務,因而業務需求的變化會帶來軟件層面的連鎖變化。應用型的開發工程師數量衆多,競爭激烈,工作8年到10年的“老司機”,如果修爲不到,做事情的效率和產出的質量往往和入行兩三年的開發者類似,很容易被替代,這就是所謂的青春飯。應對的思路是,在編程能力、業務能力、軟件設計能力和工程能力四個維度上打造核心競爭力,向技術專家、架構師、技術+業務或技術管理這幾個方向發展。 在實際工作中,很多人往往持着技術決定論或唯技術論,覺得去哪裏工作沒關係,只要能用上自己掌握的某種技術即可。這種想法在剛入行的1~3年特別普遍,因爲企業招募這個階段的開發者時也會優先談技術。 如果你處在這個階段,面對的現實也是技術決定論,那麼,請你在選擇機會時,一面兼顧擅長的技術,一面考慮公司業務所處的領域和公司在該領域內的地位,因爲這樣的機會對個人的發展更有利。 4.1 全路徑圖 相當比例的人在高原期待上一段時間就會倦怠,覺得自己就這樣了,不可能再有什麼突破,於是就無所謂了,喪失了提升的動力,工作沒那麼積極投入了,有事兒乾乾,沒事兒混混,成了被動型的、混日子的“老司機”。 另有一小部分人可能會走向管理崗位。走向管理崗位有很多方式,具體請閱讀我的另一本書《程序員的成長課》。 4.2 普通程序員 具備軟件設計能力的表現有以下3點。 ① 熟悉(諸如單一職責原則、開放封閉原則、里氏替換原則、依賴倒置原則、接口分離原則、迪米特法則等)常見的軟件設計原則。 ② 熟悉常見的編程慣用法和設計模式(例如GoF的23種設計模式)。 ③ 能夠主動地、有意識地在編程實踐中應用軟件設計原則。 4.4 精通技術和業務的高級開發者 大家提到Qt第一時間就會想到我,我也因此擁有了一個標籤,顯得“高級”起來。 4.6 技術專家 以賣油翁和庖丁來類比軟件開發領域的技術專家,我們發現,他們至少要具備下列特徵,纔可能被稱爲專家。 ◆ 擁有某一細分技術領域完備的顯性知識。 ◆ 擁有某一細分技術領域經驗性的、只可意會不可言傳的隱性知識。 ◆ 擁有自己的方法論,做事自有章法。 ◆ 內化了各種套路和知識,遇到自己熟知領域的問題時,反應敏捷,不假思索,一觸即發。 ◆ 擁有高超的實踐能力,可以運用顯性知識和隱性知識,探尋更個性化、有創造力的解決問題的方法。 專家的要求相當高,專家的數量相當少。 可能獲得“某種技術就他能完成”的標籤。你在組織中建立了標籤,纔可能獲得更多的機會。 《程序員修煉之道:從小工到專家》和《程序員思維修煉》 4.7 架構師 軟件架構師要做的幾類事情。 ◆ 理解業務。 ◆ 設計軟件架構。 ◆ 選擇合適的技術。 ◆ 執行架構。 ◆ 軟件開發過程的管理與優化。 ◆ 培養員工。 ◆ 保障組織的技術先進性。 4.8 技術管理者 《代碼之道》一書中說:“成爲一名優秀的管理者,所有你要做的就是確保你的人能夠工作,並且把他們當人(而不是資源)去對待。” 4.9 技術Leader:技術和管理哪個重要 最後,推薦4本書:《程序員的成長課》《成爲技術領導者》《橫向領導力》和《帶人的技術:不懂帶人你就自己做到死!》。 5.1 技術成長三階段 技術領域內的成長分爲三個階段。 ① 專項能力的提升。 ② 技能體系的構建。 ③ 融合創新。 ◆ 能熟練搭建需要的開發和測試環境。 ◆ 熟悉所用編程語言的基礎語法,有這門語言的知識地圖,熟悉該語言本身的各種基礎功能,瞭解這門語言的高級功能。 ◆ 能調用已有技術框架的API來實現特定功能。 ◆ 能在實現同一功能的多組API之間選擇合適的那一組。 ◆ 能熟練使用開發環境和各種輔助工具進行調試。 ◆ 可以解決易復現的、邏輯簡單的軟件Bug。 ◆ 能自主學習某個新框架的基礎API,能參考DEMO完成某個功能的基本實現。 是否擁有知識體系,可以把熟練開發者和普通開發者區別開。 5.2 專項能力修煉 有些你看不起的“笨功夫”一定不能省!對於編程來講,你省去了記憶關鍵詞這一步,你就: ◆ 不知道如何在IDE中輸入開頭那幾個字母,就無法利用IDE的智能提示。 ◆ 不知道在網上搜索問題時用什麼關鍵字。 ◆ 無法建立起關鍵詞和功能特性之間的關聯,在遇到問題時就無法第一時間反應並分析。 記住關鍵詞和與它關聯的功能特性,就是曾國藩訓練湘軍時的“結硬寨”,是硬功夫,絕不能省。 5.3 構建知識體系 理想的狀況應該是:先在某個方向上持續積累,有了深度之後,再向外延伸做寬度。 所以,如果你想讓自己的技術水平持續、有效、快速地提升,應當靜下心來,選擇一個方向深耕一段時間。 這也是我們在本章開始指出的:知識體系是熟練開發者和普通程序員的關鍵區別。 開發者如何構建自己的知識體系。用一句話概括是這樣的:先場景輻射,再信息關聯,然後梳理整合,構成以應用場景爲中心的知識體系。分步驟來講的話,有4個: ① 先定位,找到應用場景。 ② 以應用場景爲中心,全面輻射,蒐集和這個場景相關的知識。 ③ 對每一個知識做關聯運算,找到相關知識。 ④ 梳理整合,形成以應用場景爲中心的知識體系。 忽略了最重要的一個常識:技術是爲解決問題而生的。 由此可見,在選擇職業發展方向時,正確的決策順序是: ① 我要做什麼產品、服務,我要解決什麼問題。 ② 這個產品、服務、問題需要什麼技能。

★★★★☆

有很多程序員工作了幾年卻基本沒看過程序員相關的書籍, 如果你也是這樣,那這本書適合作爲第一本.它就像一個導覽地圖, 從多個方面指引你前進! 而當你學會了SOP, GTD, 微習慣, 金字塔原理, 非暴力溝通等作者附錄中提到的書籍時, 再看這本書, 很多章節都可以一掃而過. 因爲基本都是它們的程序員版本, 那時候的你, 甚至能做得比作者更好. 或許,正應了那句話 -- "當你有錘子,看什麼都是釘子"

★★★☆☆

其實書中所講的不僅適用於程序員,其他行業的就業人員也可以將其作爲參考。因爲走技術路線亦或是走管理路線是大多數從業者需要面對的問題。 其實在職場上,最重要的不僅僅是技術。更重要的是溝通。溝通包括但不限於闡述你的想法、彙報工作、當衆演講等等。怎麼把你精通的技術和你的工作生動形象地描述給其他外行人聽,並且讓他們有一個大概的認識確實是一個技術活。 隨着工作時間漸長,我也發現情緒管理是一個優秀打工人的必備技能之一。你總會遇到一些領導,一些同事,他們不太會溝通,然後做事也馬馬虎虎,不按規定的工作流程走,還很喜歡在你專心工作的時候打斷你。這個時候,你該怎麼面對?我的應對是要是有什麼雞零狗碎的任務讓我馬上去做,先不要一口直接拒絕。你可以先答應下來,直接闡明有空在做。或者你可以委婉拒絕,如果實在無法拒絕,只能參考上個辦法。總之,不做是不對的,這是某位領導對我的“諄諄教誨”。從他“不做就走”的態度中,我也在思考怎麼更好地把控情緒和職場策略。 在工作,家庭,社交等場景中,有效溝通和情緒管理都是很重要的學問。也正應了那句話,一法萬法。

★★★★☆

看到了未來,也收穫了成長,調整了心態,也懂得了長期堅持的方式 我喜歡文中遇到的時間複利和引入變量的抽象思維 書的發力點在後半部分

★★★★★

本書內容跟我過去這些年經歷的生涯生涯所形成的認知比較吻合,裏面描述的一些工作場景對我來說很有既視感。書的內容也比較新,裏面提及的一些工具和語言都是近年較主流的,包括996之類。剛入行沒幾年的新人自不必說,像我這樣已經入行好些年的人讀完之後也是有收穫的,對於今後的路應該怎麼走,要專注技術還是往管理發展,非常有啓發。 書本附錄收錄的各種資料是乾貨。

書籍信息

作者安曉輝
出版社清華大學出版社
出版時間2019-06-01
ISBN9787302526049
分類計算機-編程設計
格式EPUB
完結狀態連載中
章節數59