天天看點

阿裡資深技術專家: 程式員怎樣快速成長? | 内部幹貨

<b>成為大牛:夢想很美好,現實卻很殘酷</b>

不管是開發、測試、運維,每個技術人員心裡多多少少都有一個成為技術大牛的夢。畢竟“夢想總是要有的,萬一實作了呢”?

但很多阿裡的新人,工作後就會發現,夢想是成為大牛,但做的事情看起來跟大牛都不沾邊。

比如,程式員說“天天寫業務代碼還加班,如何才能成為技術大牛”,測試說“每天都有執行不完的測試用例”,運維說“扛機器接網線敲shell指令,這不是我想要的運維人生”。

我也是一位程式員,是以我希望通過以下基于程式開發的一些例子,用我的經驗給大家一些參考。

<b>典型誤區1:拜大牛為師</b>

有人認為想成為技術大牛最簡單直接、快速有效的方式是“拜團隊技術大牛為師”,讓他們平時給你開小竈,給你配置設定一些有難度的任務。

我是反對這種方法的。

大牛很忙,不太可能單獨給你開小竈,更不可能每天都給你開1個小時的小竈。而且一個團隊裡面,如果大牛經常開小竈,難免會引起其他團隊成員的疑惑,我個人認為如果團隊裡的大牛真正有心,多給團隊教育訓練最好,但準備一場教育訓練很耗費時間。

因為第一個原因,是以一般要找大牛,都是帶着問題去請教或者探讨。因為回答或者探讨問題無需太多的時間,更多的是靠經驗和積累,這種情況下大牛們都是很樂意的。

然而也要特别注意:如果經常問那些書本或者google能夠很容易查到的知識,大牛們也會很不耐煩的,畢竟時間寶貴。

經常有網友問我諸如“jvm的-Xmn參數如何配置”這類問題,我都是直接回答“請直接去google”,因為這樣的問題實在是太多了,如果自己不去系統學習,每個都要問是非常浪費自己和别人的時間的。

對于大部分人來說,要想成為技術大牛,首先還是要明白“主要靠自己”這個道理,不要期望有個像武功師傅一樣的大牛手把手一步一步地教你。

适當的時候可以通過請教大牛或者和大牛探讨來提升自己,但大部分時間還是自己系統性、有針對性的提升。

阿裡資深技術專家: 程式員怎樣快速成長? | 内部幹貨

<b>典型誤區2:業務代碼一樣很牛逼</b>

業務代碼中的技術是每個程式員的基礎,但隻是掌握了這些技巧,并不能成為技術大牛。

就像遊戲中更新打怪一樣,開始打小怪,經驗值很高,越到後面經驗值越少,打小怪已經不能提升經驗值了。這個時候就需要打一些更進階的怪,刷一些有挑戰的副本了,沒看到哪個遊戲隻要一直打小怪就能升到頂級的。

成為技術大牛的路也是類似的,你要不斷的提升自己的水準,然後面臨更大的挑戰,通過應對這些挑戰進而使自己水準更上一級,然後如此往複,最終達到技術大牛甚至業界大牛的境界。

寫業務代碼隻是這個打怪更新路上的一個挑戰而已,而且我認為是比較初級的一個挑戰。

是以我認為:業務代碼都寫不好的程式員肯定無法成為技術大牛,但隻把業務代碼寫好的程式員也還不能成為技術大牛。

<b>典型誤區3:上班太忙,沒時間學習</b>

這個理由有一定的客觀性,畢竟和歐美相比,我們的加班确實要多一些,但這個因素隻是一個需要克服的問題,并不是不可逾越的鴻溝,畢竟我們身邊還是有那麼多的大牛也是在中國這個環境成長起來的。

阿裡資深技術專家: 程式員怎樣快速成長? | 内部幹貨

阿裡巴巴西溪園區的櫻花

攝影師:錦此

<b>幾個誤區導緻這種看法的形成</b>

1、上班做的都是重複工作,要想提升必須自己額外去學習

形成這個誤區的主要原因還是在于認為“寫業務代碼是沒有技術含量的”,而我現在上班就是寫業務代碼,是以我在工作中不能提升。

