关于“全栈工程师”的剖析

近些年来,在IT圈子里,“全栈(FullStack)”这个词渐渐地热起来了。微博里、微信文章里到处都可以看到有关“全栈”的描述,而与“全栈”一同热起来的,不外乎饱受争议的“全栈工程师(全端工程师)”了。“全栈工程师”究竟是什么,其实好理解,但是并不好概括。下面就让我给大家简单地介绍一下“全栈工程师”吧。

       全栈工程师(Full Stack Developer)

       很多人说全栈就是国内的站长要做的工作,全栈工程师就是站长,其实则不然。最大的一个区别,全栈工程师一定会coding,而站长却不一定会;其次,全栈工程师可以发现问题并独立解决问题,而站长往往需要别人去解决,充其量也就是可以发现问题了。所以说,全栈并不是一个很low的方向,全栈工程师也不是谁都能轻视的存在。

       那么,普通工程师与全栈工程师之间的区别又在哪呢?打个简单地比方,我要做个基于WEB服务器的移动端App,一个全栈工程师就可以一个人包揽了所有的工序。包括需求分析、系统架构设计、前端界面设计与实现、后端服务器的编码与部署、数据库的设计与实现、数据的封装等等,都可以由一个人来完成,但一般会耗时比较长,这也是全栈工程师的一个不足之处。而普通工程师无法独立完成一整个项目,他们往往需要多人合作,以一个团队的形式来完成一个项目。而在此之上,他们还需要一个项目经理来规划项目的开发流程,划分任务模块,对点分配任务等,而最重要的是,这个项目经理需要与整个团队的各个成员进行沟通,传递并表达信息给对应的模块负责人,以此为基础才能够使得团队能够彼此配合好,从而顺利地推进项目。正是因为他们以一个团队的形式存在,而团队就需要沟通交流,而沟通交流又是需要成本的,所以,在这方面全栈工程师的优越性就显现出来了。

       WEB全栈

       Web全栈,通常指的是web项目的全部组成部分。从分析这个项目的需求开始到整个项目的完成和上线这整个过程里的各个模块,都可以视为全栈的一部分,通俗来说就是现在我们所看到的Web Site,和基于web服务端的移动应用等。一个优秀的全栈工程师可以轻松胜任这些工作,将一切逻辑运转在个人的思维空间中,从而可以高效的完成一个web项目。而要想做好web全栈工作,拆开来看,首先,你需要有好的用户体验,为此,你需要一位优秀的产品设计和一名老练前端工程师。其次,你需要有良好的后端业务逻辑层,这就需要一名经验丰富的后端开发者。再者,你还需要一个高效的数据库处理层面,这就又需要一名数据库开发管理人员。此外,你还需要有人来设计该web项目的体系架构,还需要人来设计和优化算法,部署硬件设备,保障信息安全等等。如此这般,一个web全栈项目才有了顺利完成的基础,而人员之间的配合决定了该项目是否能够顺利完成。现在你还觉得web全栈是份简单地工作么?你还认为FSD(Full Stack Developer)的工作和站长一样么?

       FSD的优越性

       Brooks曾经在《人月神话》一书中说道:“系统软件开发是减少混乱度(减少熵)的过程,因此,它本身是处于亚稳态的”。是的,不仅仅是系统软件如此,我们这里谈及的全栈工程也是这样。如果一个项目被拆分成了多个部分,而这多个部分又需要有数据交互。那么问题就来了,项目的每个部分并不是完全独立的,并且每个部分的leader都有自己的idea,再加上一些沟通上的不足,这就造成了项目的对接处会或多或少的出现一些问题。前端和后端之间,后端和数据层之间等等,这些问题往往并不是一个部分的负责团队就可以解决的,而是需要多个部分的团队一起来解决,这就造成了额外的人力成本消耗。FSD则不然,所有的接口都是自己写的,没有人比自己更加了解如何去调用它了,省去了不必要的人力消耗。另外,由于整个项目都是一个人规划和实施的,出了问题也可以比较快的定位并修复。这体现了FSD的高效性。

       书中还提到,“一切都将运作良好,每项任务仅花费它所‘应该’花费的时间”。这个“应该”花费的时间该如何去定义,我想,到目前为止没有人可以明确地给出。但是按照业内的统一观点来看,即为在合理的人力规划下可以完美完成任务的最快时间。时间是衡量效率的一个重要标准,而在多人团队中“人月”一说真的只是一个美丽的神话而已,谁也不能保证两个人的人月是一致的,三人一月和一人三月的工作量也是一致的。这个“人月”一说是“欺骗性”的从工作时间分配上提取出来的,其实并不具备衡量性。但是对于FSD来说,人月确实可以在一定程度上用来衡量工作量。因为FSD是一个人,对于某一个模块而言,他的“人月”基本上是个定值,这也给全栈工作的可规划性提供了基础。

       另外,FSD在一个人的逻辑思维范围内构架并实现了整个项目,它的稳定性肯定是比多人合作项目要高的。而且,项目的可维护性也是比较理想的,毕竟有个人对整个项目了如指掌,这种事在一个企业中是可遇而不可求的。

       最后,作为一名FSD,他不会被某一种技术的兴衰而左右,自身很容易转型。这体现了FSD的生命力之强。

       FSD的不足之处

       FSD最致命的缺点就是进度缓慢,这是不可避免的硬伤。毕竟一人之力是有限的。FSD只能按照自己规划的排期一步一步的区完成,而具体的耗时还是得看FSD的针对每个模块的技术如何。一般FSD的时间基本都是花费在查看各种API上,他们接触的编程语言太多了,各种语言的语法往往会在大脑里混淆了,这个时候,技术文档就是必要的,花费的时间也是必要的,可以被接受的。

       另外比较严重的缺陷就是FSD没办法去完成一个大项目,也不是说他不能,而是时间不允许。没有谁愿意雇佣一个人花10年时间去做一个web项目,人们更倾向于雇佣一个团队,用最短的时间去实习它,哪怕为此付出数倍的代价。

       FSD是可敬的

       其实,我个人一直是很敬重FSD的。首先这群人值得敬重,一个人能在多个领域里面都有一定的成就其实已经是件很不容易的事了。一般人一辈子就钻在一个领域里面不愿出来,觉得一行做深了就可以了。确实,钻的深了也会有一定的成就,但那毕竟是少数,并不是所有人都可以的。其次,这群人让人敬重。目前,国内对于FSD的认可度并不高,他们没有存在感,也不参与什么讨论,因为他们知道的越多,就越发现自己不知道的越多。天外有天,人外有人,正是因为他们见的多,才越发觉自己的渺小,他们不愿意张扬,所以出现在我们眼中的,都是谦虚低调的“程序员”。

