有人認為程式員應該對自己的技術始終保持忠誠,有人認為集百家武學于一身才是正道,如何權衡技術深度與廣度?這是大多數程式員都會面臨和思考的問題,

在有限的時間里能學習的東西也是有限的,那么在我們決定去學習之前,就經常會遇到深度和廣度的選擇問題,尤其是目前所掌握的技能已經足夠應對現有作業的時候,縱向深入還是橫向拓寬技術,現有作業似乎并不能直接體現出好壞,
比如說現在我是個做前端的,HTML、CSS、JS會了,再加上Vue和React等一些常用的東西已經足夠應對目前的作業了,那么我是該往前端的其他技術深入發展,還是往后端橫向學習整個web開發?
這個話題我一直有在思考,從我做程式員的兩三年后就開始思考并實踐自己的想法,回過頭來看,自己這些年來所堅持的觀點和道路是正確的,雖然在43歲的年紀因為身體實在肝不動了,但也攢足了在家養老的資本,
所以我想把我對于技術深度與廣度如何抉擇的一些觀點,跟大家做一個分享,希望能對大家有所參考,

一、前期以深度優先
對于深度與廣度的抉擇,可以分為前和中后期兩個階段來做考慮,起碼我是這樣的,
前期也就是剛開始作業的三五年內,剛從學校出來,身上所掌握的東西還沒有完全能跟得上整個公司的腳步,這個時候必然是以深度優先,用自己的技術把崗位的職責做到游刃有余,是大多數新晉開發者都應該追求的境界,
剛好我前段時間和我老許聊天(以前公司的現任技術總監,我們之前共事了七八年了,我退出之后由他來接任整個公司的技術管理),跟他聊天的時候他說到了一個實習生的事情,我覺得在這里很適合去分享一下給大家:
今年六月份的時候正逢大學畢業季,還有一些沒找到作業的大學生也不得不進入社會找作業,公司來面試的新人中有兩個小伙子比較特殊,都是面試前端開發,兩個人是一個宿舍的,結果有1個人面試上了,1個人被PASS了,不是因為名額的原因,當時公司是準備招4個人,所以名額是完全夠的.
.
為什么老許跟我說這個事情呢?因為當時的面試官反了一個低級錯誤:人還沒走就直接把面試結果告訴那倆人,結果好戲發生了,.
沒面上的那個小伙子當時就繃不住了,當場就去找人事理論,他覺得他的優勢也不比他朋友差,為什么他沒被錄用?其實這個原因就是我們今天所講的深度與廣度的問題,
.這兩個小伙子都掌味訓本的HTML、CSS和JS,被錄用的小伙子除了這些,還掌握更深的前端技術,比如頁面加載慢的優化技術、Webpack打包工具以及Vue和React框架,對于新人的要求還是蠻符合的;而另一個沒被錄用的小伙子呢,在前端方面也僅限于HTML、CSS和JS,不過這小伙子還會做后端,Django和資料庫等技術也都會,基本上給一些時間還是能夠獨立完成簡單的前后端開發,看起來技術涉略面更廣一些,所以小伙子很不服氣,
.
最后的結果依然沒有改變,公司基本不會因為某個人而改變既定的決定,何況你還不是公司的人,
從這個例子可以看出,公司層面對于作業經驗還不是很豐富的人的要求,其實是希望你能在某一個崗位把自己的職責做好,什么都會一點有什么用?淺嘗輒止的“革命板磚”搬過去也只是累贅,

所以在整個生涯前期的三五年內,把自己所走方向的技術往深學,才會給你帶來更大的收益,
二、中后期首先以公司優先
但是不是一直往深學就沒錯呢?也不見得,
雖然每個行業都需要一直鉆研技術深度的人,但那樣的人太少了,對于大多數程式員來說,如果你一直在某一門技術上死磕,你可能哪天失業了都還后知后覺,

