我所经历的二十年技术演变,一路狂奔到今天

640?wx_fmt=png

做软件开发行业的,都担心新技术浪潮不断来袭,把自己拍死在沙滩上,真是是这样吗? 

我主要做Java后端开发,也感受到了其他领域的潮起潮落,给大家分享下自己的看法。

首先我把这些新技术分为4大类:渐进性,颠覆性,基础知识和新兴技术。

1.  渐进性的技术

1.1 Java 后端开发 

我是Java后端开发背景,所以先从这个点开始。

二十年前,开发Web系统的技术栈非常简单,就是 Servlet + JSP +JDBC  , 没有那么多层的抽象和封装。

然后在MVC领域出现了Struts , 在ORM领域出现了Hibernates ,iBatis(MyBatis)。

企业界曾经力推过EJB, 但是过于笨重,繁琐,最终被轻量级的Spring所替代。

前端的兴起,导致MVC中的View被拿走,后端专注于提供接口,输出数据。

应用架构从单体应用,过渡到微服务,再到Service Mesh。

1.2 View 层

View层最早由后端生成,可用的技术:JSP, Velocity,Freemaker 等。

界面的交互主要是程序员直接用JavaScript 操作DOM, 后来有了jQuery, Prototype等类库的帮助

后来出现了React , Vue, Angular 等框架,实现前后端分离。

1.3 编程模型 

从基于Servlet的阻塞式模型 , 慢慢过渡到非阻塞的、事件驱动的、 反应式的的模型,如Node.js ,SpringWebFlux , Vert.x等

线程模型:从共享内存,逐渐发展到Actor , Go routine

编程语言从过程式,发展到面向对象,再发展到面向对象+函数式

1.4 工程实践

从瀑布发展到敏捷

部署方式:手工安装 ->持续集成 -> DevOps

代码+配置文件  -> 代码+配置文件+运行环境, 即Docker,然后是 K8s

1.5 总结

之所以说是渐进性技术,是因为这些技术是慢慢发展起来的,通常是为了解决原有技术的痛点问题而发展起来的。

只要你热爱技术,会一直不断奔跑,根本就不用惧怕。 

例如你学会了面向对象这种编程泛型,自然而然地就想去看看函数式,这样当Java 8中的函数式编程来临的时候,你肯定不是惧怕,而是欣喜:Java终于支持函数式了。

再比如你发现手工做Build费时费力,容易出错,会想办法自动化,持续集成的概念和相关工具自然而然进入你的法眼。

2. 基础性的技术

特点:基本上没怎么变过,只要学会,就不怕被吃掉。

包括数据结构和算法,操作系统,计算机网络,组成原理,数据库,编译原理等。

再加上分布式的基础知识

3. 颠覆性的技术:从桌面发展到互联网

由于服务的用户规模完全不同,直接导致所使用的技术栈有天壤之别。

桌面应用主要用VB, Delphi,VC++开发单机或者C/S应用,运行在客户的电脑上。

而互联网应用使用的则是LAMP,Java,Python等技术,主要运行在服务器端,客户端变得非常薄只剩一个浏览器了。

互联网发展起来以后,桌面应用的开发极度萎缩,如果没有及时跟进转型,肯定被技术吃掉。

但是这次转型并不会那么难,因为Web系统刚开始的时候用户量小,是非常简单的,很多桌面开发的程序员都可以轻松转过来。

但是,由于和新人站在统一跑线,老家伙的优势在哪里?

我觉得在于对设计思想的理解:抽象,分层,异步,模式,OOD......  这些东西,再加上基础知识的实践和运用,老家伙依然有能力跑到前面。

4.  新兴技术

老的技术依然存在,但是这些新的方向非常火热,薪水高,供不应求。

4.1  从互联网发展到移动互联网

这一阶段出现了全新的岗位:App开发。所需要的技能得从头儿开始学习,想转行赚大钱的老家伙们和新人站到了同一个起跑线。 

但是有些掌握了基础知识,通用知识和设计思想的老家伙会跑得更快:他们本来就对界面编程很精通,对于界面布局,事件响应等信手拈来,他们对网络编程也很熟悉, 现在只需要在一个新的框架下,使用新的概念和组件来完成手机端的界面和逻辑。

随着App建设热潮的过去,App开发已经逐渐冷却下来。

4.2  大数据,人工智能

大数据是新出现的方向,包括大数据开发,大数据分析。 

从后端开发转向大数据开发不是很难,也有很多成功的案例。需要学习Hadoop,Spark,Storm等相关框架的使用原理,Flume, Kafka等数据流工具,爬虫,分词,数据可视化等。

相比之前谈到的技术,大数据分析和人工智能是两个“异类”,尤其是人工智能,程序员要想转型到这里领域,需要跨过它树立的数学门槛:统计学,线性代数,微积分,概率。

现在人工智能非常火热,它会变成一种颠覆性的技术,吃掉前端开发/后端开发/大数据开发/App开发吗?现在看是不可能的,因为现在的AI还不是通用的人工智能,只能在某个领域内产生作用,在大数据的基础上做出分析,找到规律,做出判断和预测。 

而人工智能和大数据分析所使用的数据其实来自于App, 网站,再加上现在慢慢兴起的物联网, 他们不是替代,而是依赖的关系。

总结一下,进入这个行业,就需要不断地夯实计算机基础知识,在工作中寻找,学习,实践那些稳定的知识,然后不断对自己做技术升级,确保在自己的领域能跟上趋势。这样即使转型的时候,依然可以占据优势,不被技术吃掉。


640?wx_fmt=gif


码农翻身公众号开放投稿,可能是全网最高片酬:

用故事讲技术 ,稿费1000

技术/职场/感悟/面试等,稿费700

翻译类文章,每千字200

联系方式:onlyliuxin97(微信)

详情猛戳: 可能是全网最高片酬,速来!

往期精彩回顾

我是一个线程

我是一个Java Class

面向对象圣经

函数式编程圣经

TCP/IP之大明邮差

CPU阿甘

我是一个网卡

我是一个路由器

一个故事讲完HTTPs

编程语言的巅峰

Java:一个帝国的诞生

JavaScript:一个屌丝的逆袭

负载均衡的原理

阅读源码的三种境界

640?wx_fmt=jpeg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值