程序猿:20年后,程序员还会像今天这样的高收入吗?( 二 )


既然经验难以积累,那自然不会越老越吃香了 。
程序员也有过时比较慢的技术,比如系统底层开发、驱动开发、嵌入式开发、芯片开发 。但是技术要求高,需求小,工资还不一定高(收入与市场高度相关) 。不是说技术难度越高收入就越高 。比如一个苦练20年的京剧艺术家的收入就不及一个只学过2年唱歌的流行歌曲明星 。
第二、程序员试错成本低一个人在写代码时,会非常频繁地调试(debug)以及测试(test) 。它们的成本是如此的低廉!我写代码时,基本上不到两分钟就要debug或run一下 。可以说,写的东西,立马就能看到效果 。如果写对了,或单元测试通过,皆大欢喜,如果报错了或结果不是预期,马上修改了再来一把 。但是,其他行业,就远远没有这么幸运了 。一个医生,不能对病人说,我没有把握,我给你开一剂药,咱们试一把;如果不行,咱再换一剂药 。病人不得骂死你啊 。电气上,大家把电线接好了,要开始合闸了,现在竟然谁也不敢合闸通电 。这要是烧东西了谁负责呀?于是请来了最资深的电气专家坐镇,让他亲自检查、合闸 。
试错成本低,导致了“老专家”的地位没有其他行业高,不容易受待见 。因为年轻人也可以上,错了就修改代码再来,bug嘛,没有什么大惊小怪的 。这不像医生、律师、机械、电气等其他行业,出了bug是要出人命的(包括律师的人命官司) 。这时候,经验比技术重要(因为没有试错论证机会) 。一般年级大经验多,因为接触的案例多,遇到问题就参考经验做法 。不像程序员遇到问题,就搭建虚拟仿真环境,动手写代码调试一番,经验教训的作用被淡化 。
第三、程序员的工作容易被推翻重来一个东西被推翻重来,就意味着这东西可能已经过时了,不再需要维护了,里面的细节就没有必要深究了 。如果是这样,那么老人的价值就会降低 。代码重构是再正常不过的事,其成本相对其他行业要低得多 。有时候甚至就是翻天覆地的变化,基本是使用新编程语言重新实现了一遍 。京东、豆瓣、知乎、涛宝,等等,都不能例外 。我从事的机械行业,很多同事可以自豪地说,看,那台价值几千万的设备就是我10几年前设计出来的,它的每一个细节我都了如指掌 。但是信息技术行业,却很难如此 。当机械设备出现问题,找老专家出马 。但是信息系统出问题,恐怕没人想到老专家了 。因为它早已经不知道被重构多少次了,找正在升级和维护的年轻人才是常见的做法 。
很多行业都有核心技术,不传之秘,它们就不容易被推翻重来 。信息技术领域也有,但是相对要少一些(bat、华为等顶级公司开发的除外),特别是小型业务系统 。甚至可以说得更直白一点,那东西就是靠人堆出来的 。你要不信,随便找一个高档写字楼看看,看有多少程序员,然后又有多少人做的是核心技术,大部分恐怕都是增删改查 。在他们眼中,需求远远比核心技术重要 。做需求的收入最高 。需求,或者说业务流程往往与增删改查高度映射 。
如果一个行业的某个人做技术,却不能掌握核心技术,动不动就被别人推翻,那就容易吃青春饭 。
第四、程序员学习成本相对较低这是相对的 。甚至一台电脑就能开始学写代码 。很多年前,程序员还是比较难的,因为自己要造很多轮子,要学习很多基础知识,比如数据结构、编译原理、操作系统 。现在好了,直接用“框架”呀,底层别人帮你实现好了,你只需要专注业务即可 。然后就变成了,我们比的不是谁的数学好,谁的基础扎实,而是比谁更熟悉“框架” 。最后还会变成,就比谁更熟悉需求(业务) 。甚至一度认为高大上的人工智能深度学习,也慢慢变成了“调参高手”,意思是说,我不需要懂数学,别人(以外国人为主)现成的算法都写好了,我调调参数就能用了 。这是一门体力活,非常花时间,也很挣钱 。