<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          程序員如何跨越35歲危機(jī)?這篇給點(diǎn)干貨建議!

          共 3698字,需瀏覽 8分鐘

           ·

          2020-11-02 09:00


          職場(chǎng)&認(rèn)知洞察?丨 作者?/?findyi

          這是findyi公眾號(hào)的第83篇原創(chuàng)文章


          這兩天在我的讀者群里做了一個(gè)職業(yè)小調(diào)研,發(fā)現(xiàn)關(guān)注我公眾號(hào)的70%以上都是程序員。

          畢竟程序員吸引程序員,這也算猿糞吧,哈哈。

          這個(gè)小調(diào)研也引發(fā)大家對(duì)程序員行業(yè)的激烈探討,一個(gè)讀者丟出了一張圖,是大劉老師發(fā)的一段話:

          不得不佩服大劉老師的洞察力和敏銳,不干這一行居然對(duì)我們這么了解!

          突然瑟瑟發(fā)抖....

          前文其實(shí)也寫過(guò)一篇給碼農(nóng)后浪的六點(diǎn)建議,也提到程序員不是老中醫(yī),極容易被淘汰替代。

          沒辦法,這的確是殘酷的現(xiàn)實(shí)。

          事實(shí)上,我們不用去抱怨也不用去郁悶。

          我們更應(yīng)該思考:如何盡可能的延長(zhǎng)我們的程序員生涯。

          另外一個(gè)事實(shí)是:優(yōu)秀的程序員,從來(lái)不擔(dān)心因?yàn)槟挲g大而被淘汰。

          我身邊有好幾個(gè)45+還奮斗在架構(gòu)一線的老哥,干的生龍活虎。

          年齡增長(zhǎng)的同時(shí),競(jìng)爭(zhēng)力和薪資依然同步增長(zhǎng)!

          今天我想跟大家聊聊優(yōu)秀程序員必須掌握的那些知識(shí)。



          ?1?
          程序員必讀書單


          除了工作實(shí)踐,我們要精進(jìn)技術(shù),一定要多讀技術(shù)書籍。
          為了給大家推薦這份書單,我先后問了10多個(gè)技術(shù)大牛,要求他們只推一本覺得最牛逼的。
          這些大佬包括阿里P9、百度T9、58技術(shù)總監(jiān)、前58技術(shù)委員會(huì)主席等等。
          結(jié)合我自己過(guò)去看過(guò)的技術(shù)書,挑出10本:
          《代碼大全》?

          雖然這本書有點(diǎn)年頭了,且厚到可以墊顯示器。

          但是這絕對(duì)是一本經(jīng)典的書。

          《程序員修練之道》?

          這本書也是相當(dāng)經(jīng)典,我覺得就是程序員的指路明燈。
          《代碼整潔之道》

          細(xì)節(jié)之處的高效,整潔成就卓越代碼。
          《計(jì)算機(jī)的構(gòu)造和解釋》?

          經(jīng)典中的經(jīng)典,必讀。
          《算法導(dǎo)論》?

          美國(guó)的本科生教材,這本書應(yīng)該也是中國(guó)計(jì)算機(jī)學(xué)生的教材。
          《設(shè)計(jì)模式》?
          這本書是面向?qū)ο笤O(shè)計(jì)的經(jīng)典書籍,掌握設(shè)計(jì)模式是讓你的代碼做到「高內(nèi)聚、低耦合」的第一步。

          《重構(gòu):改善既有代碼的設(shè)計(jì)》

          代碼壞味道和相應(yīng)代碼的最佳實(shí)踐。

          《人月神話》?

          軟件開發(fā)這個(gè)行業(yè)能不能堆人數(shù)?怎么做好項(xiàng)目管理?如何敏捷迭代?

          看完這本書,都會(huì)有答案,它適任何軟件開發(fā)行業(yè)的從業(yè)人員閱讀。

          《深入理解計(jì)算機(jī)系統(tǒng)》

          這本書以程序員的視角全面講解了計(jì)算機(jī)系統(tǒng),深入淺出地介紹了處理器、編譯器、操作系統(tǒng)和網(wǎng)絡(luò)環(huán)境。

          《C程序設(shè)計(jì)語(yǔ)言》

          無(wú)論是做不做C/C++,這本書都值得推薦!

          C語(yǔ)言是除了匯編之外,最能讓你洞察計(jì)算機(jī)體系知識(shí)、計(jì)算機(jī)系統(tǒng)運(yùn)行原理的語(yǔ)言。



          ?2?
          一些硬核技能


          程序員行業(yè)新技術(shù)發(fā)展迅猛,可以說(shuō)是日新月異。
          也正是這個(gè)原因,中年危機(jī)成為我們必須面對(duì)和攻克的問題。
          思考一個(gè)問題:那些能工作到45、50、甚至60的程序員們,究竟具備了哪些過(guò)人的能力?
          就我過(guò)去的經(jīng)歷和觀察來(lái)說(shuō),我認(rèn)為:他們掌握了一些硬核技能。
          這些硬核技能幫助他們克服了年齡帶來(lái)的劣勢(shì)。
          1.算法能力
          很多程序員朋友覺得:如果我不從事算法相關(guān)工作。
          算法可能對(duì)我沒有價(jià)值。
          雖然大多數(shù)程序員可能在工作中用不到算法,但這一點(diǎn)都不妨礙算法的重要性。
          培養(yǎng)算法能力,就是訓(xùn)練了我們的編碼能力、解構(gòu)能力和超強(qiáng)的邏輯能力。
          我一直認(rèn)為編程的本質(zhì)其實(shí)類似解數(shù)學(xué)題,那么算法就是最難的數(shù)學(xué)題。
          碼皇MIT教授Erik Demaine的建議更為直接:
          If you want to become a good programmer, you can spend 10 years programming, or spend 2 years programming and learning algorithms.

          如果你想成為一個(gè)碼農(nóng)或是熟練工(Code Monkey),你大可以不學(xué)算法,因?yàn)樗惴▽?duì)你確實(shí)沒有用。

          但如果你想成為一個(gè)優(yōu)秀的開發(fā)者(Developer),扎實(shí)的算法必不可少,因?yàn)槟銜?huì)不斷的掉進(jìn)一些只能借助算法才能爬出去的坑里。

          2.裸編程能力

          什么是裸編程能力?

          處理程序?qū)嶋H實(shí)現(xiàn)部分的子任務(wù),實(shí)現(xiàn)函數(shù)或者算法之類的能力。

          聽起來(lái)很簡(jiǎn)單對(duì)吧?實(shí)際上很多程序員缺失這樣的能力。

          不知道大家有沒有見過(guò)「復(fù)制粘貼工程師」,Review他們的代碼甚至?xí)l(fā)現(xiàn)一些網(wǎng)上的注釋,又或者其他人的編寫錯(cuò)誤。

          并不是所有程序員都具備利用必備的基本編程結(jié)構(gòu)有效的實(shí)現(xiàn)某個(gè)產(chǎn)品或者某個(gè)模塊。

          不少工作多年的程序員甚至連一個(gè)簡(jiǎn)單算法排序都沒有考慮,當(dāng)然這并不影響普通工作的輸出。

          充當(dāng)代碼世界的搬運(yùn)工,如同搬磚工人一般,完全可以在職業(yè)生涯初期求得茍存。

          但在面臨調(diào)優(yōu)或者攻堅(jiān),這類型的程序員的表現(xiàn)甚至比剛畢業(yè)的優(yōu)秀程序員還要糟糕。

          當(dāng)他們步入中年,當(dāng)他們承擔(dān)越來(lái)越復(fù)雜的任務(wù)之際,無(wú)力感會(huì)與日俱增。

          3.Debug能力

          調(diào)試能力某種程度上比編碼能力更重要。
          在工作中,編碼只占據(jù)了我們一部分時(shí)間,查找和解決BUG會(huì)占用更多時(shí)間。
          查找BUG產(chǎn)生的根源不是一件簡(jiǎn)單的事情。
          需要整體的分析和經(jīng)驗(yàn)的沉淀,同時(shí)還需要對(duì)各種調(diào)試工具熟練應(yīng)用。
          團(tuán)隊(duì)的架構(gòu)師除了架構(gòu)設(shè)計(jì),最重要的工作就是去解決那些其他人解決不了的BUG。
          4.底層系統(tǒng)知識(shí)
          處理復(fù)雜任務(wù)或解決復(fù)雜BUG時(shí),具備深厚的底層系統(tǒng)知識(shí)非常重要。
          比如數(shù)據(jù)結(jié)構(gòu)、網(wǎng)絡(luò)協(xié)議、操作系統(tǒng)相關(guān)知識(shí),等等。
          程序的很多問題都是源于對(duì)計(jì)算機(jī)工作原理的誤解。
          即使是使用高級(jí)語(yǔ)言開發(fā)的程序也一樣。
          另外,一些更偏應(yīng)用層的架構(gòu)或框架,基礎(chǔ)一定是更底層的系統(tǒng)。

          了解了底層原理,我們才能看穿眼花繚亂的技術(shù)背后的東西,不被層出不窮的新技術(shù)所累。

          比如Docker技術(shù)興起,改變了CI/CD的方式,推動(dòng)了云原生技術(shù)的發(fā)展。

          那么Docker到底是什么東西呢,其底層無(wú)外乎:CGroups進(jìn)行資源限制、Namespace對(duì)進(jìn)程視圖修改、rootfs為容器進(jìn)程提供隔離后執(zhí)行環(huán)境的文件系統(tǒng)。

          了解了Docker的底層原理,才能在實(shí)際工作中更好的駕馭Docker。


          以上四點(diǎn),作為程序員,需要深耕取得突破。

          大家可能會(huì)注意到,我并沒有推薦任何一門語(yǔ)言作為基礎(chǔ)能力。

          對(duì)于真正的程序員大牛,語(yǔ)言只是工具,并不是本質(zhì)。

          這些大牛可以很輕松的熟練使用多種語(yǔ)言來(lái)實(shí)現(xiàn)業(yè)務(wù)目標(biāo)。



          ?3?
          領(lǐng)略代碼之美


          你如何看待編碼這件事?
          是把它當(dāng)作一份簡(jiǎn)單重復(fù)的工作,還是像打造藝術(shù)品一樣精雕細(xì)琢?
          這個(gè)問題的答案恐怕決定了你是否能成為一名優(yōu)秀的程序員。
          代碼世界充滿了美輪美奐的風(fēng)景,充滿了領(lǐng)略美麗之后的喜悅。
          如果不具備找到代碼之美的能力,恐怕并不適合這個(gè)行業(yè)。
          下面說(shuō)說(shuō)有哪些代碼之美:

          一.優(yōu)美的代碼

          可讀性高的代碼才有可能是優(yōu)美的代碼。

          相信大家都有過(guò)這樣的經(jīng)歷:接手一個(gè)項(xiàng)目要修復(fù)bug或者開發(fā)新功能,發(fā)現(xiàn)代碼可讀性非常差。

          哪怕是在有說(shuō)明文檔的情況下,都不太敢提交代碼,唯恐引入新的bug或者直接導(dǎo)致系統(tǒng)崩潰

          《重構(gòu)》里有這么一段話:“任何一個(gè)傻瓜都能寫出計(jì)算機(jī)可以理解的代碼。唯有寫出人類容易理解的代碼,才是優(yōu)秀的程序員。“

          那么如何寫出可讀性高的代碼呢?

          有如下建議:

          1.不要寫過(guò)長(zhǎng)函數(shù)

          可讀性差的代碼有很多特征,其中最典型的就是存在大量過(guò)長(zhǎng)的函數(shù)。

          2.過(guò)于復(fù)雜的類

          3.過(guò)于復(fù)雜的依賴關(guān)系

          4.注釋要簡(jiǎn)單明了

          二.優(yōu)美的架構(gòu)

          并不是架構(gòu)師,才會(huì)跟架構(gòu)打交道。

          一旦我們開始編碼,架構(gòu)就是必備技能了。

          我尤其建議:在寫任何功能之前,先想清楚代碼架構(gòu)。

          設(shè)計(jì)優(yōu)美的架構(gòu)要做到如下幾點(diǎn):

          1.穩(wěn)定性原則

          架構(gòu)盡可能的簡(jiǎn)單,清晰,不過(guò)度設(shè)計(jì)。

          2.高內(nèi)聚低耦合

          鑒于這個(gè)展開講完全可以寫一篇文章,下次專門寫下。

          3.隔離

          穩(wěn)定業(yè)務(wù)和易變業(yè)務(wù)要分離處理,核心業(yè)務(wù)和非核心業(yè)務(wù)要分離處理。

          應(yīng)用和數(shù)據(jù)要分離,服務(wù)和實(shí)現(xiàn)細(xì)節(jié)分離,前臺(tái)和后臺(tái)分離。

          三.重構(gòu)之美,不斷打磨你的藝術(shù)品

          無(wú)論我們?cè)趺磁Γ埠茈y一下子就寫出可讀性很強(qiáng)的代碼。

          這就像寫文章一樣,我們的大部分精力都放在表達(dá)思想上面,文從字順有的時(shí)候就不太顧得上。

          寫代碼,第一要?jiǎng)?wù)是能運(yùn)行,能實(shí)現(xiàn)軟件系統(tǒng)的功能。

          《代碼整潔之道》的作者寫道:“我沒指望你能夠一次過(guò)寫出整潔、漂亮的程序。如果說(shuō)我們從過(guò)去幾十年里面學(xué)到什么東西的話,那就是編程是一種技藝甚于科學(xué)的東西。要編寫整潔代碼,必須先寫骯臟的代碼,然后再清理它。”

          很多人寫出了可以運(yùn)行的、“骯臟”的代碼,或者說(shuō)接手了一個(gè)可讀性比較差的系統(tǒng),往往不愿意去重構(gòu)它們。

          他們的理由看上去是十分充分的,那就是容易引入新bug。

          事實(shí)上,不斷重構(gòu)才能讓你的代碼始終具備「可維護(hù)性」。

          同時(shí)重構(gòu)的過(guò)程,是一個(gè)飛速提升代碼能力的過(guò)程。


          多年前,我曾接受一個(gè)幾十萬(wàn)行代碼的工程。

          一個(gè)類就有2萬(wàn)行,一個(gè)函數(shù)幾千行.....

          我花了半年時(shí)間,在保證上線迭代的同時(shí),把這個(gè)工程徹底重構(gòu)。

          這個(gè)過(guò)程的確收益良多。





          最后的話

          成為優(yōu)秀程序員的路并不好走,你可能要經(jīng)歷孤獨(dú)、自我懷疑、放棄、痛苦、絕望。
          但,這世間所有好走的路,都不值得去走。
          只有那些難走的路,征服它才會(huì)收獲巨大。
          跨越泥濘小路,才能抵達(dá)理想彼岸。
          祝我的程序員讀者朋友們,都能成為優(yōu)秀程序員。
          祝大家都能開心Coding每一天。



          【您的在看,我的莫大鼓勵(lì)】

          瀏覽 79
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  精品黄色视频 | 囯产精品宾馆在线精品酒店 | 精品av国产 | 久久丝袜足交视频 | 超碰啪啪啪 |