到了中期我建議以公司優先,原因有2個,
第一,30歲左右的個人情況,到了那個年紀,已經不再像早幾年那樣“一人吃飽全家不餓”,身上背負了更多的東西,我們看待問題也不再是那么對立,在這個年紀頻繁換作業已然不適合,該考慮如何在一個地方打下汗馬功勞,為現有公司創造更大的價值,提升自己在公司的地位,
第二,負責人的技術儲備,公司盈利少,團隊也過的煎熬,技術部門往往首先要做出讓公司盈利的產品,而不是一開始就追求技術極致為目的,所以作為公司的老員工或者負責人,奮戰在一線是必不可少的,對于技術的把控也是檢驗你的知識儲備,你的決定代表著整個技術部門的方向,這個時候你更需要橫向去學習更多的東西,尤其你身處高層時,你老板不一定懂技術,你拍板的事情就意味著這個專案能走多遠,你更得為公司為大局著想,
所以此時,以公司優先,你覺得目前的專案缺少什么,你就去往那方面學習是沒有錯的,而且大多數努力都會給你帶來正向反饋,

比如我自己在作業了第五年的時候,開始接手當時的技術部門之后,我一直沒有停下自己的技術學習,只是學習的方向改了,我自己本身是做前端出身的,我當時的前端技術算很不錯的了,再深入進去也不是不行,但實際上能對作業產生的效益是有限的,于是我開始學習后端,因為當時部門里面的后端技術是跟不上來的,不給力,
于是當時我就自己去學Redis、node.js技術和對應的框架學習后端技術,學到的東西我就會嘗試去對現有作業做改變,經過各方面的配合和努力,最終做出來的產品整個部門都挺滿意,老板也很認可,
于是從那之后,我想明白了,這個時期的我需要橫向地去學習了,得以公司為中心點去提升自己的技術,看看自己手底下的團隊缺什么,最好能自己去往那方面去涉足,因為我想對全域做更好的把控,
后面又陸續學了Linux和Docker等等技術,我深知連滲透測驗都自己去學,因為公司當時就沒這個經費請那么一個人來,特殊時期只能理解,所以就自己上了,慢慢地,每次技識訓議的風向標幾乎都在我這里,也是從那時候開始,我人生中的”事業春“才剛剛開始,
而相比較于同期畢業的一些同學,以及在職場上認識的一些做前端的朋友,他們要么是一直在深鉆自己的領域,要么是得過且過沒想那么多,幾乎是沒有很大的職場突破,所以我很堅定,到了這個時期不是你該學什么,而是公司需要什么,你如果以公司為優先、帶著目的性去學習,給你的反饋才是最大的,

三、中后期結合市場趨勢
在我開始嘗到了橫向擴展的甜頭之后,我一直在想,我以后一直橫向去學習不就可以了?是不是我學得越多懂得越多就越牛逼?
一開始我也不知道答案,我只是在不斷地拓展,但后面我發現我所橫向去拓展所學的那些東西,有一部分卻是在逐漸被淘汰的,比如在2014年的時候,我自己在空余的時間去自學了Objective-C,想往蘋果APP市場涉足,雖然當時我已經看出來了當時剛剛發布的Swift可能是未來的趨勢,但我依然覺得Objective-C的三十多年的發展,誰輸誰贏還不一定呢,
可以看出來在2014年的時候,Objective-C還在前三名,

但等我剛精通它的時候,它已經開始下滑了,越來越少的人用了,結果沒過幾年,在“江湖兵器榜”前20連影子都見不著了,在圈子內一番調查之后,還在用Objective-C的開發者已經是寥寥無幾了,

學是學會了,但有什么用呢?我也不敢用一門即將消失的語言去給自己的公司開發產品,所以我在Objective-C這方面是白折騰了,
所以說盲目地去橫向擴展也是不可取的,要結合市場趨勢去拓寬自己的技術堆疊,
四、結語
來給大家做一個總結,關于程式員在技術學習上該縱向深入還是橫向拓展的選擇上,我建議前期以深度優先,不管你后面要往哪發展,都要先做精一個方向,就算要往后端走,那么你也得把你的前端弄精通了再去橫向擴展,提升自己在職場的競爭力,去哪都是搶手貨,
當你把你所作業的方向學到精通后,以公司優先,逐漸對公司業務的多個技術層面進行學習,同時也要注意趨勢,往往不是技術決定作業,而是市場決定作業,避免學了一些即將過時的東西,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/340676.html
標籤:其他
下一篇:Flink集群部署centos7
