乱世之中, 唯有自我与我所爱值得珍惜

很久以来我一直在思考一个问题,为什么对于别的技术型职业,例如医生,教师,高级技工,裁缝,厨师,从业者的从业时间越长越吃香,而唯独中国程序员深陷于35岁魔咒之中.抛去国内劳动力市场扭曲的供求关系,还有一个经常为人所忽视的原因是最佳技术选型尚处于迭代之中.

与其他行业漫长的发展历史相比,计算机行业是一个"小年轻",而其下属的软件行业更是初生牛犊.理工农医,文史哲艺,经管法教,每一门学科都发展了百年以上,其中一些的历史更是与人类文明史一般漫长.反观计算机行业,现代计算机的理念是由图灵在1936年提出的,而第一台可编程通用计算机则是在1945年出现的.这仅仅只是一个开始,由于行业的特殊性,直到1978年x86架构出现以及1973年C语言出现,软件行业才算是开始发展.如此算来,当代如日中天人人羡艳的程序员行业,仅仅只有五十多岁,比我们的爷爷奶奶辈都要年轻不少.如此年轻的行业,势必还有很大的提升空间.

另外,软件行业的发展也随时受硬件发展的影响,20年前寸土寸金的内存在今天已经不再成为用户使用的瓶颈,那些为了充分利用内存而想出的奇思妙想也不再为人所津津乐道.硬件成了绝大部分软件开发任务中最低廉的成本,而人力成本占的比重则越来越高,这也是为什么诸如Electron之类的框架能够大行其道.这只是硬件影响软件的案例中影响比较小的案例,其他的硬件变革,例如苹果Arm架构对传统x86架构的冲击,苹果共享内存在人工智能领域对英伟达的优势,乃至于可能出现的量子计算机,都正在对软件行业产生持续性的影响,而这些影响所能带来什么样的改变,目前还说不好,毕竟计算机是一个相当年轻的行业,连硬件都没有达到公认最优的状态(架构,指令集,容量,寿命等等),更何况是在此基础上的软件行业呢?

哪怕是抛开硬件变化的影响不谈,软件领域内部也在不停更迭中.

论编程语言,不说typescript,coffeescript这些在javascript基础上发展的语言,且说golang和rust两位抛弃面向对象的后起之秀已经开始凭借它们优秀的设计分别在业务领域和基础设施领域逐渐蚕食java和c++的份额,后两者由于拥有成熟的生态和大量的已有实践导致开发者经常陷入编程语言的选择困难症,在此基础上还衍生出了各种编程语言宗教.而golang和rust就是最棒的编程语言吗?我不知道,在下一个更好的语言出现之前,没有人知道这个问题的答案.

论体系架构,越来越多的应用也正经历从私有的服务器迁移到云平台的过程,开发者以此能够更加专注于业务代码的开发而将更少的精力浪费在运维上. 但云就是软件架构的终点吗?我也不知道,至少云带来的可信问题和安全问题正在被很多人研究.

论应用框架,桌面程序的开发框架就有好几种,现在比较流行的Electron框架出来也不过10年,而新的框架也随着rust的兴起如雨后春笋般出现.前端领域中,vue angular react几个框架打得不可开交, 哪怕是久居象牙塔的人工智能领域, 也开始出现rust零星的影子…几乎每一个领域都在变革,每一个领域都没有统一的最佳框架.

我几乎笃定,在我们这代人死后,计算机行业依旧不会发展到到像医学和法学那样成熟的地步,所以对于开发者来说,纠结框架,纠结语言实在是大可不必. 我们只活一次,与其把热情押在不一定永恒的符号集合上,不如好好生活,多关心关心身边人.