2、學習需要大段的連續時間

很多人以為要學習就要像學校上課一樣,給你一整天時間來上課才算學習,而我們平時加班又比較多,周末累的隻想睡懶覺,或者隻想去看看電影打打遊戲來放松,是以就沒有時間學習了。

實際上的做法正好相反:首先我們應該在工作中學習和提升,因為學以緻用或者有執行個體參考,學習的效果是最好的;其次工作後學習不需要大段時間,而是要擠出時間,利用時間碎片來學習。

<b>正确的做法1:Do More</b>

做的更多,做的比你主管安排給你的任務更多。要想有機會,首先你得從人群中冒出來,要想冒出來,你就必須做到與衆不同,要做到與衆不同,你就要做得更多!

怎麼做得更多呢?

1、熟悉更多業務

不管是不是你負責的;熟悉更多代碼,不管是不是你寫的,多熟悉業務有很多好處。

2、熟悉端到端

“系統性”、“全局性”、“綜合性”這些字眼看起來比較虛,但其實都是技術大牛的必備的素質,要達到這樣的境界,必須去熟悉更多系統、業務、代碼。

3、自學

一般在比較成熟的團隊,由于架構或者元件已經進行了大量的封裝,寫業務代碼所用到的技術确實也比較少,但我們要明白“唯一不變的隻有變化”,架構有可能要改進,元件可能要替換,或者你換了一家公司,新公司既沒有元件也沒有架構,要你從頭開始來做。

這些都是機會,也是挑戰,而機會和挑戰隻會配置設定給有準備的人,是以這種情況下我們更加需要自學更多東西,因為真正等到要用的時候再來學已經沒有時間了。

<b>正确的做法2:Do Better</b>

要知道這個世界上沒有完美的東西,你負責的系統和業務,總有不合理和可以改進的地方,這些“不合理”和“可改進”的地方,都是更進階别的怪物,打完後能夠增加更多的經驗值。

識别出這些地方,并且給出解決方案,然後向主管提出,一次不行兩次,多提幾次,隻要有一次落地了,這就是你的機會。

隻要你去想,其實總能發現可以改進的地方的;如果你覺得系統哪裡都沒有改進的地方,那就說明你的水準還不夠,可以多學習相關技術,多看看業界其它優秀公司怎麼做。

阿裡資深技術專家: 程式員怎樣快速成長? | 内部幹貨

<b>正确的做法3:Do Exercise</b>

在做職業等級溝通的時候,發現有很多同學确實也在嘗試Do more、Do better,但在執行的過程中,幾乎每個人都遇到同一個問題:光看不用效果很差,怎麼辦?

分享一下個人的經驗,其實就是3個詞:learning、trying、teaching!

1、Learning

這個是第一階段,看書、google、看視訊、看别人的部落格都可以,但要注意一點是“系統化”,特别是一些基礎性的東西。

2、Trying

這個步驟就是解答前面提到的很多同學的疑惑的關鍵點,形象來說就是“自己動手豐衣足食”,也就是自己去嘗試搭建一些模拟環境,自己寫一些測試程式。還有很多方法,這裡就不一一列舉,簡單來說,就是要将學到的東西真正試試,才能了解更加深刻。

3、Teaching

一般來說,經過Learning和Trying,能掌握70%左右,但要真正掌握,我覺得一定要做到能夠跟别人講清楚。因為在講的時候,我們既需要将一個知識點系統化,也需要考慮各種細節,這會促使我們進一步思考和學習。

同時,講出來後看或者聽的人可以有不同的了解,或者有新的補充,這相當于繼續完善了整個知識技能體系。

<b>總結:熱情和興趣才是決定性作用</b>

成為技術大牛夢想雖然很美好,但是要付出很多,不管是Do more還是Do better還是Do exercise,都需要花費時間和精力。這個過程中可能很苦逼,也可能很枯燥。

這些其實都是方法論,但真正起決定作用的,其實還是我們對技術的熱情和興趣。

原文釋出時間為:2018-04-4

本文作者:橙子

繼續閱讀