首先,程序员所涉及的技术更新换代快,经验难以积累。
计算机编程,总共出来才几十年,现在还在快速发展,更新非常快。从DOS编程到windows编程,Linux编程,再到移动编程。每次跨度都很大。需要不断熟悉不断变化的操作系统、虚拟机(或解释器)、编程语言的框架和发动机。比如你做Android,你必须熟悉Android操作系统,你必须使用Python,你必须熟悉Python的解释器,你必须使用spring框架,你必须熟悉这整套不断更新和迭代的大家伙,你必须遵循不断升级的Web标准。我终于学会了表格布局,结果出了一个div+css,我终于掌握了jquery。所以,我听说vue很受欢迎...一项技术成为主流后,之前积累的经验就会变成过时的技术。例如,如果一个人现在40岁,那么他可能在35岁之前学到的东西一文不值。医生、律师、机械、电气都没有这个问题。以PLC编程在电气中更新较快为例,我接触了20多年,现在和以前,还是没有什么变化。没听说过20年前电气工程师的经验过时。
既然经验很难积累,自然不会越老越受欢迎。
程序员还具有系统底层开发、驱动开发、嵌入式开发、芯片开发等技术。但技术要求高,需求小,工资不一定高(收入与市场高度相关)
我们看到IT行业每隔10年左右老的技术就会遭到淘汰,新技术就会诞生。您大学时学的编程知识和技巧,到三十五岁时就基本上过时了,您如果继续编程是竞争不过小鲜肉的,毕竟他们的新知识还热乎乎的呢。这时候大部分的资深程序员基本上都靠给过去开发的系统做升级改造维持。产品周期短、技术更迭快是导致程序员吃青春饭的主要原因。
那么程序员如何才能持续发展自己的职业生涯呢?我觉得程序员虽然是脑力劳动,但事实上跟操作工差别不大。因此,抱着写代码不放满脑子都是算法和逻辑是行不通的,要注意积累行业知识和产品知识,及时转入上游设计或管理工作,才是长久之计。
第二、程序员试错成本低
一个人在编写代码时,会经常调试(debug)和测试(test)。它们的成本是如此的低廉!写代码的时候,基本上不到两分钟就要debug或者run。可以说,写的东西,马上就能看到效果。假如写对了,或者单元考试通过了,大家都很高兴,如果报错了或者结果不是预期,马上修改一下。不过,其他行业,远没有那么幸运。医生,不能对病人说,我不确定,我给你开一剂药,我们试一试;如果没有,我们再换一剂。病人不得骂死你啊。电气方面,大家把电线连接好,开始关闭,现在竟然谁也不敢关闭通电。如果这是烧东西谁负责啊?于是请来了最资深的电气专家,让他亲自检查、合闸。
试错成本低,导致老专家地位不如其他行业高,不易受欢迎。因为年轻人也可以上,错了就修改代码再来,bug,没什么大惊小怪的。不同于医生、律师、机械、电气等行业,如果出现了错误,就会出人命(包括律师的人命诉讼)。此时,经验比技术更重要(因为没有机会进行试错论证)。一般年级有很多经验,因为接触的案例很多,遇到问题可以参考经验和做法。不像程序员遇到问题,建立虚拟仿真环境,动手编码调试,经验教训的作用被淡化。
第三、程序员的工作容易被推翻重来
一件事被推翻重新开始意味着它可能已经过时,不再需要维护,细节也不需要深入。如果是这样,那么老人的价值就会降低。代码重构正常,其成本远低于其他行业。有时甚至是翻天覆地的变化,基本上都是用新的编程语言来实现的。京东、豆瓣、知乎、陶宝等,都不例外。我从事的机械行业,很多同事可以自豪地说,看,价值几千万的设备是我十几年前设计的,每一个细节我都知道。但是信息技术行业,却很难这样做。当机械设备出现问题时,找老专家出马。但是信息系统出了问题,恐怕没人想到老专家。由于它早已不知重构多少次,寻找正在升级和维护的年轻人才是常见的做法。
许多行业都有核心技术,不传秘密,它们不容易被推翻。信息技术领域也存在,但相对较少(bat、华为等顶级公司开发的除外),尤其是小型业务系统。甚至可以说得更直白一点,那东西就是靠人堆出来的。如果你不相信,就找个高端写字楼看看有多少程序员,然后有多少人做核心技术。恐怕大部分都是添加、删除和修改。在他们眼中,需求远远比核心技术重要。做需求的收入最高。需求,或业务流程往往与增删改查高度映射。
假如某个行业的人做技术,却不能掌握核心技术,总是被别人推翻,那就容易吃青春饭。
第四、程序员学习成本相对较低
这是相对的。甚至一台电脑也可以开始学习编写代码。很多年前,程序员还是比较困难的,因为他们要做很多轮子,学习很多基础知识,比如数据结构、编译原理、操作系统。现在好了,直接用框架啊,底层别人帮你实现好了,你只需要专注业务就可以了。然后变成了,我们比较的不是谁的数学好,谁的基础扎实,而是比谁更熟悉框架。最终也会变得比谁更熟悉需求(业务)。甚至有一段时间,人工智能的深度学习也逐渐成为一个参与者,这意味着我不需要理解数学,别人(主要是外国人)现成的算法已经写好了,我可以调整参数。这是一项体力活,非常耗时,也很赚钱。
由于学习成本低,还得益于两点:一是盗版软件,不花钱就能享受顶级体验,二是开源精神。其他行业没有这么好的东西,要花真金白银买实验设备、材料才能自学。
很多编程问题都可以通过搜索引擎找到答案,很多人也笑称我们是为百度(谷歌)编程。但是其他传统行业就没那么幸运了,网上资源也不好。他们遇到的问题,不是找百度,而是找师父,找老专家。老专家的地位自然的地位。医院招一个应届硕士生,首先要跟师父(老师)学习至少一年,没有工资,然后敢慢慢开始,而且一定要非常谨慎,人命关天。一周熟悉业务,一周熟悉新技术点,两周后开始工作,遇到问题,你先百度。区别就是这么大。
在大多数情况下,学习成本越低,吃青春饭就越容易。由于门槛低,有更多的人和你抢饭碗。