聊聊什么是“技术含量”?

面试的时候我见到过不少毕业没几年的候选人,被问到自己想换工作的原因,会说感觉现在做的事情没有什么技术含量,所以想找个有技术含量的公司,做点儿有技术含量的事儿。

然后我让他举个例子,讲讲怎么个没技术含量了?他会说,天天就是写些业务代码,天天就是CRUD,代码Copy来Copy去,用的技术也特别陈旧,感觉自己的能力完全发挥不出来,已经到了职业生涯的天花板了。讲得头头是道,让人感觉他不换工作,就要被整个公司拖累了,这辈子都要白活了。

然后我再问,你感觉什么是有技术含量?他说,怎么着也得有上千万活跃用户,几十亿PV吧。要不然数据量没到这个量级,根本遇不到太严重的问题,也根本用不到那些有技术含量的方案去解决。

一般聊到这里,我就开始准备收场送客了。客观原因是我们目前没有几十亿PV,怕他会觉得工作内容匹配不了他的能力与愿景。主观原因是我认为他对于什么是有技术含量的有偏见,同时自身能力也不合格。在我看来,对于绝大多数十年以下工作经验的人来讲,没有技术含量低的项目,只有技术含量低的实现方式。不要抬杠说一个登录页面和自动驾驶系统能一样吗?

但是礼貌起见,我会继续和候选人聊聊他们的技术栈。问问他,现在在写的CRUD代码,是哪部分让自己感觉特别无聊,有没有什么可以改进的地方?他在Copy Paste代码之前,有没有想过其他的更合适的方式去实现同样的功能?如果在这部分,这个候选人能够表现出任何一点先调研再开发,有任何一次用公司尚没有人用过的方式去做事的心气,我都会充满兴趣地继续聊下去。然而遗憾的是,几年中,但凡是前述方式解释自己换工作原因的人,能表现出自这一点的,我印象中是一个都没有。

这些东西干巴巴地讲比较模糊。我举个例子。

曾经遇到一位3、4年经验的候选人讲,他们公司的接口层代码,全部都是从HttpServletRequest中解析参数,自己反序列化,天天好多时间就写这种get/set代码。感觉特别无聊,而且学不到任何东西。我问他你知道PathVariable和RequestParam么?他说好像见过,但是公司现有的代码没有用这个的,自己也就没有用。我问他,你觉得现在这个不好,那你有试着找过更好的方式吗?他说他天天就忙着写代码,天天加班到10点11点,哪有时间学新东西呢?

其实这种人非常被动,如果没有人强压着灌输一些新知识,他永远就只会用自己已经熟悉的方式去做事儿。我有时在想,这是我们从小接受的教育模式使然,还是说有的人性格就是这样呢?我倾向于两者共同作用的结果。

那位候选人倒还比较谦虚,面到后面就闲聊了些东西,他问我有什么建议,我便建议他,如果想有进步,以后可以这样做:假设有一个任务,做过类似的,也知道如何做,估的时候大概要花一天。怎么做呢?先不要去做,先花4-6个小时尽可能多地找可行的方案,然后用自己能找到并能控制的最佳方案去做;大概率2个小时就可以搞定;如果找不到怎么办?这个时候再加班搞定;这样坚持个几年,基本上工程技术上就没什么问题了。

只是不知道他后来有没有听进去。因为现在想来,我当时漏了一个关键点没有提醒到他。就是这种做法,大概率会受到保守型的上级领导的挑战。一句话就能让这些主观能动性不高的人打起退堂鼓:用什么新的做法?出了问题,你负得起这个责任吗?如果自己他不坚持,他是不会有机会实施这种做法的。如果他坚持,哪怕是保守型的领导,大概率也会支持的(当然,如果不是什么大事儿的话)。

这种事儿还有另一种做法。就是先做,只是做的过程自己需要保证不出问题,做足预案,出了问题自己第一时间搞定,全部搞定之后,直接拿结果说话。当然这种做法一般会非常累,因为时间是不变的,要做的事儿可远比沿用老的方式直接做要多得多。很多人自己就不愿意承担这种多做些不一定有成果的事儿的风险。当然也就失去了这种方式快速成长的机会。虽然这种机会其实天天都有,事事上都有。

一直沿用老的低效率的方式做事,从不思变,看着是勤快,其实是懒。就这么一直懒着,怎么可能有技术含量呢?

所以说回面试,以后面试,除非你真的已经是个大牛了,否则不要讲公司的东西没有技术含量,那只能说明你自己没有水平,而且没有成长空间。哪怕你就说钱没给够,哪怕说你觉得你领导是个混蛋和不来,也比说你觉得公司的项目没技术含量要好些。

PS. 虽然我印象中,我自己被面试时,好像也有这么说过。然而不同点是,如果我说了,我也能证明我是对的。