对于一个以技术为职业的人来讲,技术的更新换代是个不小的坎,很多人步入中年就没有了学习的动力,对层出不穷的新技术望洋兴叹,这时候要么在原技术岗位上硬称,要么改变自己的职业,比如转向管理或是创业。其实无论怎么做,都是件不容易的事,或许在本身的道路上坚持下去,可能结果还会好一点。之所以害怕技术更新,是因为自己掌握的东西跟不上时代了,然后自己跟着淘汰了。仔细分析一下原因,也许只是自己的惰性在作怪,技术换代真的那么可怕吗?未必!
其它行业咱不懂,就不说了,隔行如隔山,就说说IT行业。至少在IT这行业中,很多产品或项目的失败并不在于技术,而是需求的把控上。很多业主并不知道自己需要什么,没有调查过市场,不知道终端用户究竟需要什么,只什么拿一个技术方案生搬硬套,他们可能认为项目失败的原因是自己的技术实力不够强,对新技术掌握得好的人才太少。这种想法是错的,所谓的新技术到底有多新呢?究竟新在什么地方呢?
我个人总结,所谓新技术,实际上有两个层面的东西。一个是基础性工具的创新,这类工具并不产生最终端用户接触的那个程序系统,他只是用于构建最终的应用系统。另一个是思维层面的创新,这类创新跟技术本身关系不大,更多的是方法论在技术平台上的实践,懂了它的思想也就掌握了这门技术。
工具性创新某种程序上来讲,近几十年其实也没有什么特别革命性的东西,因为最底层的二进制运算始终没有变过,变的只是上层的东西,但相对来说因为某此东西并不直接最终产品,所以也算是技术更新,这种技术可能会需要相当的学习成本,也可能不需要,多数时候技术的变革对终端产品用户是不可见的,很多时候也是不需要关心的。比如9几年出现的Java,2001年出现的.Net,这类技术在原来的二制基础上加了一层虚拟技术,让程序开发变得更友好。包括近期出现的Go也是这个目的,但纵观这类新技术,在程序的开发方式中并没有绝对的颠覆,始终脱离不了迭代、循环、算术运算、逻辑运算这些东西,若说学起来有多难并不见得。
关于方法论的东西,这本身就是要一直改变的。当初为了写一个程序,代码中直接插入了复杂的Sql脚本,等到代码多到一定程度的时候,发现现有的开发模式有问题,于是便想出新的方法来解决这个问题,比如将代码进行逻辑上分层,这样就可以分层几个项目来分别开发,每层之间使用一定的协议进行规范,比如MVC、ORM等都方法论的实践,这类东西并没有改变技术本身,只是换了一种程序实现的方式。然后为了项目的快速展开,更有人把一些通用功能独立出来,进行组件化后,再拼合在一起就成了所谓的框架,比如J2ee,Spring等,这种也是方法论,对于这类的技术掌握在于开发人员遇到过的项目规模,这不是简单学就能理解的,都是实践出来的。
总结一下,所谓的新技术很多时候都是新瓶装陈酒,本质上并没有太变革,比如现在很多MVVM框架,不过是旧有技术的再利用,Angular、VUE之流也不过JS重新包装,以实现某种所谓的模式,如果你写过原始的JS,然后转到这上边来会有什么困难呢?还有所谓的大数据与人工智能,这里也是有关算法的问题,算法本来就是少数人研究的,如果你能参与到算法研究的行列中,那么早就没职业前途的担优了,否则就是自己太过恐惧。新技术也许并不新,只是你把它相像得太新了。