年长的软件工程师为什么不受待见?

不同的职业有不同的特征,有些职业极其依赖人脉,比如 sales、PR/GR、投资人、猎头等,人脉的积累不可能一蹴而就,一定需要长时间的经营。有些职业极其依赖经验,如律师、医生、管理职位等等,有很多经验必须通过实践积累,只依靠系统教育是完全不够的。对于这些需要人脉和经验的职业,越老越吃香,相对的,这个行业年轻人会很苦很累,赚的也不多。

我们再来看一下软件工程师这个职业,我觉得核心竞争力在于:思维能力、经验,以及精力。(基础知识储备是必备要求,不能算竞争力)

  1. 思维能力:思维能力我不知道该怎样刻意的去锻炼,仅从结果来看,对于脱离教育系统后的成年人,似乎很难见到有人思维能力上还会有很大的提升。
  2. 经验与精力:工程师的经验,当然不可以说不重要,但是相对其他职业,确实没那么重要。

医生经验不够会把人治死,律师没有经验会让客户入狱。工程师呢?一个经验丰富的资深工程师可能做完一件事只需要一小时,新手要三小时。那年轻工程师加班搞就好了,没什么大不了的。年轻人的精力可比中老年人多太多了。

这是由现在的市场需求所决定的,大部分软件工程师的岗位的需求是能「出活」,只有极少数岗位的要求是「出好活」,由于现在软件分发的成本太低,经验差写出 bug 不是一个很严重的问题,补测试人员和勤发更新就能弥补。

由于要求只是「出活」,是可以靠堆人解决的,而且一个高级工程师的工资可能可以抵 2–10 个初级工程师,即使假设精力相同,你也需要保证你的经验带来的效率提升能和你的工资成比例。而对于医生、律师等职业,你拿 100 个初级医生来也取代不了 1 个资深专家。

所以,软件工程师这个职位的发展曲线对年长者不友好,是一个由市场决定的客观事实,你不能指望因为公司的仁慈去解决。而且相对的,所以这个行业的年轻人才能明显比其他行业赚的多。

那怎么样去改善这个事情?个人上:

  1. 让自己的经验在那些更不容易被抛弃的事情上去多积累,比如那些 Web 框架每几年就更新换代,如果你的经验都是在这个层面上的,那么很快就会被时代抛弃。相对的,比如像搜索引擎技术的经验就非常宝贵,坊间传闻大公司这种职位,宁愿发高薪让你在那躺着,也不会让你跳槽出去。
  2. 如果评估自己后觉得自己未来和年轻人竞争确实没有什么优势,尽早开始积累其他职位的经验,最常见的就是管理职位。

外部条件看:

  1. 希望政府和企业加强对劳动时间的限制,不能让有更多精力的年轻人以牺牲更多时间的方式进行竞争,中老年人承担着更多的社会、健康和家庭压力,这不公平。用流行的话说叫内卷。
  2. 等待市场对工程师具体需求的转变,不再是以「出活」为关键,有更多的必须要靠丰富经验才能「出好活」的职位。

一个衍生问题是为什么近年来几乎所有的软件质量都在下滑?

  1. 互联网发达分发成本降低,Bug 的修复成本变低了。
  2. 各种软件系统越来越复杂,越复杂就越容易出问题,这是真理。
  3. 开发流程的问题,产品经理设计需求,工程师负责开发,最后测试团队测试,最终有 Bug 这个锅大部分情况会丢给测试,但是测试绝不可能覆盖到所有场景,如果工程师不用对最终问题负责,那么闭着眼写等测试报 Bug 再修就好了。