原文链接:I don’t want to be a full-fullstack developer
译注:我很同意这为乌克兰开发者的观点,但他的英文水平实在是一言难尽。
我是一名 Ruby 开发者,一个全站 web 开发者。对此我深感疲惫,厌倦了有时负责商业分析和手册的质量保证。随着时间的推移,这个行业越来越多的依靠以开发人员为中心的工作流程,开发者们将越来越多的工作交由同一个人负责。
很久以前的互联网
很久以前就有 DBA ,但现在几乎看不到了。在 Indeed.com 中搜索 全栈开发者 会得到 7000 个结果,web 开发者 的搜索结果有 40000 个。用户体验工程师和前端开发者的角色也在工作内容基本一致的前提下慢慢融合。越来越多的代理机构开始寻找既能做前端也能做后端的人,既能参与业务需求开发也能编写单元测试和集成测试的人,希望他们无所不在,无所不能。
削减成本
乍一看,这似乎是个好主意,有人知道从开发到发布所需的一切,掌控整个过程。这对企业来说更加容易:你只需和一个人进行核对,开发过程不会因为“谁做什么”的问题而变得特别复杂。这么做还能降低成本,在质量和开发时间中作出一点权衡。沟通也变得更加顺畅了,和一个经历了整个开发流程的人交流要比沿着流程链挨个询问要容易得多。这听起来很不错,如果你不知道把这么多专业工作全都塞给一个人去做会发生什么的话。
复杂性的回击
后端开发是个复杂的领域,包括理解网络层、服务器的整体工作方式、部署、AWS/Google/Azure 服务(它们对现代 web 应用至关重要)、编程语言和框架的细节,使用的协议、身份认证、数据库连接和配置等。前端包括过硬的 web 标准知识、浏览器间的差异、ES5、ES6、CSS、HTML、框架、预处理器、转换器、构建工具、UX、UI、浏览器角度的网络、浏览器存储,有时甚至包括 Flutter、Ionic 和 React Native 之类的移动端应用的细节。我不想讨论业务分析师和 QA 的角色,它们完全是不同的概念。
宽度还是广度?
别误会,我认为扩大知识领域并通过对周边技术的理解更好的完成所在部门的工作是件好事。但不论行业,让开发者直接负责代码质量、选择解决方案以及项目开发的未来规划未必是件好事。我们大脑的空间是有限的。我们可以用一个或少数几个领域的更深更好的知识来填充它,或是多个领域的肤浅的知识。后者制造了一种虚假的自信,从而导致选择糟糕的解决方案,造轮子、选错技术、用显微镜敲钉子。
并非所有削减都是好的
全栈很有趣,因为它似乎只存在于软件工程领域。其他领域大多都分工明确。你不会希望让牙医来治疗你的心脏,让神经外科医生来修复你的痔疮。它被用于软件工程似乎是由该领域的虚拟和故障安全特性。你的代码质量不会直接影响用户可见的结果,因此你在事情变糟之前有足够的时间处理(这种情况在你不在的时候常常出现)。此外,这个想法似乎对直观的金钱花销很有吸引力,雇佣拥有广泛技能(无论质量)的人可能看上去是在用同样的钱做更多的事。
我们得到的平庸的解决方案都是由那些在特定领域没有足够的专业知识,无法找出更好的方案的人提出的,他们粗略的知识中满是 Stackoverflow 的答案和复制粘贴来的东西。我们让那些不思进取的人不得不跟上太多主题,让那些专业人士无法创造出惊人的东西,因为他们没有足够的时间深究并创造出对该领域有价值的东西。在开发过程中不可避免的会遇到各种问题,导致 bug 和用户流失,影响开发成本,使我们以低廉的价格开发出不合格的产品。从短期经济角度来看,全栈可能是值得的,但它对整个行业和我们建设的项目都有害。