逃離天坑之后——談談技術路線該怎么走

作者:一位脫坑十年的長者

在象棋的江湖殘局中,有一個名詞叫做“摘帽”烙样,用來表示先手一方破解了后手方的一步攻殺开仰,局勢趨于一種表面上的緩和。摘帽之后先手方雖然沒有燃眉之急颂郎,但如果殘局功力不足吼渡,仍然會一招不慎滿盤皆輸。

脫坑如摘帽乓序。脫坑只是真正職業(yè)生涯的開始寺酪,未來的發(fā)展仍然充滿著不確定性。我寫這篇短文主要目的是幫助已經(jīng)脫坑的朋友了解以下技術路線的前景——如果能幫助喜歡做技術的堅定信心替劈,不喜歡做技術的盡早找到合適自己的發(fā)展路線寄雀,轉轉PM和EM,那我大概也算是勝發(fā)半篇nature了陨献。

一盒犹、自學與科班

知乎上最近有個問題時不時就跳到我的時間線上對我大肆嘲諷:自學編程和計算機科班出身的差別在哪?-知乎

答案區(qū)基本已經(jīng)變成了轉行人士和科班人士的混戰(zhàn)眨业,看看熱鬧就好急膀。

我希望非科班出身的同學要正視這個問題——和自己比,科班出身永遠比非科班出身好龄捡;和別人比卓嫂,非科班出身不能成為水平不行的借口。

科班出身的人用這個來bully你聘殖,是ta的不成熟晨雳。但是我們作為一個技術人員,不會就斤,可以學悍募;沒接觸過,可以研究洋机;不懂坠宴,可以請教。借用公孫先生的一個句式:真正的猛士绷旗,敢于直面自己的不行喜鼓。個人感受副砍,人在放低姿態(tài)之后比較能夠輕松愉快地學習,如果一直打腫臉充胖子庄岖,公孫先生自己就是個挺好的榜樣豁翎。

扎實地掌握一個語言、幾個庫隅忿、幾個框架心剥,都是基礎,這些是作為合格程序員的基礎硬實力背桐,同時也是最可替代的能力优烧。「程序員是碗青春飯」這句話链峭,并不是完全沒有道理的——如果認為程序員要做的就是不停學新的框架然后用它們開發(fā)程序畦娄,那么三十五歲被退休大概也不能全部怪罪資本邪惡。

如果堅持走技術道路弊仪,你一定要逐漸習得進入下一個階段的能力:

二熙卡、在組件(component)層面獨立解決較為復雜技術問題的能力

系統(tǒng)的一個功能,一個接口励饵,或者一個簡單的微服務驳癌,我們大體上稱為一個組件。

在這個層面上役听,需求的定義相對明確喂柒,然而往往技術細節(jié)并不明朗,需要工程師自己去研究解決方案禾嫉,并且在必要的時候和其他服務灾杰、庫或系統(tǒng)進行集成。

在接觸軟件開發(fā)的最初幾年熙参,面對這樣的需求束手無策艳吠,或者需要很多老人的幫助和指導,是很正常的事情孽椰。但是隨著知識和解決問題經(jīng)驗的積累昭娩,你要學會:

1.面對定義相對良好的有一定規(guī)模的需求如何進行分解;

2.如何利用現(xiàn)存資源降低造輪子的成本黍匾;

3.如果重造輪子不可避免:

a.對于高科技輪子在何處獲取指導和資源

b.實現(xiàn)過程中如何保證質量和**可修改性** (以后單獨講)

4.開始關心系統(tǒng)的運維特性栏渺;

5.開始關心系統(tǒng)的非功能特性;

...

99.開始清楚地認識到自己是否適合一直走技術路線锐涯。

這個階段是程序員會接觸到很多細節(jié)的一個階段磕诊,也是從初級程序員向中級程序員轉變的一個重要階段。如果能夠survive這個階段,那么基本上可以被稱為一個合格的程序員了霎终。

運行在這個層面的程序員滞磺,在面對問題時大概是這樣工作的:

1.做出恰當?shù)姆纸夂凸烙嫞?/p>

2.分析各種技術的優(yōu)劣,理解需求并且能夠和PM莱褒、其他技術人員討論trade off击困,并在高級程序員的合作下選用合適的技術;

3.實現(xiàn)中仍然需要較好的文檔以及技術支持广凸,較快地獨立完成大部分開發(fā)工作阅茶,偶爾需要高級開發(fā)人員指導;

4.產品較為健壯谅海,運維壓力不大目派,并且能夠適應需求的變化。

然而到了這個層次我們就"安全"了嗎胁赢?我認為勤奮的程序員或早或晚都會到達這個程度,而這個世界上從來不缺少勤奮的程序員白筹。所以在此之上我們還要進一步發(fā)展自己的技術實力智末。

很多人都感覺到接下來要發(fā)展架構能力,然而其積累并非一朝一夕可以完成徒河,在那之前系馆,我們還有兩步要走:

