全栈工程师:同时掌握前后端技术的程序员。
干这一行的都知道,前端开发偏设计,重视觉,形象思维;后端开发偏架构,重逻辑,抽象思维。全栈工程师前后端一起搞,难免让人担忧,会不会“样样通样样松”?就算真有前后端都精通的大牛,数量是不是少到可以忽略不计了?
从我观察的情况来看,这个担忧是没有必要的。想想你从小学到大学的班里,成绩在第一梯队的同学,是不是每门功课都不差,否则也不可能处于第一梯队。既然英语和数学都能兼顾,前端和后端当然也能通吃。
残酷真相:世上的人,大概可以分两种,一种人样样行,一种人样样不行。
近一段时间了解的几位技术大牛,无论前端后端都玩得很好。随便数了数,这样的人还真不少。奇怪了,在专业细分的大趋势下,怎会有如此逆流?
这就要从技术人员的日常说起了。技术人员分为好学与不好学两种。好学的技术人员是没有下班这个概念的,回到家也趴在电脑前贪婪地汲取养分。不好学的人(大多数人都属于这一类)只在压力下被动地学习。
用不了多久,两种人的差距就拉开了。但是公司里的分工,往往倾向于平均主义,把好学的与不好学的安排在差不多的岗位上,负责差不多的事情。平时相安无事,可一旦两种人合作的时候,能力强的人就会有不满,认为被拖了后腿。那怎么解决呢?程序员当然是用程序员的方式解决了!
用别人的东西不爽,那就自己重写一个!然而在工作中,这样做会让对方难堪,所以只好咬着牙凑合用。但一而再再而三,凑合的太多,破窗户理论就会彰显它的威力。你写的代码虽好,可它依赖一个由别人写的很烂的组件,整个程序被拖累了。你表达了不满,但很快就知道这是徒劳的,好吧,你也懒得再理,就由它去吧。于是又一条千里之堤将毁于蚁穴。
一定程度上,是GitHub将全栈工程师推上了舞台。看看GitHub上最活跃的两个大类,一个是web前端,一个是nodeJS后端。它们大都是用JS语言编写的(JS是一种很挫的语言,但确实发挥了难以想象的作用)。尤其nodeJS的流行简直没天理,在崇尚性能的后端世界,竟然占有相当重要的一席。这很显然,就是一群精力旺盛的前端工程师手痒,想动一动后端,证明自己有多牛逼,不就是这样吗。
全栈的兴起,其中一个原因是在软件开发领域,大部分问题不需要太长时间的积累就可以解决。因为触类旁通,很多东西即使从未接触过,学一个星期就弄懂了。但要是换到高精尖的科研领域,别说一星期,就是耗进去一年也许都还入不了门。所以就别指望出全栈科学家了,真出了也不能叫全栈,得叫全能神。
有些人对全栈抱有怀疑态度,尤其身在大公司里的人,认为精细分工才是高质量的保证。睁开眼看看世界吧,在一些年轻的互联网名企,像facebook,好多工程师都是有全栈技能的。为什么会这样?难道不是分工越细效率越高吗?我觉得不能这么去理解,全栈只是一个结果,而非原因。
伴随移动互联网的兴起,涌现出无数个创业公司,它们往往只在某一个狭窄的领域深耕细作,并不需要太多人手。可麻雀虽小五脏俱全,做一个小产品,也需要前端后端等一整套技术,所以急需多面手,全栈工程师应运而生。
当全栈成为了一个现象,一种文化,就不需要再讲什么道理了。要么接受,要么走开。All or nothing. 就这么霸道。
最后来说一个传奇人物,Steve Wozniak,苹果公司的另一位创始人。绝对意义的全栈工程师。他单枪匹马做出了第一台苹果电脑。对此我只想说,太特么没人性了!你正在用的电脑,无论是苹果的还是其他品牌,都有他老人家一份功劳。啥也不说了,跪地膜拜。但别忘了,当年他也只是个毛头小子。