为什么要成为全栈工程师
Is it reasonable to expect mere mortals to have mastery over every facet of the development stack? Probably not, but Facebook can ask for it. I was told at OSCON by a Facebook employee that they only hire ‘Full Stack’ developers. Well, what does that mean?
Full stack,翻译过来就叫做全栈工程师。也叫全端工程师,是指掌握多种技能,并能利用多种技能独立完成产品的人
全栈工程师是什么都会吗?当然不是,全栈工程师是 什么都会,却又什么都不会。
有人说了,你再牛逼,你懂五种技术,你能干五个人的活吗? 当然不能。
那全栈有什么用?
有这么一句古老的箴言:如果你手里有一把锤子,所有东西看上去都像钉子。是说了一个人们很容易犯的错误 —— 为了使用自己现有的工具而忽视问题本身的需求,忘了更好地解决问题才是目的,有时候甚至为了使用工具而去制造问题。而社会发展的复杂性和动态性也决定了问题总会存在新特点和新要求,单一一种工具是永远满足不了所有需求的。
举个例子,如果你只是后台java开发人员,发现服务器压力过大,你会怎么办?优化个SQL?负载均衡?当然这些都是选择,但拿一部分数据和运算到前端也许是更加合理和低成本的选择。
对于一个团队特别是互联网企业来说,有一个全局性思维的人是非常非常重要的。
项目越大,沟通成本越高,做过项目管理的人都知道,项目中的人力是1+1<2的,人越多效率越低。因为沟通是需要成本的,不同技术的人各说各话,前端和后端是一定会掐架的。每个人都会为自己的利益而战,毫不为已的人是不存在的。而全栈工程师的成本几乎为零,因为各种技术都懂,在团队协作中,与不同技术人员的沟通也会容易得多,你让一个后端和一个前端去沟通,那完全是鸡同鸭讲,更不用说设计师与后端了。但如果有一个人懂产品懂设计懂前端懂后端,那沟通的结果显然不一样,因为他们讲的,彼此都能听得懂。
Facebook 的众多海报当中,有一张写的是「任何一个 Facebook 的问题,都不是别人的问题」。Facebook 的工程师,级别越高就需要保持越大的影响力。如何创造更大的影响力,就是寻找当前杠杆效应最明显的问题来解决。有些问题你解决了的话,投入进去的时间每小时能换回来一千美元;有些问题你解决了的话,投入进去的时间每小时能换回来一百万美元。
但是在企业中,如何快速发现并解决这些杠杆效应明显的问题?那就是成为全栈。
技术发展,一种是纵向成为专家,一种是横向成为全栈。两个方向都没有对错,发展到一定成都都会相互溶合,就好比中国佛家禅修的南顿北渐,其实到了最后,渐悟与顿悟是一样的,顿由渐中来。
全栈工程师不是全为了工作本身,而是为了方便实现自己的梦想。作对于他们来说不是负担,而是一种乐趣;工作已融入了他们的生活,犹如空气和水。
全栈工程师,是一群渴望上进、积极主动、务实肯干、想闯出一番天地的程序员。
他们内心深处不安于已掌握的技术和安稳的工作,他们非常乐意并且会主动去学习一些新技术,新框架,业余时间还会自己动手实践一些小创意,寓学于乐。工作,学习,技术,小创意,已经成为了他生活的一部分,不断主动的去学习,自然而然的就学会了多门技术,精通多种语言。
全栈绝对是自我驱动的过程。
最后,再来一碗鸡汤,共勉。
我努力地工作,为的就是有一天当站在我爱的人身边,不管她富甲一方,还是一无所有,我都可以张开手坦然拥抱他。她富有,我不用觉得自己高攀;她贫穷,我们也不至于落魄。