技术,是不是越新越好?

点击上方“Java知音”,选择“置顶公众号”

技术文章第一时间送达!

作者:自由飞

cnblogs.com/freeflying/p/7420093.html

准确的说,这篇文章应该叫做:转行做IT,入门学的技术是不是越新越好?

因为你真正入门之后,新技术老技术,都是“通”的,从老技术迁移到新技术,一般也就几天的事儿,随你的便。学也罢,不学也行——只要工作上还没追到这一步来。

我个人而言,是比较贪婪的,经常开启“延迟加载”模式,了解个大概,用的时候再说。和周围的朋友聊天,老人好像都这个样子,“看见新技术就打了鸡血一样”的,还是年轻人居多。
 
好了,我来说说新人的问题。因为这个问题我被问了很多次。然而,不是问“我该不该学最新的”,而是“xxx技术是不是最新的?”生怕一不小心就学了一个“过时”的技术,那还怎么了得?


我和几个小朋友聊过,问为什么他们会有这种想法,归纳起来,大致有以下几个原因:

  1. 旧的技术已经被淘汰了,学了等于白学
  2. 找工作的时候,怕人家单位用的全是新技术,还要再学一遍
  3. 新技术更“高级”一些,学新技术才能学到更多的东西


这些想法我觉得都是错误的。至少,是值得商榷的。


我首先来告诉大家一个事实:

  • 绝大多数的公司,正在使用的,都是“旧”技术;
  • 而且公司越大,技术越旧;
  • 越是核心的功能,越是使用的“旧”技术。


为什么呢?

你猜!

道理很简单,两个原因:

  1. 历史代码代码不是一天就写完的,越是大公司,历史代码越多,写这些代码的时候,根本就没有现在这些新技术,只能是“旧”技术啊。
    生成环境的代码,也不是也不是说改就能改的,改出问题来了咋办?
    牵一发而动全身,很多历史代码,后面的人碰都不敢碰——尤其是核心代码,出问题了咋办?深水炸弹啊!这锅谁敢背?
  2. 新技术风险即使是我们从头开始一个项目,也不宜立马上就上新技术。这方面,越是大公司越谨慎。通常都是等别人先雷区踩一遍了再说,即使采用新技术,也是从最外围最不核心的功能模块开始,逐步逐步的迭代展开。
    顺便多说两句,大公司的技术线是非常非常广的,什么“为什么淘宝(不)采用vue.js”之类的问题,明显就是在“开黄腔”(外行话),像淘宝这样的大公司,估计啥技术都在用,不信的去看看他的招聘启事。


相反是一些创业型公司,或者一些小公司,没有任何历史包袱和风险意识(当然,新技术风险对他们这种项目的伤害也不大),才会风风火火的上马新技术。

当然,任何事情都有例外,比如google这种大牛,连开发语言都是他自己捣鼓出来的,我等虾米也只有膜拜的份!

但即使这样的牛逼公司,哪怕用自己的新技术,摔坑里的也不少。比如微软啦,这些年搞出来的东西,就我知道的,SliverLight,WebForm上的Ajax控件啊,还有啥?WPF,现在咋样?
 
所以技术好不好,不是看它新不新;更进一步,(企业)采用何种技术,也不是看它好不好。而是什么?看它合不合适。

当然,这是企业的决策问题,那对于我们个人,尤其是准备入行的新人来说,应该怎么选择呢?

事关重大,我只是建议,最后怎么选完全看你个人哈!不要最后到QQ群里来骂我约架啥的——不约。(`へ´*)ノ
 
采用新技术入门,不是说不行,但至少至少有以下几个问题。
 
第一,眼光够准。别傻不拉几的学了一年半载的,学成之后这技术已经挂了。至于“那些技术有发展前途?”不要问我,这么复杂的问题我答不出来的。我只能告诉你,风险和收益成正比,哈哈,怎么赌,自己决定吧。

但这个问题其实不是很大。毕竟,功不唐捐,知识到一定的程度,都是相通的。

除非你倒了八辈子血霉,学了一个偏得不能再偏的技术,if...else....,类库调用,环境配置,开闭原则等等这些,都是放之四海而皆准的。过渡起来也不是你想像的那么难。
 
第二,找到优秀的教学资源。这个才真的是一个大问题,既然是一门新技术,掌握它的人就很少;即使勉强掌握了,深入的人也不多。

而现在各种培训机构,这段时间我动了做培训的念头,也留意了一下,高手还是不多的。我看的是老技术了,因为我只懂老技术,但既然这些老技术的讲师都这么个水平,新技术的话……我真的比较怀疑。

因为技术是需要沉淀的,是需要时间来沉淀的。我转行做IT马上就十年了,自觉还是比较上进的,也不过才有些许感悟,但还是有很多不解。

我经常想,世界上最残酷的就是时间,时间有限;但最公平的,也是时间:要达到一点的境界,你必须花时间来“熬”;但只要你不虚度,它也总会给你留下一些东西。
 
第三,避免根基不牢。其实几乎所有的“新技术”,都是对“旧技术”的改良,或者更直接一点:封装。

新技术“封装”了旧技术的细节,呈现一个更便利的接口,以方便用户调用而已。这种封装当然是非常必要的,我们谁都不愿意再从二进制和汇编开始学起。然而,技术是有连贯性的。

观今宜鉴古,无古不成今。一味追赶新技术,根基不牢,还是很容易出问题的。比如Linq问世之后,很多新人就不会写sql;JQuery出台之后,很多新人就不理解原生JS……实际开发中,还是很被动的。

这里我特别要强调一点,这并不是(不是,不是,重要的事说三遍)说我们学技术就一定要从最底层开始,这又从一个极端走向了另一个极端,完全没有这个必要。

实际上这还是一个“度”的问题。太新的技术,通常还不能解决现有的所有问题,还是需要和旧技术配合,就好像还有一个“过渡期”一样。
 
写到这里,可能有些同学会问,那要新到什么程度,或者旧到什么程度,才合适呢?唉呀,这真是个好问题啊!


我真答不出来。毕竟,好多技术,我也不了解。但总体上来说,太旧的东西,基本上你在市面上也学不到;可劲鼓吹“全新”“最新”的宣传,心里有数就是了。

END

Java面试题专栏

【30期】说一下HashMap的实现原理?
【29期】Java集合框架 10 连问,你有被问过吗?
【28期】ZooKeeper面试那些事儿
【27期】Dubbo面试八连问,这些你都能答上来吗?
【26期】如何判断一个对象是否存活?(或者GC对象的判定方法)?
【25期】这三道常见的面试题,你有被问过吗?
【24期】请你谈谈单例模式的优缺点,注意事项,使用场景
【23期】请你谈谈关于IO同步、异步、阻塞、非阻塞的区别
【22期】为什么需要消息队列?使用消息队列有什么好处?
【21期】你能说说Java中Comparable和Comparator的区别吗


技术,是不是越新越好?

我知道你 “在看技术,是不是越新越好?

原文始发于微信公众号(Java知音):技术,是不是越新越好?