为什么全栈工程师不喜欢被这样称呼

读前推荐

让唯品会风控团队飞起来的技术和思想

试试这篇博客

今天参加了GDG组织的Full stack engineer的分享,才发现关心全栈这个概念的人好多,全栈是很多人的目标。可是我接触下来的人,很多人都可以被称作全栈,但都不喜欢被叫做全栈。也有人叫我全栈工程师,我笑称自己是爆栈工程师。今天借着胃疼睡不着,写写这个话题。

常人眼中的全栈工程师

听了好多,大家眼中的全栈工程师大概具有如下主要特点:

  1. 会很多技术,前后端都会,少于7、8种语言不好意思说全,热点技术名词全知道,都会点
  2. 但是单拿出来某一项都不能被称作精通,普遍被认为是会的很广,能力强但是人每天只有24小时,学的多自然就被分散了

梦想成为全栈的人感觉全栈代表了超高的战斗值,什么都会的超人。

反对全栈的人感觉现在这是一个分工越来越细的社会,术业有专攻,全栈不符合人类进化。

梦想成为全栈的人开始拼命学新技术,左手Java快速入门, 右手UED,周一《人人都是产品经理》,周二《深入Linux内核》,他们不禁疑问到底要学多少才能是全栈。

反对全栈的人周一《深入Java虚拟机》,周二《深入Java虚拟机》,周三《深入Java虚拟机》,周四《深入Java虚拟机》,周五《深入Java虚拟机》,周六《深入Java虚拟机》,周日《如何治疗颈椎病》,他们疑惑的是到底学多深才能是资深。

局外的人疑惑的是,我该走什么路线,到底什么是未来?答案:都是。听上去似乎是废话,接下来慢慢解释

够栈,不是全栈

Max Kanat-Alexander有本很薄的书叫《code simplicity》里面说我们为什么要开发代码?是因为要创造有价值的产品,即便是写一个类库,没有直接服务用户,但是直接加快了别人的开发速度,间接服务了用户。我们的代码有多大价值,取决于我们的产品能产生多少价值。当我们写了一个对人类没有用处的东西,即便是写的再牛,也是毫无价值的。

工程师(无论全栈工程师和专家工程师)都是为了创造对人类有价值的东西。

全栈工程师和专家工程师的存在都是先有了有意义产品,再有开发,开发中遇到不会的技术,快速入门,学到足够。只不过这个“足够”,有时候需要一晚,例如HTML,有时需要几个月,例如大数据分析,有时需要一辈子,例如核物理。

人们是聪明的动物,总会找到最合适的投入产出比。达到目的(做出有意义的东西),同时使用最小的成本。普通人学自行车是为了代步,会骑就够了,多的不学,学完骑自行车就接着学开汽车了。杂技演员学自行车是为了花样表演,单单会骑是不够的,还要学更长时间,更刻苦,可能就没时间学开汽车了,但是他们也不会学1万种骑车的姿势,因为不值得。做一个静态页面我知道HTML语法就够了,没必要知道浏览器内核怎么写,符合全栈工程师特点。但是当我想写全球最牛的网页时,我可能就需要研究浏览器原理了,这时要我必须花更多时间,学更多东西,就变成了大家眼中的浏览器内核专家。

可见,我们成为全而不精,还是单而深入,完全是巧合。取决于是否足够做出我们想要的东西。

互相转变

既然成为哪种工程师是取决于是否“足够”造出我们想要的东西,而世界上的东西有复杂有简单。假设我们都是不达目的不罢休,且做到刚刚好就停止,那么我们做了好多简单的事就是全栈工程师,如果我们做了一件复杂到需要很多年(甚至一辈子)才能完成的事,我们就是专家。但是谁会一辈子只遇到简单的目标?谁又会一辈子都与复杂的问题打交道呢?更何况大部分工程问题既包含了复杂问题,也包含了简单问题。

所以,人们是根据目的而选择不同模式,遵从”满足需要,绝不多干”的原则,有时全栈有时专家。说到这里,你其实发现了每个人都是全栈工程师,每个人都是专家。我们又何必追求成为一个我们已经成为的人呢?

这个时候如果我们自己给自己贴上标签,固步自封,人为断绝了这个自然的转化过程,是自我的毁灭。我就是全栈工程师,我就是要全面,从来不深入学习,很多复杂的目标就因为某项能力不够无法达成。我就是专家,我就是干什么都要精,研究这辈子都不会创造价值的东西,又有什么意义。

所以全栈工程师不喜欢被这样称呼就是因为我们明明也是专家,当我们认为有必要的时候。

那我们到底崇拜什么

既然世界上根本不存在纯正的全栈工程师,为什么就是有那么一拨人被我们奉为全栈工程师而努力向他们学习?其实是因为如下的特点:

  1. 超强学习能力
  2. 超强的精力支配能力,对于“学多少可以产生最大回报”和“做多少可以产生最大回报”有准确预判
  3. 善于利用工具和发明工具,从而提高效率
  4. 善于整合资源
  5. 创新能力

你会发现这些特质你在专家工程师身上也可以找得到,只是少了一个“全面”。因为全面是以上特点导出的结果,而不是原因。具有以上特点的人不可能不全面。你认为一个专家不全面,是因为这个专家某一方面特别牛,但是并不代表别的方面就什么都不会。

我们该怎么办

写到这里我们才发现我们崇拜的不是全栈工程师,我们(可能)不看好的专家身上具有一模一样的品质。我们崇拜的原来是那些聪明的人。对应到上面的5个特点:

  1. 训练我们的大脑,多读书
  2. 开始计算自己的投入和价值产出,杜绝学一堆用不着的技术造出没有价值的东西,也要有决心为了更优的价值产出而努力学习更多有用的技术(变成全的过程)
  3. 人的生命有限,学会用现成的工具提高我们的效率
  4. 如果公司需要懂linux的人,聪明的人不会第一时间开始学linux,而是看能不能找一个懂linux的人(或者机构),如果实在是找不到,才考虑自己学linux
  5. 使用工具、整合资源,省下来的时间是为了解决之前这些办法解决不了的问题,这才是价值所在,需要自己真正花时间的部分,哪怕把省下来的时间花在女朋友身上,这完全满足“之前这些办法解决不了的问题”

最后

我们来到这个世界,是为了创造本来没有的东西,而不是为了学写代码。

更多内容

让唯品会风控团队飞起来的技术和思想

试试这篇博客
关于作者
一名软件工程师,热爱运动、英语和美食。希望大家在这里可以享用我的发现!