最后,这群人让我们不得不敬重,他们不断的追求技术,他们不愿意在大企业中做一颗小小的螺丝钉,他们努力拼搏,把自己打造成一个全能性的人才,努力实现自己的人生价值。这份精神,是感人的,也正是每个当代大学生所需要的!

       FSD将何去何从

       知乎上有个关于FSD发展前景的帖子,但是从其回复来看,FSD其实并不吃香。这主要是因为现代的企业都是很追求效率的,效率就是生产力,而效率的提高是由于更细致的分工而来的。就IT行业来看,通过更加细致的分工来提高效率似乎已经成为一种趋势。而由于个人精力的限制,FSD无法在深度和广度兼顾,这就造就了FSD在国内成为了鸡肋的现状。

即便如此,FSD还是有很多出路的:

1,           由于涉及技术比较广泛,FSD很容易转型成为某一种技术的专家;

2,           见多识广,解决问题的手段和经验丰富,可以作为一些小企业的技术顾问;

3,           一些新生的创业团队很需要这种全能型人才;

4,           由于本身具备多项技能,又吃苦耐劳,适合个人创业;

5, Facebook只招全栈工程师。

 

以上是我个人对web全栈工程师的分析和解读,如有不足之处,还望后来人更正和补充。

 

 

 

北京工业大学 软件学院

梁勋

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值