文章出處

/(ㄒoㄒ)/~~/(ㄒoㄒ)/~~/(ㄒoㄒ)/~~

一定要讓我先看看我寫的這篇博客啊:

十年之后再看“面向對象”

,不然我死給你看!

寫了兩天,忘了“發布到首頁”,啊~~~~~~

/(ㄒoㄒ)/~~/(ㄒoㄒ)/~~/(ㄒoㄒ)/~~/(ㄒoㄒ)/~~/(ㄒoㄒ)/~~/(ㄒoㄒ)/~~

 

 

這幾天.NET Core 2.0火得一塌糊涂,蹭個熱門,把我早就想寫的東西先寫出來。

準確的說,這篇文章應該叫做:轉行做IT,入門學的技術是不是越新越好?因為你真正入門之后,新技術老技術,都是“通”的,從老技術遷移到新技術,一般也就幾天的事兒,隨你的便。學也罷,不學也行——只要工作上還沒追到這一步來。

我個人而言,是比較貪婪的,經常開啟“延遲加載”模式,了解個大概,用的時候再說。和周圍的朋友聊天,老人好像都這個樣子,“看見新技術就打了雞血一樣”的,還是年輕人居多。

 

好了,我來說說新人的問題。因為這個問題我被問了很多次。然而,不是問“我該不該學最新的”,而是“xxx技術是不是最新的?”生怕一不小心就學了一個“過時”的技術,那還怎么了得?!

我和幾個小朋友聊過,問為什么他們會有這種想法,歸納起來,大致有以下幾個原因:

  1. 舊的技術已經被淘汰了,學了等于白學
  2. 找工作的時候,怕人家單位用的全是新技術,還要再學一遍
  3. 新技術更“高級”一些,學新技術才能學到更多的東西

這些想法我覺得都是錯誤的。至少,是值得商榷的。

 

我首先來告訴大家一個事實:

  • 絕大多數的公司,正在使用的,都是“舊”技術;
  • 而且公司越大,技術越舊;
  • 越是核心的功能,越是使用的“舊”技術。

為什么呢?

你猜!

道理很簡單,兩個原因:

  1. 歷史代碼。代碼不是一天就寫完的,越是大公司,歷史代碼越多,寫這些代碼的時候,根本就沒有現在這些新技術,只能是“舊”技術啊。生成環境的代碼,也不是也不是說改就能改的,改出問題來了咋辦?牽一發而動全身,很多歷史代碼,后面的人碰都不敢碰——尤其是核心代碼,出問題了咋辦?深水炸彈啊!這鍋誰敢背?
  2. 新技術風險。即使是我們從頭開始一個項目,也不宜立馬上就上新技術。這方面,越是大公司越謹慎。通常都是等別人先雷區踩一遍了再說,即使采用新技術,也是從最外圍最不核心的功能模塊開始,逐步逐步的迭代展開。順便多說兩句,大公司的技術線是非常非常廣的,什么“為什么淘寶(不)采用vue.js”之類的問題,明顯就是在“開黃腔”(外行話),想淘寶這樣的大公司,估計啥技術都在用,不信的去看看他的招聘啟事。

相反是一些創業型公司,或者一些小公司,沒有任何歷史包袱和風險意識(當然,新技術風險對他們這種項目的傷害也不大),才會風風火火的上馬新技術。

當然,任何事情都有例外,比如google這種大牛,連開發語言都是他自己搗鼓出來的,我等蝦米也只有膜拜的份!但即使這樣的牛逼公司,哪怕用自己的新技術,摔坑里的也不少。比如微軟啦,這些年搞出來的東西,就我知道的,SliverLight,WebForm上的Ajax控件啊,還有啥?WPF,現在咋樣?

 

所以技術好不好,不是看它新不新;更進一步,(企業)采用何種技術,也不是看它好不好。而是什么?看它合不合適。

當然,這是企業的決策問題,那對于我們個人,尤其是準備入行的新人來說,應該怎么選擇呢?

事關重大,我只是建議,最后怎么選完全看你個人哈!不要最后到QQ群里來罵我約架啥的——不約。(`へ´*)ノ

 

采用新技術入門,不是說不行,但至少至少有以下幾個問題。

 

第一,眼光夠準。別傻不拉幾的學了一年半載的,學成之后這技術已經掛了。至于“那些技術有發展前途?”不要問我,這么復雜的問題我答不出來的。我只能告訴你,風險和收益成正比,哈哈,怎么賭,自己決定吧。

但這個問題其實不是很大。畢竟,功不唐捐,知識到一定的程度,都是相通的。除非你倒了八輩子血霉,學了一個偏得不能再偏的技術,if...else....,類庫調用,環境配置,開閉原則等等這些,都是放之四海而皆準的。過渡起來也不是你想像的那么難。

 

第二,找到優秀的教學資源。這個才真的是一個大問題,既然是一門新技術,掌握它的人就很少;即使勉強掌握了,深入的人也不多。而現在各種培訓機構,這段時間我動了做培訓的念頭,也留意了一下,高手還是不多的。我看的是老技術了,因為我只懂老技術,但既然這些老技術的講師都這么個水平,新技術的話……我真的比較懷疑。

因為技術是需要沉淀的,是需要時間來沉淀的。我轉行做IT馬上就十年了,自覺還是比較上進的,也不過才有些許感悟,但還是有很多不解。

我經常想,世界上最殘酷的就是時間,時間有限;但最公平的,也是時間:要達到一點的境界,你必須花時間來“熬”;但只要你不虛度,它也總會給你留下一些東西。

 

第三,避免根基不牢。其實幾乎所有的“新技術”,都是對“舊技術”的改良,或者更直接一點:封裝。新技術“封裝”了舊技術的細節,呈現一個更便利的接口,以方便用戶調用而已。這種封裝當然是非常必要的,我們誰都不愿意再從二進制和匯編開始學起。然而,技術是有連貫性的。觀今宜鑒古,無古不成今。一味追趕新技術,根基不牢,還是很容易出問題的。比如Linq問世之后,很多新人就不會寫sql;JQuery出臺之后,很多新人就不理解原生JS……實際開發中,還是很被動的。

這里我特別要強調一點,這并不是(不是,不是,重要的事說三遍)說我們學技術就一定要從最底層開始,這又從一個極端走向了另一個極端,完全沒有這個必要。實際上這還是一個“度”的問題。太新的技術,通常還不能解決現有的所有問題,還是需要和舊技術配合,就好像還有一個“過渡期”一樣。

 

寫到這里,可能有些同學會問,那要新到什么程度,或者舊到什么程度,才合適呢?唉呀,這真是個好問題啊!

我真答不出來。畢竟,好多技術,我也不了解。但總體上來說,太舊的東西,基本上你在市面上也學不到;可勁鼓吹“全新”“最新”的宣傳,心里有數就是了。

 

 

++++++++++++++++++

最后,嘔血推薦:

十年之后再看“面向對象”

忘了“發布到首頁”,就完全沒人看啊!

 

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()