全栈工程师
最近国内外都在流行一个词叫 Full Stack,中文叫全栈工程师,也叫全端工程师。微博上很多专业人士都在讨论,有赞有毁。我对全端工程师的定义是:掌握多种技能,并能利用多种技能独立完成产品的人。
打个比方:全栈工程师就像能独立盖一幢 10 层小洋楼的人,而普通工程师则是可以和一群人盖一幢摩天大楼的人。至于要掌握哪些技能,要跟从事的行业与技术方向有关——做互联网的和做软件的不一样,即使同做互联网,后端也可以分成很多技术流派。
8/2 定律在哪都适用:全栈工程师就是掌握 20% 常用技能的人,但这 20% 会有 80% 的几率被用到,剩下那 80% 不常用的,交给 Google。有人说全栈工程师在中国已经很多年了,他们叫站长。这话有点靠谱又不那么靠谱:站长确实要掌握很多技术,但不靠谱的是,很多站长并没有真正写过多少代码,而是熟练利用建站软件来建站。
一、全栈工程师的价值
有人会问:你再厉害,懂五种技术,能干五个人的活吗?全栈工程师并不是说一个人能干几个人的活,而要从多个方面看这个问题。
全局性思维
现代项目很少只用到一两种技术,特别是移动互联网大潮下。随便一个互联网项目,就会用到后端、前端、界面设计、产品设计、数据库、各种移动客户端、三屏兼容、REST API 和 OAuth;比较前卫的项目还可能用到 Single Page Application、Web Socket、HTML5/CSS3,以及微信公众号、微博应用这类第三方开发。
Web 前端也远远不是从前切个图、用个 jQuery、上个 AJAX、兼容各种浏览器那么简单。现代前端需要模块化、多屏兼容、MVC、各种复杂交互与优化,甚至需要用 Node.js 来协助开发。所以现代化项目是一个非常复杂的构成,需要一个人来掌控全局——他不必是各种技术的资深专家,但需要熟悉到各种技术。对团队尤其是互联网企业来说,有一个全局性思维的人非常重要。
像经手过的项目,会注意到网页优化,也会考虑到 API 来兼容各种客户端,更会考虑到三屏兼容。不会完全使用 AJAX 而不顾 SEO,也不会为了功能性而忽略访问速度,而是把握权重与实现成本的平衡。
沟通成本
项目越大,沟通成本越高。做过项目管理的人都知道,人力是 1+1<2 的,人越多效率越低。不同技术的人各说各话,前端和后端一定会掐架,每个人都会为自己的利益而战。
而全栈工程师的沟通成本几乎为零:各种技术都懂,胸有成竹,一不小心自己就全做了。即使在团队协作中,与不同技术人员的沟通也会容易得多。你让一个后端和一个前端去沟通,那完全是鸡同鸭讲,更不用说设计师与后端。但如果有一个人懂产品、懂设计、懂前端、懂后端,彼此都能听得懂。
创业公司
对创业公司来说,全端工程师的价值非常大。创业公司不可能像大公司一样各方面人才都有,所以需要一个多面手。很多工作请人又不饱和,不请人又没法做,外包又不放心质量,全端工程师是省钱的一招。虽然工资会比一般工程师高很多,但综合下来成本会低很多。
| 维度 | 全栈 / 横向 | 专精 / 纵向 |
|---|---|---|
| 比喻 | 瑞士军刀 | 削铁如泥的干将莫邪 |
| 价值 | 全局视野、降沟通成本、创业公司省人 | 某一领域钻得深,面试概念题更占优 |
| 风险 | 常被说成什么都会、什么都不会 | 跨栈协作、产品形态把握较弱 |
二、全栈工程师的困境
技术有两个发展方向:纵向和横向。横向是瑞士军刀,纵向是削铁如泥的干将莫邪。这两个方向没有对与错,发展到一定程度都会相互融合,好比禅修的南顿北渐——到了最后,渐悟与顿悟是一样的,顿由渐中来。
如果一个公司不太懂全栈工程师的价值,那么全栈工程师的地位会很尴尬:说得不好听,就是什么都会、什么都不会。曾经有一次面试,对方问很基础的概念,答不上来;能做出产品,也知道是怎么一回事,也不会犯那些错误,但就是答不上概念,要考倒非常容易。所以应聘时有时会吃亏,可能不如那些在某一方面钻得很深的人工资拿得高。
由于经常在各种技术间穿梭,会经常忘记代码语法和一些 API,需要去查 API 甚至查语法——没有 Google 几乎没法工作。这在某些人眼里是技术不够的表现。记住的只是一个 Key、一个如何找寻答案的索引,而不是全部。人脑不是电脑,不可能记下所有东西。
有一次面试官问一个问题,回答不知道,但猜大概是如此这般。对方问为什么这么猜,答凭直觉。面试完一查,果然和猜的差不多。这种直觉和技术经验累积的反射有关,不是凭空来的。
三、为什么会成为全栈工程师
很多全栈型工程师会和作者一样,是因为要创业才成为全栈。有一颗创业和做产品的心,又不愿意麻烦别人;有些人擅长整合资源、空手套白狼,显然不是这种人,所以只好自己做。
经历过两次孤独的创业之后,发现自己并不是一个适合独立创业的人,于是成为了一个全端工程师。最初做 ASP,后来创业写客户端用 Delphi,然后写了三年 ASP.Net,2010 年因为公司需要开始做 iOS。Web 前端一直自己在做,项目中的 JavaScript 基本都是自己写。
热爱写代码,热爱重复发明轮子,热爱新技术——这也是成为全栈工程师的重要原因。于自己来说,全端工程师的乐趣要比一般工程师来得多:你知道一个产品的形态,可以去设计一个产品,是从全局的视野来做事情,成就感会更多一些。
一句话总结:全栈不是一人干五人的活,而是用 20% 常用技能独立交货,换来全局视野、更低沟通成本和创业公司里的多面手价值。
转载请注明来源:全栈工程师