三、磨練閱讀代碼的能力

閱讀代碼顽照,不是跟風式的一上來就去讀Hadoop由蘑,Cassandra等大型開源項目——除非是天選之人,否則這個階段也不太能看得懂——而是說在工作中能夠做到以下幾點:

1.在文檔不完整代兵、不精確或者不正確的情況下尼酿,通過閱讀代碼庫來對某個系統(tǒng)得到正確完整的理解;

2.在接手新的項目時能夠快速找出重點主干植影,在代碼為主裳擎,文檔為輔的幫助下理解其實現(xiàn)邏輯及風格/范式(paradigm);

3.在缺少他人解說的情況下(如原作者已經(jīng)離職)思币,能夠大致還原當初的開發(fā)場景鹿响,對一些看起笨拙的寫法能夠做出恰當?shù)慕忉專谥貥嬛心軌騾^(qū)分可以大刀闊斧修改的和需要小心謹慎修改的部分谷饿;

4.在debug過程中惶我,較少依賴debugger,較多通過閱讀代碼來定位問題博投。

代碼是程序行為的source of truth(說還有配置的杠精先一邊涼快去)绸贡,文檔因為代碼迭代太快,或者因為程序員太懶,往往無法起到精確指導實踐的作用恃轩。而閱讀代碼得到的知識结洼,則是最具時效性的和邏輯上正確的知識。

這種能力是長期大量積累代碼調試和閱讀經(jīng)驗之后叉跛,最終獲得的一種思維方式(大概可以稱為人肉debugger吧)松忍。其實這種能力人人都有,只是強弱懸殊筷厘,而且在水平達到一定閾值之前作用并不明顯鸣峭。

在獲得了這種能力之后,一般的不明真相的小朋友看你工作酥艳,經(jīng)常會覺得不可思議摊溶,比如說大家還在研究這個X系統(tǒng)的集成文檔,你陰搓搓已經(jīng)把prototype寫好充石;你問了隔壁組同事一個問題莫换,他說不明白,然后你很無奈去看了幾分鐘代碼骤铃,然后說啊我知道了原來是這么回事……

但是這種能力也沒什么可夸耀的拉岁,我認識的天資較好的朋友,科班出身惰爬,畢業(yè)一兩年讀代碼就已經(jīng)爐火純青喊暖。而我,從大三轉行開始花了大概七年時間才達到他當年的水平撕瞧。

稍微偏個題陵叽。如果看到這里你覺得這不是你要的未來,那么我強烈建議探索一下產品和管理方向——純技術有人喜歡有人不喜歡再正常不過丛版,程序員轉PM和EM也是正常操作巩掺。

在能夠閱讀大型代碼庫之后,很自然的页畦,我們要利用這種能力來進一步強化自己的技術能力——對很多人來說閱讀代碼能力的獲得是自然而然的锌半,如果不能再構筑一道壁壘,我們就只是和野蠻生長的聰明人差不多罷了寇漫。

我的一個建議是閱讀著名開源項目刊殉。個人對分布式系統(tǒng)有一點熱愛,可以保證Cassandra州胳,HDFS记焊,YARN,Redis和Mongo都是值得一讀的代碼栓撞。有朋友說Chromium是非常優(yōu)秀的客戶端代碼遍膜,我沒有親見碗硬,但是鑒于此人十分靠譜,在這里我也做一個推薦瓢颅。關于讀開源代碼的問題在這里不展開講了恩尾,后面有機會單獨說說體會吧。

四挽懦、知識的T字形積累

我們在軟件行業(yè)里面畢竟是后來者翰意,除了實踐中的學習以外,重新補充理論知識是必不可少的信柿。畢竟真的猛士是吧冀偶,得承認自己不行。

離散渔嚷,數(shù)據(jù)結構算法进鸠,操作系統(tǒng),編譯原理形病,數(shù)據(jù)庫客年,網(wǎng)絡之類的這些本科基礎課程就不說了,即使不能達到本科扎扎實實學一遍的水平漠吻,跟著在線公開課擼一遍總是沒錯的量瓜,長期來看很多知識在日常的開發(fā)中都會時不時地出現(xiàn)一下。

工程上侥猩,在自己專精的領域周圍,要有足夠的外延抵赢。如果是做后端欺劳,那么對于現(xiàn)在主流的各種工具如數(shù)據(jù)庫,流服務铅鲤,存儲划提,網(wǎng)絡,負載均衡邢享,工作流等等都要有大體的了解鹏往,明白它們的應用場景和局限性。AWS其實是一個特別好的后端技術索引骇塘,如果能把里面的各種服務都拿出來了解一下伊履,再稍微研究一下對應的開源技術,知識面上就已經(jīng)說得過去了款违。新手要注意的是不要拿個錘子就看什么都像釘子唐瀑,各種技術有其適用性和限制,choose your weapon wisely插爹。

