
阿里
今年已经发生了两起重大事件,前有
阿里,后有滴滴。那这些事件的根源究竟是什么?其实是程序员太年轻了。程序就像在毫无防护的情况下运行,国内的
互联网应用轻易就能被攻破。在技术网站上,我们经常能看到诸如XXX踩过的坑这样的文章。为什么会有这类文章?就是因为程序员能力不够,把产品当作试验品,将自己还不熟练的技术应用到产品上,从而引发了重大
事故。在这个过程中,程序员得到了成长,可企业却遭受了损失,关键是企业并没有察觉到这个问题。工程师往往是在
事故当中成长起来的。外企在
招聘的时候通常会选择有经验的工程师,是之前的企业承担了工程师的培养以及他们在犯错中成长的成本。而
中国企业却把有经验的工程师输送给社会,转而聘用年轻且缺乏经验的人员。就
互联网这种已经比较成熟的技术而言,出现
事故本应该在用户毫无察觉的情况下就解决掉。可是
阿里和滴滴的
事故处理都长达数小时,这难道不是很可笑吗?直到我进入
深圳的某家加油
公司工作,才明白这并非是个笑话。就那家
公司的系统而言,简直就是在毫无防护地运行。很多接口没有鉴权,访问也没有权限控制,整个系统都是采用默认配置。还好
裁员有N + 1赔偿,不然真的难以想象。现在的员工还是比较善良的。
中国员工的平均在职时长,80后是3年,90后是2.5年,00后则随时可能离职。很多技术随着员工的离职,加上交接过程中的缺失等情况,就被搁置了。等到出现
事故的时候,处理问题的人临时去翻看前人留下的杂乱无章的代码,光是理解之前的逻辑就需要花费一定的时间,改动的话可能会产生新的BUG,不改动又解决不了问题,所以排查和处理的时间就变得很长。十几年前,我们80后的程序员平均都有10年的工作经验。当时做外国项目,和
IBM一同工作,与
雅虎的
php核心团队一起工作,后来还和Perl核心开发团队共事,也和OpenJDK开发者一起工作。那些外籍同事的年龄都在30 - 50岁之间。记得在
雅虎的时候,我们遇到一个问题,询问外籍同事,他说等他15分钟,然后就发过来一个
php包,是专门为我们修改过的
php解释器。还有和Perl团队合作的时候,他们的代码可以追溯到80年代,使用CVS版本控制。外籍同事能告诉我们去哪里找某个文件,大概在第几行,怎么修改。他在
公司工作了大半辈子,对每一行代码都非常熟悉。运维工作做得越好,就越清闲,可HR却越看不顺眼。运维人员的成长是靠大量的
事故磨砺出来的,这是一个极度依赖经验的岗位,而且经验很难复制。因为每次出现的故障都不完全相同,只有亲自处理过才能知晓,临场处置能力是运维人员的核心能力。