持續學習——程式猿的軍備競賽

xindoo發表於2019-08-02

  “持續學習”是幾乎所有大神都會給菜鳥們的建議之一,這個概念也不是最近被提出來的,早在兩千多年前古希臘哲學家梭倫就提出“活到老學到老”,這可算最早的“持續學習”。近些年來持續學習在IT領域裡又不不斷被提及,程式猿們成為持續學習最大的一群實踐者,我從沒看到過那個其他行業的普通員工要像程式猿一樣學習那麼多東西(也可能是我少見多怪)。

究其原因,我覺得有這樣幾點。

技術涉及面廣
  有些人在公司承擔著很大的責任,可能什麼Spark、資料庫、網路、linux……都得懂一些,要知道這隨便一個方向,都有耗費一個人幾個月甚至幾年的能力。但幸運的是其實你不用知道太深,夠用就好了。但這個“夠用”可能是實際工作中夠用,但面試中不夠用。

輪子多

  這點貌似在前端領域尤其明顯,像前端框架有什麼react、angularjs、vue……,每個框架目的都是為了簡化前端的開發,但在具體實現上各自不同,而且各自有各自的優勢,缺少一個集大成者的框架。了一個原因是計算機行業細分領域比較多,有些領域比較新,缺少一種工具,然後有人就會跳出來開發一個。另外可能會有人覺得這個工具不好,再開發一個,需要經過長期的技術迭代,才會逐漸有個比較成熟的工具和框架。

技術迭代快
  計算機行業一直在追熱點,10年11年比較時髦的物聯網,後來的大資料與雲端計算,區塊鏈、機器學習,深度學習,AI,AR,然後今年的5G…… 還有很多比較小眾的熱點。有些確實是炒作出來的熱點,啥實質性的東西也沒留下,有些確實給整個技術行業帶來的變革。但是追上了某個熱點,對於程式猿來說就是加薪 加薪……。毫無疑問,這些熱點都是技術快速迭代的產物,要想追上這些熱點就意味著你得學習。

行業競爭壓力大
  計算機行業的高壓力很多人都有耳聞,996是經常的事,996ICU幾個月前還火了一把。但依舊有好多人拼命往計算機行業裡擠,而且之前網路統計,計算機專業成為了高考考生的新寵,為什麼? 其實就是因為程式猿的工資高啊,之前看資料某國內top10院校畢業生5年後的平均薪資,可以被一個渣本院校剛畢業的程式猿秒掉,就這樣,大家當然想做程式猿了。但大批人的湧入,各個公司對程式猿的要求也水漲船高,你不學新東西,如果有一天你被裁,你連其他公司面試都過不了。之前在油管看某個矽谷大佬的視訊,幾年前leetcode你隨便刷100-200題,基本上矽谷哪些公司可以隨便選,現在遠遠不夠了。 國內在以宇宙條為代表的公司不懈的努力下,刷leetcode的軍備競賽已經逐漸開始了。

  網際網路行業,隨著大家學習的熱情越來越高,線上培訓也越來越多。像之前,好多人遇到技術問題都是上網查部落格,查官方文件,有想法的人還會在問題解決之後寫個部落格,方便其他人。現在不行了,好多人都等不到問題發生的時候,都想著在問題發生前學會問題的解決方案。這當然是個好事,未雨綢繆,等到問題真正發生時從容應對,但有些不良商家或者個人藉機牟取私利,藉機推出一些《為什麼程式猿都該懂點xxx》之類的課程,賺取你的血汗錢。要知道報班就像辦健身卡一樣,你是為了提升自己,但公司只是為了賺錢,如果你報了一次都不去,你這錢不就是打水漂了嗎。我敢肯定,肯定有好多人報班和辦健身卡一樣,報了就沒下文了。

  拋開那些一開始就放棄的人,那些人肯定很難提升自己。我們來說說那些堅持下來的人。你以為你自己把課程裡的內容仔仔細細看一遍,你就會了?too young too simple, some time naive!還差的遠呢。就拿最近很火的極客時間為例,我感覺好多課程都是在以一種科普的形式來給你講述某個東西,當然我不是說這種方式不好,但這種方式有個缺點就是可能會有些淺顯。所以意味著你學了也許只是學了表面一些花裡胡哨的東西,而內功毫無提升。

  當然我不是diss極客時間的課程,其實裡面有好多好課,我個人已經買了20多個課程了(如果內容質量差我是不會買這麼多的)。說下我的感受,有些課程我學的比較輕鬆,比如《linux效能優化》《計算機網路》,因為我之前做過兩年的運維,好多問題是我曾經實際遇到過的,當時我解決不了別人解決了的,但這個問題曾經我心中盤踞了好久的,這些課程給了我曾經苦苦思索好久的答案。我之所以學的輕鬆,除了老師講的好之外,比較重要的一點是我理解這些問題之後的背景,我已經有足夠的基礎了。

  當然我肯定也買一些對我毫無用處的課程,比如《機器學習40講》《go語言核心36講》…… 很多都沒看,都是一時衝動買下來的。因為目前我也不從事這些領域,雖然感興趣但沒有什麼精力去學。但是如果我以後有時間精力還是會回過頭來看下這些內容的。發表下我對極客時間課程的感受:你能很輕易看懂的不一定是好課,因為你可能很多都會了。你很難看懂的不一定是壞課,可能你基礎不夠。但是能啟發你思考,給你實踐帶來指引的,一般都是好課。

