前言
知乎有一个问题是这样的?
前端程序员应该往全栈方向发展吗?还是坚守前端?
全栈工程师(Full-Stack Engineer),是一个在IT行业圈子里越来越热门的话题,无论是像Facebook这样的大型公司,还是刚刚起步的初创公司,都开始招募全栈工程师。据说,Facebook声称:“我们只招全栈工程师!”
有人曾开玩笑说,全栈工程师是资本家的阴谋,因为老板想雇一个人来做三个人的工作。
其实在2000年第一次互联网泡沫破裂之前,那时候的Web工程师也许符合“全栈工程师”的简单定义:一人包揽整个网站的构建。
那时的Web工程师们所面临的挑战比今天小很多,他们可能只是制作一些静态的页面,不会面对如今富交互的Web应用程序。那时网站可能包含数据库和一些HTML表单,但仅此而已,甚至只需要将一些静态页发布到服务器上。
在网站的前端无需视觉设计和交互设计,因为网站屈指可数,市场竞争很小,工程师仅用一些基本的HTML标签和闪亮的GIF图片就可以吸引网民的目光。同时,网站访问量都比较小,前端资源的体积也不大,无需关注服务器压力和CDN,网民对加载速度的容忍度比较高,也不需要过多考虑用户体验。
但随着技术的发展、用户量的增加、客户端种类变多,每一个小小的细节都需要优化和考虑。在海量的访问量面前,也许改变一个按钮的位置和颜色就能影响上千万的订单。如今的互联网产品已不是以一己之力就可以完成的乐高积木了,Web开发需要以某种可控的方式来管理。
于是,所有认真对待互联网产品的大公司都引入了流水线开发流程,在这条流水线上诞生了多个非常专业的职位。
现如今需要“T”型人才,要求你不仅“一样精”更要在“一样精”的基础上“百样通”做WEB全栈工程师的乐趣要比一般工程师来得多,因为你知道一个产品的形态,你可以去设计一个产品,你是从全局的视野来做事情,你得到的成就感会更多一些。
其基于这番人才需求,Web全栈开发工程应运而生。他们不仅做得了图,敲得了码,还熟知前端、后端、数据库、第三方开发等的全面知识。于是有人疑惑,这样的人才会不会看似全能,实则都是略通皮毛,根本什么都不精通啊?学习这样的全栈开发,有前途吗?
1、全栈开发工程师的概念
全栈工程师,也叫全端工程师(同时具备前端和后台能力),英文Full Stack developer。是指掌握多种技能,并能利用多种技能独立完成产品的人。形象的打个比方来说:全栈工程师就是一个能独立盖一幢10层小洋楼的人,而普通工程师,则是可以和一群人盖一幢摩天大楼的人。
二八定律又名80/20定律、帕列托法则(定律)也叫巴莱特定律,放在哪里都适用。全栈工程师就是能够了解100的技能,但精通其中的20%,并用这常用的20%技能,去实现80%的特效。
也有人说全栈工程师怎么感觉和站长差不多。是有点像,但性质不同。一名站长确实需要掌握多种技能,但站长会写代码的很少,他们通常是用一些建站软件来建站。而全栈开发工程师需要掌握的知识包括:后端开发、前端开发、界面设计、产品设计、数据库、各种移动客户端、三屏兼容、restFul API设计和OAuth等等,比较前卫的项目,还需要掌握Single Page Application、Web Socket、HTML5/CSS3这些技术以及像第三方开发像微信公众号微博应用等等。
2、全栈开发工程师的价值
全栈开发师的厉害之处并不是他掌握很多知识,可以一个人干多份工作。而是说他在处理问题的时候拥有全局性思维。
现在科技日新月异,web前端不再是从前切个图用个jQuery上个AJAX兼容各种浏览器那么简单。现代的Web前端,你需要用到模块化开发、多屏兼容、MVC,各种复杂的交互与优化,甚至你需要用到Node.js来协助前端的开发。
所以说一个现代化的项目,是一个非常复杂的构成,我们需要一个人来掌控全局,他不需要是各种技术的资深专家,但他需要熟悉到各种技术。对于一个团队特别是互联网企业来说,有一个全局性思维的人显得尤其重要,这个时候也就彰显了全栈开发工程师的价值。
全栈开发师经手的项目不但会注意到网页优化,而且会考虑到API来兼容各种客户端,更会考虑到三屏兼容的问题。不会说项目中完全使用AJAX而不顾SEO,也不会为了功能性而忽略访问速度,他会很好的把握其中平衡,因为他知道各个板块的权重和实现成本。
3、Web全栈开发是一种趋势
现代项目的开发,很少说只用到一两种技术的,特别是移动互联网大潮下。随便一个互联网项目中用到的技术,就会需要用到后端开发、前端开发、界面设 计、产品设计、数据库、各种移动客户端等方面的知识。
项目越大,沟通成本越高,做过项目管理的人都知道,项目中的人力是1+1<2的,人越多效率越低。因为沟通是需要成本的,不同技术的人各说各话,前端和后端是一定会掐架的。每个人都会为自己的利益而战,毫不为已的人是不存在的。
而全栈工程师的成本几乎为零,因为各种技术都懂,胸有成竹,一不小心自己就全做了。即使是在团队协作中,与不同技术人员的沟通也会容易得多,你让一个后端和一个前端去沟通,那完全是鸡同鸭讲,更不用说设计师与后端了。但如果有一个人懂产品懂设计懂前端懂后端,那沟通的结果显然不一样,因为他们讲的, 彼此都能听得懂。
所以企业越来越需要一个懂得全栈开发的人物来把控大局,这是趋势,更是必然。物以稀为贵,趁着全栈人才还不是蜂拥而至,赶快学习才是正确道路。