<kbd id="5sdj3"></kbd>
<th id="5sdj3"></th>

  • <dd id="5sdj3"><form id="5sdj3"></form></dd>
    <td id="5sdj3"><form id="5sdj3"><big id="5sdj3"></big></form></td><del id="5sdj3"></del>

  • <dd id="5sdj3"></dd>
    <dfn id="5sdj3"></dfn>
  • <th id="5sdj3"></th>
    <tfoot id="5sdj3"><menuitem id="5sdj3"></menuitem></tfoot>

  • <td id="5sdj3"><form id="5sdj3"><menu id="5sdj3"></menu></form></td>
  • <kbd id="5sdj3"><form id="5sdj3"></form></kbd>

    程序員如何跨越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í)也寫過一篇給碼農(nóng)后浪的六點(diǎn)建議,也提到程序員不是老中醫(yī),極容易被淘汰替代。

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

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

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

    另外一個(gè)事實(shí)是:優(yōu)秀的程序員,從來不擔(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é)合我自己過去看過的技術(shù)書,挑出10本:
    《代碼大全》?

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

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

    《程序員修練之道》?

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

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

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

    美國的本科生教材,這本書應(yīng)該也是中國計(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ì)語言》

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

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



    ?2?
    一些硬核技能


    程序員行業(yè)新技術(shù)發(fā)展迅猛,可以說是日新月異。
    也正是這個(gè)原因,中年危機(jī)成為我們必須面對(duì)和攻克的問題。
    思考一個(gè)問題:那些能工作到45、50、甚至60的程序員們,究竟具備了哪些過人的能力?
    就我過去的經(jīng)歷和觀察來說,我認(rèn)為:他們掌握了一些硬核技能。
    這些硬核技能幫助他們克服了年齡帶來的劣勢(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ù)或者算法之類的能力。

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

    不知道大家有沒有見過「復(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)越來越復(fù)雜的任務(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í)語言開發(fā)的程序也一樣。
    另外,一些更偏應(yīng)用層的架構(gòu)或框架,基礎(chǔ)一定是更底層的系統(tǒng)。

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

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

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

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


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

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

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

    這些大牛可以很輕松的熟練使用多種語言來實(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è)。
    下面說說有哪些代碼之美:

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

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

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

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

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

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

    有如下建議:

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

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

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

    3.過于復(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)單,清晰,不過度設(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ù)品

    無論我們?cè)趺磁?,也很難一下子就寫出可讀性很強(qiáng)的代碼。

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

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

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

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

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

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

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


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

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

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

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





    最后的話

    成為優(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="5sdj3"></kbd>
    <th id="5sdj3"></th>

  • <dd id="5sdj3"><form id="5sdj3"></form></dd>
    <td id="5sdj3"><form id="5sdj3"><big id="5sdj3"></big></form></td><del id="5sdj3"></del>

  • <dd id="5sdj3"></dd>
    <dfn id="5sdj3"></dfn>
  • <th id="5sdj3"></th>
    <tfoot id="5sdj3"><menuitem id="5sdj3"></menuitem></tfoot>

  • <td id="5sdj3"><form id="5sdj3"><menu id="5sdj3"></menu></form></td>
  • <kbd id="5sdj3"><form id="5sdj3"></form></kbd>
    九九视频在线 | 北条麻妃影音先锋 | 成人在线视频免费观看 | 色五月视频 | 国产69精品久久久久久久久久久久 |