网站首页 > 技术文章 正文
近几年,“全栈”一词在IT圈逐渐流行起来,在微博、微信文章中随处可见对“全栈”的描述,而伴随“全栈”而来的,备受争议的“全栈工程师(全端工程师)”也开始流行起来。到底什么是“全栈工程师”呢?其实很容易理解,但是要概括起来却并不容易。下面我就给大家简单介绍一下“全栈工程师”。
全栈开发人员
很多人说全栈是国内站长的活儿,全栈工程师就是站长,其实不然。最大的区别就是全栈工程师会写代码,站长不一定不会;其次,全栈工程师可以发现问题,独立解决问题,而站长很多时候需要别人帮忙解决,最多只能发现问题。所以,全栈并不是一个很low的方向,全栈工程师也不是人人都能鄙视的。
那么,普通工程师和全栈工程师到底有什么区别呢?举个简单的例子,如果我要做一个基于WEB服务器的移动端APP,全栈工程师一个人就可以搞定所有的流程。包括需求分析、系统架构设计、前端界面设计与实现、后端服务器编码与部署、数据库设计与实现、数据封装等等,都可以一个人完成,但是通常需要花费较长的时间,这也是全栈工程师的一个短板。普通工程师无法独立完成整个项目,往往需要多人合作,以团队形式完成一个项目。除此之外,还需要一个项目经理来规划项目的开发流程,划分任务模块,将任务分配到点等,而最重要的是,这个项目经理需要和整个团队的每个成员进行沟通,将信息传递、表达给相应的模块负责人,在此基础上,团队才能相互配合,顺利推进项目。 正是因为他们是以团队的形式存在的,而团队需要沟通,而沟通需要成本,所以在这方面,全栈工程师的优越性就显露出来了。
WEB 全栈
Web 全栈通常是指一个 Web 项目的所有组成部分,从分析项目需求开始,到整个项目的完成上线,整个流程中的每个模块都可以看作是全栈的一部分。通俗的说就是我们现在看到的 Web Site,以及基于 Web 服务器的移动应用等等。一个优秀的全栈工程师能够轻松应对这些工作,将所有的逻辑运行在个人的思维空间中,从而高效的完成一个 Web 项目。要想做好 Web 全栈,首先需要有良好的用户体验,为此需要优秀的产品设计和成熟的前端工程师;其次需要优秀的后端业务逻辑层,这就需要经验丰富的后端开发人员;此外还需要高效的数据库处理层,这就需要数据库开发经理。 此外,你还需要有人来设计web项目的系统架构,还需要有人来设计和优化算法,部署硬件设备,保障信息安全等等。这样,一个web全栈项目才有了成功完成的基础,人员之间的配合决定了项目能否顺利完成。你还觉得web全栈是一个很简单的工作吗?你还觉得FSD(Full Stack Developer)的工作和站长是一样的吗?
FSD 的优势
Brooks在《人月神话》一书中曾经说过:“系统软件开发是一个减少混沌(减少熵)的过程,因此它本身就是亚稳态的。”是的,不只是对于系统软件如此,对于我们这里说的全栈工程也一样。如果一个项目被分成多个部分,而这多个部分需要与数据交互。那么问题就来了。项目的每个部分并不是完全独立的,每个部分的leader都有自己的想法。再加上一些沟通上的不足,这就导致项目的对接上或多或少会出现问题。在前端和后端之间,后端和数据层之间等等,这些问题往往不是一个部分的负责团队就能解决的,而是需要多个部分的团队一起解决,这就造成了额外的人力成本。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全栈工程师的分析和解读,如有不足之处,希望后人指正补充。
北京工业大学软件学院
梁勋
猜你喜欢
- 2025-05-27 Python、JavaScript和Rust的Web性能比较
- 2025-05-27 「全网首发」言简意赅的Python语法,内附详细知识点和思维导图
- 2025-05-27 崩溃!页面卡顿总翻车?6 个 JavaScript 技巧教你逆风翻盘
- 2025-05-27 「完结11章」前端全栈进阶 Nextjs打造跨框架SaaS应用
- 2025-05-27 前端面试-js高阶函数的介绍和使用
- 2025-05-27 JavaScript运算符
- 2025-05-27 JavaScript执行栈和执行上下文
- 2025-05-27 JavaScript原型链
- 2025-05-27 《从零开始学前端:HTML+CSS+JavaScript的黄金三角》
- 2025-05-27 厉害的人不仅思维敏捷,还会用这几个思维工具
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)