再回到“報班”這個話題上,首先大家理性報班,不要被標題軟文一忽悠就乖乖掏錢,你得評估自身需求,合理規劃自己的時間精力之後再報。另外現在線上培訓機構課程眾多,內容質量良莠不濟,做選擇時要擦亮自己的眼睛,選擇一些口碑平臺比較好的課程。

  說了這麼多,再來說下持續學習的負面。沒錯“持續學習”,一個積極向上,非常正能量的詞,也是有負面的。很多程式猿都會在業餘時間刷下脈脈匿名圈,圈子裡除了哪些秀offer、秀收入讓人很酸的內容外,還有一些是對面試的吐槽。其中比較有名的有那次關於頭條面試手寫紅黑樹的吐槽了,現在已經演變成頭條自帶紅黑樹buff的梗了。除此之外,還有很多面試都是問的絕大多數人實際工作中完全不會用到的東西。如果所有的面試都這樣,再加上近年來各種裁員、996的的新聞,越來越多的程式猿勢必會以面試為導向提升自己,可能會花費大量時間精力學習一些完全無用的技能。“面試造火箭,入職擰螺絲”這一說法也不是空穴來風。
  
  為什麼越來越多的公司會在面試上來難為應聘者?我簡單分析下並談談我的看法。

求職者越來越多,其中不乏濫竽充數之人
  當競爭越來越激烈的時候,坑就那麼多,當然得提升通過的門檻。拿什麼來篩,肯定不能用有些人人都能快速學會的東西篩啊,所以好多面試官都會選擇用演算法題,或者有些框架的細節來面試,這些都是需要大量時間積累大量的練習才能學會的。

喜歡炫技的面試官
  首先我覺得這是為人的問題。這種面試官的都是拿自己擅長的冷門知識點去面別人,比人上面說的頭條的手寫紅黑樹,我猜測可能就是出自這種人。如果遇到喜歡炫技的面試官,除了自認倒黴外,可以嘗試翻轉主動權,要讓對方絕對你比他牛逼(瞎說的),實在遇到人品不行的,可以反懟回去。

不合格的面試官
  有些公司有些團隊可能都比較年輕,資歷尚淺,不懂的挖掘出候選者背後的潛力。他們常用的面試方式是拿自己會的去面別人,相當於拿自己所在的知識圈去圈候選者的知識圈。人人都有自己的知識盲區,都有自己的擅長點,如果面試官這樣面,最後看到的肯定只有交集那部分,很可能會錯誤估計候選者的能力,錯失人才。當然如果面試官的知識圈足夠大,這樣也沒問題,怕就怕面試官自己都能力不夠。所以讓新人去當面試官,除了對候選人的不尊重外,也可能會得出錯誤的面試評估。

對候選人不合理的要求
  上招聘網站隨便找個崗位看下職位要求,我相信他們組內很多人都達不到,這些要求可能就是想讓這個崗位顯得高大上一些,當然也增加了面試的難度。

  如果你想跳槽,你肯定得考慮到上面這些問題。你不可能改變面試官,你能改變的只有自己。面試官不合格,你只能儘可能釋放出更多的光輝讓他看到。所以努力學習吧,去刷leetcode,去看框架原始碼,你只要學的比別人多,你肯定能脫穎而出。但是你也別忘記了,別人也在學,所以這就是一場知識的軍備競賽,誰停下來誰死、誰慢誰死、誰低效誰死。

  持續學習的人,除了真正想提升自己的,除了面向面試學習的,還有一波面向自我安慰學習的,這些人學習只是為了緩解自己的知識焦慮。我相信大多數人都有一顆上進的心,但很少有人真正有上進的執行力,這些人可能覺得看一篇部落格、看一本書就會有提升,以為簡單付出就會有收穫,所以持續學習成了他們的安慰劑,緩解了他們的知識焦慮。最可恨的是還有好多人靠販賣知識焦慮來掙錢。

  最後,理性看待持續學習,不要隨波逐流,不要隨意追熱點,不要輕易放棄。我剛畢業那會兒,因為技術太差,而且缺乏正確的指引,所以一直啥都想學,當時是做運維,就學linux、python,後來學docker,再後來學java,而且曾經還花時間學過機器學習,沒一個學精的,都是略懂皮毛。轉開發之後,主力學java,現在也能算是一個合格的java工程師了。學了這麼多,最大的體會就是自己的時間精力有限,要學會合理分配利用,還有一點是基礎東西才是最優價值的,比如什麼正規表示式、gc都在《編譯原理》(龍書)裡有介紹,感覺編譯原理會為你剷除很多技術的學習門檻。

相關文章