全栈工程师

全栈工程师,也叫全端工程师,英文Full Stack developer。是指掌握多种技能,并能利用多种技能独立完成产品的人。

全局性思维

现代项目的开发,需要掌握多种技术。互联网项目,需要用到后端开发、前端开发、界面设计、产品设计、数据库、各种移动客户端、三屏兼容、restFul API设计和OAuth等等,比较前卫的项目,还会用到Single Page Application、Web Socket、HTML5/CSS3这些技术以及第三方开发像微信公众号微博应用等等。

Web前端也远远不是从前的切个图用个jQuery上个AJAX兼容各种浏览器那么简单了。现代的Web前端,你需要用到模块化开发、多屏兼容、MVC,各种复杂的交互与优化,甚至你需要用到Node.js来协助前端的开发。

所以说一个现代化的项目,是一个非常复杂的构成,我们需要一个人来掌控全局,他不需要是各种技术的资深专家,但他需要熟悉到各种技术。对于一个团队特别是互联网企业来说,有一个全局性思维的人非常非常重要。 

以上是百度百科给我们的定义。

曾经看到这样一个段子,意思大致是:

老板说:“小王啊,最近我们接了个项目,启动资金没有给,人才也比较短缺,时间也比较紧,你最近就加班一下吧!”

小王就说:“又要加班啊,那给我组织一下人手吧,我怎么也得要一个前端人才,一个数据库人才才行啊。”

老板有点不高兴了:“你不会html么,不会css么,不会js么,不会数据库么?还要什么前端,要什么帮手,资金没下来没人手,我们也没办法啊,最近抓点紧,项目做完,你就是全栈工程师了,到时候好处少不了你的~”

虽然是一个段子,但是其中映射的道理却很现实。我们为什么不能够满足于学好一门语言胜任某个职位?那是因为,展现你价值的舞台大小,是由你身怀的“绝技”所决定的。在IT行业,我们不能够满足于“找到工作”这一点而把自己锁死在一个小黑屋里,只会按部就班的完成领导安排的任务,那样,我们的向上的台阶就封死了,通往更大舞台的大门也因此而关闭了。我们还谈什么“年薪百万”这种理想呢?还设立什么“先挣它一个亿”这种“小目标”呢?还说什么“改变人类,改变世界”这种口号呢?你连自己都改变不了!

我们的产品、项目在实际开发中,往往是以分工合作的方式来进行的,这就意味着,做前端的人可能不需要知道业务上数据是怎么传递合计算的,是怎么储存的;做后端的的可能也不需要知道界面是怎么设计的,数据库是怎么优化的;……每个部分的人直观把自己的部分做好,然后告诉相邻环节的人我们需要什么和给出了什么就可以了,这样的分工方式体现到了代码低耦合性的优势——各个部分之间的关联极大地减小。更专业一点,每一个部分对于其他部分的人而言,可以称为“黑箱”(即那些既不能打开,又不能从外部直接观察其内部状态的系统)。

我所理解的全栈工程师

并不是需要你真正意义上的在实际开发中从0到1地去完成某个产品亦或是某个项目,而是需要你具备这种能力。不是像上文说的,使用别人给你的“黑箱”,而是将每一个“黑箱”在你的脑海中搞清楚、给透明化。

要知道,不仅仅我们在项目中的某个部分的代码是复用的、职责单一的、和可维护的,甚至我们所使用的语言,也是可以替换的的!如果你够“全栈”,你就会知道,数据库的管理系统就有好多,比如SQLServer,MYSQL,ORACLE,DB2,Sybase,甚至你不知道以后还会出现哪些更多的东西,包括我们使用的开发语言,比如.NET、C#、VB/VB.NET、C语言、C++、Java、Python、Perl、Ruby、汇编语言等程序开发语言,以及以后会出现的更多其他的语言,包括我们使用的前端语言:html语言,css样式代码,javascript脚本,最近又新推出了 html5,css3,jQuery等,以后也会有更多的版本甚至其他的语言。

 

 如果我们自己的技术局限,项目中中的沟通成本会提高,项目之外,我们要将自己的技术提升也很不轻松,如果往高了说,要做到产品设计,架构师,几乎是没有可能的,因为你根本不懂别人给你的是什么东西,更谈不上如何设计和优化了。

于是我们要把自己的定位提高一个档次,从一个只会完成功能的“码农”提升到一个懂本层原理、会思考的“程序员”,然后,可以在提升一个档次,做一个懂得架构中各层运作原理的“全栈程序员”,之后可以再提升一个档次,做一个会分析需求,懂项目设计的“分析师”或“设计师”,亦或是懂底层实现,会设计和优化的“架构师”等等,技术底子足够强大,发展空间也更为广阔。

在公司中发展的路径不外乎:程序员-系统分析员-架构师-技术经理-CTO(首席技术官),程序员-项目组长-项目经理-项目总监-CTO,程序员-产品设计师-产品经理-CTO这几种。职业不是只有一个的,“全栈”也不光指你的技术的,更可能影响到你的职业生涯,也让你有能力去完成你的梦想、实现的的“小目标”,甚至是改变世界。

所以,不就是一个人完成一个项目么?我们“可以干“!