当前位置: 首页 > 科技观察

程序员积累的编程知识有多少十年后就变得无用了?

时间:2023-03-17 17:08:25 科技观察

作为一个资深的后端开发者,看到这个问题的时候真的很感动。在很多人看来,也许十年甚至五年后,通过努力积累的编程知识就没有用了。事实上,情况并非如此。我们要把后端需要掌握的技术分为三个层次。计算机基础主要是操作系统、数据库、数据结构与算法、计算机组成原理、计算机网络、编译原理。这些知识几十年没有变,再过十年也不会变。基础是坚如磐石的,投资于它们永远不会赔钱。中间层和应用层这两个层随着时代的变化正在发生剧烈的重构。但是一个人10年后积累了多少知识,取决于一个人进入这个行业时所处的技术发展阶段。技术的发展不是颠覆性的,而是循序渐进的。它不会一下子消失,只会被边缘化。小李在90年代中后期进入这个行业。他花了大量精力学习VB、PB、Delphi等开发C/S应用程序的软件,并准备大显身手。他会发现桌面C/S应用被边缘化了。小张在互联网初期入行。他先后接触了ASP、JSP、EJB、Websphere、Weblogic、Struts、jQuery、SOA、RubyonRails。这些技术在十年甚至二十年后仍在使用。但只能在遗留系统中维护。小刘是在移动互联网蓬勃发展的时候入行的。他可能接触过nginx、Redis、ElasticSearch、Kafka、Docker、k8s等技术。十年后,只要没有大到足以扼杀移动互联网的技术变革,这些技术应该还在。技术消失的原因技术消失和边缘化的原因主要有两个:1、EJB不好用,繁琐繁琐,被轻量级的Spring所取代。ASP、JSP写网页,很容易把逻辑和显示混在一起,把代码搞得一团糟,最后被前后端分离的技术所取代。Struts的配置繁琐,已经被SpringMVC和SpringBoot彻底淘汰。2002)和nginx(2004)。为了解决数据库读写慢的问题,出现了Redis(2009)和ElasticSearch(2010)。为了解决数据库单机性能不足的问题,出现了主从分离、数据复制……为了解决单机维护成本高、无法灵活扩展、部署周期长等问题applications,micro-services(2012)出现了。服务发现、熔断、负载均衡、注册中心等相关技术。为了解决分布式环境下的高吞吐消息订阅,Kafka(2011)出现了。为了解决环境和应用部署不一致的问题,出现了docker(2013)和k8s(2014)。...程序员生存的残酷环境理论上,很多技术的本质并没有变,只是形式变了。不管是ASP、JSP、Struts、EAD4J、SpringMVC、RoR……都是Web编程。本质上要解决的问题是URL与代码的映射、数据的校验、转换与绑定、Web安全……无论是Hibernate、MyBatis,还是ActiveRecord,都属于ORM的范畴。SpringCloud的服务注册和发现,明显有SOA时代的痕迹。只要理解好原理,就像黑客帝国中的尼奥看穿黑客帝国一样,可以在技术领域纵横驰骋。现在最大的问题是网络发展太快,编程技术层出不穷,学不会。因为技术太多了,每一种技术都需要花费大量的精力去学习,想要掌握所有的知识几乎是不可能的。有基础的老程序员学起来会更快,对涉及的技术原理也能很快掌握和理解。但是,在技术细节和最佳实践方面,老程序员和新程序员拉开差距并不容易。对于兼顾管理的技术人来说,更不可能深入这些技术的细枝末节。理解原理后,能和团队成员就重点进行讨论就好了。如果公司主要从事应用层业务的定制开发,则无需研究底层操作系统、数据库、编译、计算机网络、分布式系统,也不需要深厚的技术积累。人人都是CRUD男孩,包侠,为Google/Stackoverlfow/百度编程……老程序员积累的经验没用,相对新程序员性价比也不高。可惜这样的公司在中国居多。互联网行业如日中天,人人都好。一旦情况发生变化,裁员将落在薪水更高的老程序员身上。在中国的软件行业,不是技术淘汰人,而是人淘汰人。