擴展知識的廣度一則可以擴展工具箱哄辣,在設計系統(tǒng)的過程中少走彎路请梢,二則在對比各種不同系統(tǒng)的特性時,可以互相印證力穗,掌握一些一般性的規(guī)律毅弧。

而另一方面技術深度的重要性不用多說。要提醒的是当窗,技術的深度不僅僅是比別人多**知道**幾個技術細節(jié)够坐,比如ThreadPoolExecutor的默認策略有幾種,C++的虛基類內存如何布局超全;也不僅僅是背了幾章標準咆霜,讀了幾篇RFC——深度是從宏觀的需求、應用場景嘶朱,到架構和實現(xiàn)細節(jié)的全面掌握蛾坯。具體深入學習的手段無外乎讀好書,讀優(yōu)質paper疏遏,讀代碼脉课,理解架構,實踐——有條件的話财异,可以為開源項目做一些貢獻倘零。

在一點深入,同時在周邊兼顧展開戳寸,這就是所謂的T字形知識結構呈驶。

在此基礎之上,有意識地鍛煉自己在相應領域的架構能力疫鹊,假以時日袖瞻,能不能成大器不好說,成個技術專家大概問題不大拆吆。

五聋迎、理解架構過程,嘗試進行架構工作

我們日常做的設計和架構工作其實并不復雜枣耀,重點還是從需求出發(fā)霉晕,定義use case,轉化/分解成可行的軟件系統(tǒng)及其的設計捞奕,找到合適的工具和結構/算法來解決問題牺堰。

理解業(yè)務(business logic)、理解需求方?jīng)]有說出來的潛臺詞颅围,和所掌握的工具掛鉤萌焰、正確衡量軟件系統(tǒng)所需的特性、合理分解子系統(tǒng)谷浅,是做軟件架構的一些基本能力扒俯。

發(fā)展這方面能力主要就是多觀摩多思考奶卓,學習身邊的高級工程師是怎么分解和轉化問題的,主動積極參與到關于軟件設計的會議和討論中撼玄,對比自己和大牛思路上的差異夺姑,缺什么補什么。

更高級的工程師會以組織為整體考慮架構問題掌猛,和做具體架構的工程師討論調整解決方案盏浙,令其符合整個組織的技術圖景,個人感受荔茬,這些principal工程師務虛的事情會相對較多废膘。既然是討論純技術發(fā)展,我們就到此為止吧慕蔚。

----

希望這篇短文回答了一些朋友對于未來的疑惑丐黄,也回應了一些對技術人員職業(yè)發(fā)展的不實傳言。沒有對某些文章逐條地進行回應孔飒,是因為一旦開始爭論灌闺,就容易陷入細節(jié)而無法關注宏觀的大方向——不過也希望我講的不是大而無用的廢話。

時間所限坏瞄,只能寫到這個長度桂对,以后有機會我會挑幾個點展開來講。

最后鸠匀,本人脫坑十年整蕉斜,彎曲某司Senior Engineer,先匿了缀棍。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末宅此,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子睦柴,更是在濱河造成了極大的恐慌诽凌,老刑警劉巖毡熏,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坦敌,死亡現(xiàn)場離奇詭異,居然都是意外死亡痢法,警方通過查閱死者的電腦和手機狱窘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來财搁,“玉大人蘸炸,你說我怎么就攤上這事〖獗迹” “怎么了搭儒?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵穷当,是天一觀的道長。 經(jīng)常有香客問我淹禾,道長馁菜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任铃岔,我火速辦了婚禮汪疮,結果婚禮上,老公的妹妹穿的比我還像新娘毁习。我一直安慰自己智嚷,他們只是感情好,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布纺且。 她就那樣靜靜地躺著盏道,像睡著了一般。 火紅的嫁衣襯著肌膚如雪隆檀。 梳的紋絲不亂的頭發(fā)上摇天,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機與錄音恐仑,去河邊找鬼泉坐。 笑死,一個胖子當著我的面吹牛裳仆,可吹牛的內容都是我干的腕让。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼歧斟,長吁一口氣:“原來是場噩夢啊……” “哼纯丸!你這毒婦竟也來了?” 一聲冷哼從身側響起静袖,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤觉鼻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后队橙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坠陈,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年捐康,在試婚紗的時候發(fā)現(xiàn)自己被綠了仇矾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡解总,死狀恐怖贮匕,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情花枫,我是刑警寧澤刻盐,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布掏膏,位于F島的核電站,受9級特大地震影響敦锌,放射性物質發(fā)生泄漏壤追。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一供屉、第九天 我趴在偏房一處隱蔽的房頂上張望行冰。 院中可真熱鬧,春花似錦伶丐、人聲如沸悼做。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肛走。三九已至,卻和暖如春录别,著一層夾襖步出監(jiān)牢的瞬間朽色,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工组题, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留葫男,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親庙洼。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內容