引子
本周,甲方客户要求排查一个 Apache Struts2 文件上传漏洞(CVE-2024-53677)的系统漏洞。而我们目前运行在生产环境的系统框架是 Struts 1.0 版本,如果不是这次排查,我都快忘记还有 Struts 这个框架了。
既快
自 2008 年进入编程行业以来,当时流行的 Java 开发框架是 SSH(Struts2 + Spring + Hibernate)。后来 MyBatis 逐渐取代了 Hibernate,再后来 Spring MVC 直接替代了 Struts 的分层架构。有那么几年,面试必问 SSM 相关问题。大约从 2018 年之后,所有系统都转向了微服务(阿里巴巴起了不小的推动作用),直到今天,几乎所有大型 Java 系统都基于 Spring Boot 的 Spring Cloud。
转眼间,17 年过去了。如今 AI 全面赋能,各种智能编程工具和代码助手早已嵌入程序员的日常工作中。在开发框架和范式未变的前提下,开发效率得到了巨大提升。
开发框架的每次升级换代,在带来开发效率巨大提升的同时,也提升了系统性能、业务流程的复杂度和定制化需求的多样性。开发虽然变得更简单了,但需求也更多了,两者相辅相成。
又慢
正如我们的软件系统仍在客户生产环境中继续发挥作用,前端是纯 JSP 页面,工作经验 5 年以内的程序员可能都不知道还有这种页面。从第一版系统开始算起差不多有 15 年了,一些早期客户仍在使用(没钱升级),这种情况在金融系统领域其实比较常见(后台都是”屎山”代码)。这些十几年的系统穿越了云服务时代,一直延续到现在的 AI 时代。只要客户没钱或者不想折腾,这些系统就会继续存在。
看着这些老气横秋的系统,上午可能还在开会研究 AI 如何降本提效,下午就得研究 SSH 框架系统的各种 bug,思考如何在 JSP 页面上实现”花里胡哨”的需求。这种反差让人感觉时间缓慢,甚至产生了穿越感。
自动化喊了几十年,但从工业革命开始到今天,打螺丝的工作依然有大量的人在干。
未来
程序员这个职业作为时代的宠儿,是戴着光环的”贱民”,身披荣耀又脚踩荆棘。
程序员的黄金时代已经过去,但未来(至少十年内)并非明日黄花,应该还是白银时代。作为接近 20 年的老兵,每一次技术变革带来的既是挑战也是进化。
AI 带来的不仅是开发方式的改变,更重要的是学习方式的变化。获取知识的路径和范式都发生了改变。
知识的学习曲线变低了,这导致只有深度学习的人才具备生产力,而深度学习将变得更难。也就是说,获取知识越容易,真正掌握知识反而越困难。
这句话很多人不太理解,我举例说明:互联网时代,知识几乎随处可得,但大多数人并不会主动获取知识,更多时间花在了娱乐上。特别是在短视频时代,别说读书了,能安安静静地看两个小时电影都很难,因为女主角叫小美,男主角叫大壮,几分钟就能看完一部电影。人性就是:越容易得到的越不会珍惜。
保持好奇、拥抱创新、深度学习,技术本身并不重要,解决问题才是核心。
程序员的悲哀:持续学习
程序员的荣幸:持续学习
PS:
本文写完之后,我交给 AI 帮我润色了下语句和修改了一下语法错误。