技术,是不是越新越好?
/(ㄒoㄒ)/~~/(ㄒoㄒ)/~~/(ㄒoㄒ)/~~
一定要让我先看看我写的这篇博客啊:
,不然我死给你看!
写了两天,忘了“发布到首页”,啊~~~~~~
/(ㄒoㄒ)/~~/(ㄒoㄒ)/~~/(ㄒoㄒ)/~~/(ㄒoㄒ)/~~/(ㄒoㄒ)/~~/(ㄒoㄒ)/~~
这几天.NET Core 2.0火得一塌糊涂,蹭个热门,把我早就想写的东西先写出来。
准确的说,这篇文章应该叫做:转行做IT,入门学的技术是不是越新越好?因为你真正入门之后,新技术老技术,都是“通”的,从老技术迁移到新技术,一般也就几天的事儿,随你的便。学也罢,不学也行——只要工作上还没追到这一步来。
我个人而言,是比较贪婪的,经常开启“延迟加载”模式,了解个大概,用的时候再说。和周围的朋友聊天,老人好像都这个样子,“看见新技术就打了鸡血一样”的,还是年轻人居多。
好了,我来说说新人的问题。因为这个问题我被问了很多次。然而,不是问“我该不该学最新的”,而是“xxx技术是不是最新的?”生怕一不小心就学了一个“过时”的技术,那还怎么了得?!
我和几个小朋友聊过,问为什么他们会有这种想法,归纳起来,大致有以下几个原因:
- 旧的技术已经被淘汰了,学了等于白学
- 找工作的时候,怕人家单位用的全是新技术,还要再学一遍
- 新技术更“高级”一些,学新技术才能学到更多的东西
这些想法我觉得都是错误的。至少,是值得商榷的。
我首先来告诉大家一个事实:
- 绝大多数的公司,正在使用的,都是“旧”技术;
- 而且公司越大,技术越旧;
- 越是核心的功能,越是使用的“旧”技术。
为什么呢?
你猜!
道理很简单,两个原因:
- 历史代码。代码不是一天就写完的,越是大公司,历史代码越多,写这些代码的时候,根本就没有现在这些新技术,只能是“旧”技术啊。生成环境的代码,也不是也不是说改就能改的,改出问题来了咋办?牵一发而动全身,很多历史代码,后面的人碰都不敢碰——尤其是核心代码,出问题了咋办?深水炸弹啊!这锅谁敢背?
- 新技术风险。即使是我们从头开始一个项目,也不宜立马上就上新技术。这方面,越是大公司越谨慎。通常都是等别人先雷区踩一遍了再说,即使采用新技术,也是从最外围最不核心的功能模块开始,逐步逐步的迭代展开。顺便多说两句,大公司的技术线是非常非常广的,什么“为什么淘宝(不)采用vue.js”之类的问题,明显就是在“开黄腔”(外行话),想淘宝这样的大公司,估计啥技术都在用,不信的去看看他的招聘启事。
相反是一些创业型公司,或者一些小公司,没有任何历史包袱和风险意识(当然,新技术风险对他们这种项目的伤害也不大),才会风风火火的上马新技术。
当然,任何事情都有例外,比如google这种大牛,连开发语言都是他自己捣鼓出来的,我等虾米也只有膜拜的份!但即使这样的牛逼公司,哪怕用自己的新技术,摔坑里的也不少。比如微软啦,这些年搞出来的东西,就我知道的,SliverLight,WebForm上的Ajax控件啊,还有啥?WPF,现在咋样?
所以技术好不好,不是看它新不新;更进一步,(企业)采用何种技术,也不是看它好不好。而是什么?看它合不合适。
当然,这是企业的决策问题,那对于我们个人,尤其是准备入行的新人来说,应该怎么选择呢?
事关重大,我只是建议,最后怎么选完全看你个人哈!不要最后到QQ群里来骂我约架啥的——不约。(`へ´*)ノ
采用新技术入门,不是说不行,但至少至少有以下几个问题。
第一,眼光够准。别傻不拉几的学了一年半载的,学成之后这技术已经挂了。至于“那些技术有发展前途?”不要问我,这么复杂的问题我答不出来的。我只能告诉你,风险和收益成正比,哈哈,怎么赌,自己决定吧。
但这个问题其实不是很大。毕竟,功不唐捐,知识到一定的程度,都是相通的。除非你倒了八辈子血霉,学了一个偏得不能再偏的技术,if...else....,类库调用,环境配置,开闭原则等等这些,都是放之四海而皆准的。过渡起来也不是你想像的那么难。
第二,找到优秀的教学资源。这个才真的是一个大问题,既然是一门新技术,掌握它的人就很少;即使勉强掌握了,深入的人也不多。而现在各种培训机构,这段时间我动了做培训的念头,也留意了一下,高手还是不多的。我看的是老技术了,因为我只懂老技术,但既然这些老技术的讲师都这么个水平,新技术的话……我真的比较怀疑。
因为技术是需要沉淀的,是需要时间来沉淀的。我转行做IT马上就十年了,自觉还是比较上进的,也不过才有些许感悟,但还是有很多不解。
我经常想,世界上最残酷的就是时间,时间有限;但最公平的,也是时间:要达到一点的境界,你必须花时间来“熬”;但只要你不虚度,它也总会给你留下一些东西。
第三,避免根基不牢。其实几乎所有的“新技术”,都是对“旧技术”的改良,或者更直接一点:封装。新技术“封装”了旧技术的细节,呈现一个更便利的接口,以方便用户调用而已。这种封装当然是非常必要的,我们谁都不愿意再从二进制和汇编开始学起。然而,技术是有连贯性的。观今宜鉴古,无古不成今。一味追赶新技术,根基不牢,还是很容易出问题的。比如Linq问世之后,很多新人就不会写sql;JQuery出台之后,很多新人就不理解原生JS……实际开发中,还是很被动的。
这里我特别要强调一点,这并不是(不是,不是,重要的事说三遍)说我们学技术就一定要从最底层开始,这又从一个极端走向了另一个极端,完全没有这个必要。实际上这还是一个“度”的问题。太新的技术,通常还不能解决现有的所有问题,还是需要和旧技术配合,就好像还有一个“过渡期”一样。
写到这里,可能有些同学会问,那要新到什么程度,或者旧到什么程度,才合适呢?唉呀,这真是个好问题啊!
我真答不出来。毕竟,好多技术,我也不了解。但总体上来说,太旧的东西,基本上你在市面上也学不到;可劲鼓吹“全新”“最新”的宣传,心里有数就是了。
++++++++++++++++++
最后,呕血推荐:
忘了“发布到首页”,就完全没人看啊!