百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

“全栈开发已死?”(全栈开发者是什么意思)

zhezhongyun 2025-01-31 16:15 19 浏览

如果整个团队全是全栈开发人员,不区分前端和后端,似乎是一个不错的主意。但是在这个新时代,没有人能够掌握开发的所有技术。

作者 | Joe Honton

译者 | 弯月,责编 | 屠敏

以下为译文:

全栈的起源

在新千年来临之际,Web工具已发展得极为成熟,创建网站所需的一切都可以通过开源软件组建。我们可以仿照OSI网络模型,简单地将应用程序开发的各种技术分层,而整个开发所需的技术集合称为栈。

LAMP栈就是第一个栈,它包含四层:L表示Linux操作系统,A表示Apache HTTP服务器,M表示MySQL数据库服务器,而P表示PHP脚本语言。随着时间的推移,我们看到了分层概念的优势,因此衍生出了许多其他栈:WAMP、MAMP、XAMPP、LEMP、LEPP、MEAN、JAMStack等等。

有了这些技术栈,我们就相当于免费获得了软件开发复兴的钥匙,对于有兴趣创建网站的人来说,如今的门槛更低了。只要你有毅力和学习新工具、语言和协议的欲望就够了。你不需要使用微软、Oracle、IBM或其他商业软件。这是一个公平的领域,吸引了很多人的目光,以至于90年代后期出现了互联网的泡沫时代。

不久后,浏览器(XMLHttpRequest)引入了 AJAX,从而引领了Web 2.0时代和Web应用程序。但是,开发这些应用程序需要大量的工作,因此开发人员无法仅凭一己之力满足业务的需求。

后来,开发人员开始分工专业化。由前端开发人员处理HTML、CSS和JavaScript。后端开发人员处理主机操作系统、HTTP服务器和数据库。而同时精通前后端的开发人员则称之为全栈开发人员。

全栈时代

专业化是一件好事。但并不会永久。一方面,这意味着团队可以并行工作以缩短开发周期。另一方面,这也意味着我们必须付出更多的努力来传达最初的要求和变更的规范,否则我们就会失去并行工作所带来的优势。

因此,整个团队全是全栈开发人员,不区分前端和后端,似乎是一个不错的主意。

最重要的好处是,团队中的每个开发人员都充分了解每一处代码变更带来的后果。他们每个人都可以正确地评估影响和风险,让管理层清楚地了解成本和延误状况。此外,每当有工作人员离职时,团队可以立即换人,而且新人也可以很快地熟悉工作。然而,随着基础技术的提升,这种美好的景象也失去了原有的魅力。技术栈不再局限于最初的四层:操作系统、HTTP服务器、数据库和脚本语言。

  • 随着应用程序开始处理越来越多的并发用户,复杂度也开始加剧。于是,我们添加了负载平衡器。

  • 我们需要更快地配置新服务器,同时降低灾难性故障的风险。于是,我们开始使用云计算。

  • 我们开始构建面向全球用户的产品。于是,我们开始将部署复制到各个区域的数据中心。

  • 我们发现,拥有大量模式的数据库和复杂的联结不太好用了。于是,我们开始使用键值存储。

  • 我们需要更好的质量控制。因此,我们聘请了专门的测试工程师来编写回归测试套件。

  • 我们想让浏览器控制渲染和合成。于是,服务器端的脚本换成了REST API。

  • 我们了解到良好的代码管理对团队的效率至关重要。于是,我们开始利用 Github 创建工作流程。

随着开发能力的增强,我们开始更加密切地倾听用户的意见:

  • 我们的用户希望应用程序减少提交表单,更为流畅、更加一致、更易于使用。于是,我们聘请了注重艺术技巧和人性的用户界面专家。

  • 我们的用户要求降低完成工作的困难。于是,我们聘请了用户体验专家来研究我们的缺点并设计更好的交互方式。

  • 我们的用户觉得手机更加方便,于是我们为他们提供移动版的大型SaaS应用。

此外,贯穿所有这些需求的基本技术也在不断发展:

  • HTML5逐渐成熟,开始支持有语义的Web页面、可访问性、service worker以及Web组件。

  • CSS也在发展,已远远超出了选择器和级联,开始支持动画过度、变量、新的布局模型和分页媒体。

  • JavaScript呈现了爆炸式的增长,如今发展出了模块化、面向对象类、异步函数,还可以在任何地方执行——可以在浏览器的DOM中、在服务器上,在桌面上也可以。

  • HTTP发展出了更好的缓存、安全策略、持久会话、多路复用流,头部压缩以及优先级等功能。

全栈时代并没有完全死亡。技术栈的各层迅速发展,没有人可以成为掌握一切的专家。职责多样化和专业化是很自然的结果。

全栈工程师的荣耀已成为传说。在这个新时代,没有人能够掌握开发的所有技术。

2020栈

我们不得不思考:拥有跨层知识和技术力且才华横溢的个人仍有优势吗?我们应该如何对待全栈开发人员带来的项目经验多样化?管理如何才能满足这些需求?招聘人员应如何筛选应聘人员?求职者又当如何凸显自己的技术力?

我们应当重新考虑“全栈”这个术语了。

我之所以这样说,是因为我帮助推广了这个概念。早在2009年,我就曾介绍过这个术语。但可悲的是,时至2019年,这个术语已经成了计算机历史博物馆的纪念物。

奇怪的是,人们对“全栈”这个词的好奇心在不断增加。2009-2019年期间,Google 搜索词语趋势快照显示,在过去五年中,“全栈”这个词的搜索次数急剧增加,而且年年创新高。

但是,如果人们都在寻找下一个趋势是什么,那么我们就来谈一谈吧。为了方便讨论期间,让我们先来给它起一个名字。

我将其称为2020栈。新一代的新名称。

我认为:

  • 首先,我很欣赏那些掌握了各种技术力的人。他们不会陷入“专业化”的陷阱。我们应该避免构建过于庞大的应用程序,那些带有秘密咒语的大师,以及那些随着专业化悄悄渗透的信息孤岛。

  • 其次,我们需要了解到职业发展意味着人员变动。各个组织必须把人员变动当成正常的运营。即便高级职员离职,也不会影响到业务。“没有什么人是必不可少的”。

  • 第三,领域术语削弱了专家之间的沟通。如果专家使用领域特定的术语、首字母缩写词和惯用语,那么他们自身和队友都将面临危险(出自电影《欢喜俏冤家》)。跨领域是保持沟通渠道畅通的关键。

2020栈专家的特征可以总结如下:

没有人可以掌握所有技术,因此2020栈必须由一个团队来分担。不是一群人,而是一个真正的团队。这意味着,当一个人落后时,另一个人就会挺身而出。当一个人拥有出色的技术力时,就可以通过一种机制来指导其他人。当团队的知识库不足时,他们就会寻找一名更聪明的团队成员。

每个2020栈团队成员都必须是跨领域专家。仅掌握了一两层技术栈的人都算不上合格的2020栈团队成员,这类的个人有望成为未来2020栈团队成员,但也有可能不行。但是在他们掌握各层技术栈上的深入知识之前,他们只能作为2020栈团队的候选人。

2020栈团队成员为项目带来的各项技术并未严格分类。与我们到目前为止采用的前端/后端分类不同,2020栈的分类是多种多样的。2020栈团队中的某位成员可能熟悉NoSQL、云配置和持续集成等技术。同时,另一个2020栈团队中可能有一位类似的成员,而他熟悉SQL数据库、Node.js服务器、容器和容器编排。如果我们把他们统称为2020栈团队的后端开发,就低估了他们的技术力。

最后,这个团队最关键的组成部分:每次交流都应该以针对当前问题做出最佳决策为共同的目标。这意味着拥有相同技术的成员之间应该以开放的心态进行交流。成员之间不仅应该互相传达最新的进展,还应该展开讨论。这可以让每个人都变得更聪明,而且还可以防止重新步入专业化的漩涡。团队成员一起成长。

你好,“2020栈!

下面我们来想想看,如何利用2020栈更好地匹配职位要求与求职者的技术力。项目经理发布的招聘广告可能包含以下内容,他们希望找到适合公司文化的人才:

Rock City Brewing is seeking a “2020 stack” team player with a strong background in testing, documentation, and code management. Applicants should also have cross domain skills in at least two of the following areas: cloud configuration, containers, orchestration, CI/CD, and server-side scripting.

Shape our future by helping us choose the best tools for the job. At RCB, career advancement is part of your job. Share your knowledge with the rest of the RCB 2020 stack each week at Tech Tuesday.

我公司希望招募在测试、文档和代码管理方面具有深厚背景的“2020栈”团队成员。该职位要求在以下领域中,至少拥有跨两个领域的技术力:云配置、容器、容器编排、CI/CD以及服务器端脚本。

通过帮助我们选择最佳的工具来塑造我们的未来。职业发展是每位公司员工工作的一部分。每周二我们都会举行内部2020栈学习大会。

同一个职位的另一则招聘广告则要求应聘者具备不同的技术力:

我们希望寻找一名“2020栈”团队成员,担任回归测试、API文档、Github工作流管理以及开发运维的工作。

如果你掌握了上述技术,请联系我们。

而求职者可以按照如下方式完善LinkedIn信息:

我拥有多年的“2020栈”团队工作经验,拥有丰富的后端开发经验以及最新的2020开发运维知识,包括Gitlab、Kubernetes 和 Digital Ocean。

我是开源和DRY的忠实拥护者,我认为成功重用的关键在于出色的文档。

通过上述描述,我们看到了一名同时掌握了代码管理域和开发运维域技术的开发人员。“2020栈”团队成员比敏捷团队更加成熟。

2020栈的分层

那么,2020栈应该如何分层呢?前端和后端等术语是否足以描述各层的特性?服务器和Web、设计和运维呢?当然,这些类别足够广泛。

同时,我们也不能忽视测试人员,因为我们知道如果没有他们,我们就无法交付质量胜过竞争对手的产品。此外,如果没有营销人员,我们甚至连客户都找不到。

所有这些因素我们都需要考虑。有关我心目中完美的2020栈,请参考这篇文章(https://medium.com
/better-programming/2020-002-my-perfect-2020-stack-43be78df37
dd)。说到底,2020栈就是跨领域沟通。我相信这是一次全新的文艺复兴。

原文:https://medium.com
/better-programming/2020-001-full-stack-pronounced-dead-355d7f78e
733

本文为 CSDN 翻译,转载请注明来源出处。

相关推荐

JPA实体类注解,看这篇就全会了

基本注解@Entity标注于实体类声明语句之前,指出该Java类为实体类,将映射到指定的数据库表。name(可选):实体名称。缺省为实体类的非限定名称。该名称用于引用查询中的实体。不与@Tab...

Dify教程02 - Dify+Deepseek零代码赋能,普通人也能开发AI应用

开始今天的教程之前,先解决昨天遇到的一个问题,docker安装Dify的时候有个报错,进入Dify面板的时候会出现“InternalServerError”的提示,log日志报错:S3_USE_A...

用离散标记重塑人体姿态:VQ-VAE实现关键点组合关系编码

在人体姿态估计领域,传统方法通常将关键点作为基本处理单元,这些关键点在人体骨架结构上代表关节位置(如肘部、膝盖和头部)的空间坐标。现有模型对这些关键点的预测主要采用两种范式:直接通过坐标回归或间接通过...

B 客户端流RPC (clientstream Client Stream)

客户端编写一系列消息并将其发送到服务器,同样使用提供的流。一旦客户端写完消息,它就等待服务器读取消息并返回响应gRPC再次保证了单个RPC调用中的消息排序在客户端流RPC模式中,客户端会发送多个请...

我的模型我做主02——训练自己的大模型:简易入门指南

模型训练往往需要较高的配置,为了满足友友们的好奇心,这里我们不要内存,不要gpu,用最简单的方式,让大家感受一下什么是模型训练。基于你的硬件配置,我们可以设计一个完全在CPU上运行的简易模型训练方案。...

开源项目MessageNest打造个性化消息推送平台多种通知方式

今天介绍一个开源项目,MessageNest-可以打造个性化消息推送平台,整合邮件、钉钉、企业微信等多种通知方式。定制你的消息,让通知方式更灵活多样。开源地址:https://github.c...

使用投机规则API加快页面加载速度

当今的网络用户要求快速导航,从一个页面移动到另一个页面时应尽量减少延迟。投机规则应用程序接口(SpeculationRulesAPI)的出现改变了网络应用程序接口(WebAPI)领域的游戏规则。...

JSONP安全攻防技术

关于JSONPJSONP全称是JSONwithPadding,是基于JSON格式的为解决跨域请求资源而产生的解决方案。它的基本原理是利用HTML的元素标签,远程调用JSON文件来实现数据传递。如果...

大数据Doris(六):编译 Doris遇到的问题

编译Doris遇到的问题一、js_generator.cc:(.text+0xfc3c):undefinedreferenceto`well_known_types_js’查找Doris...

网页内嵌PDF获取的办法

最近女王大人为了通过某认证考试,交了2000RMB,官方居然没有给线下教材资料,直接给的是在线教材,教材是PDF的但是是内嵌在网页内,可惜却没有给具体的PDF地址,无法下载,看到女王大人一点点的截图保...

印度女孩被邻居家客人性骚扰,父亲上门警告,反被围殴致死

微信的规则进行了调整希望大家看完故事多点“在看”,喜欢的话也点个分享和赞这样事儿君的推送才能继续出现在你的订阅列表里才能继续跟大家分享每个开怀大笑或拍案惊奇的好故事啦~话说只要稍微关注新闻的人,应该...

下周重要财经数据日程一览 (1229-0103)

下周焦点全球制造业PMI美国消费者信心指数美国首申失业救济人数值得注意的是,下周一希腊还将举行第三轮总统选举需要谷歌日历同步及部分智能手机(安卓,iPhone)同步日历功能的朋友请点击此链接,数据公布...

PyTorch 深度学习实战(38):注意力机制全面解析

在上一篇文章中,我们探讨了分布式训练实战。本文将深入解析注意力机制的完整发展历程,从最初的Seq2Seq模型到革命性的Transformer架构。我们将使用PyTorch实现2个关键阶段的注意力机制变...

聊聊Spring AI的EmbeddingModel

序本文主要研究一下SpringAI的EmbeddingModelEmbeddingModelspring-ai-core/src/main/java/org/springframework/ai/e...

前端分享-少年了解过iframe么

iframe就像是HTML的「内嵌画布」,允许在页面中加载独立网页,如同在画布上叠加另一幅动态画卷。核心特性包括:独立上下文:每个iframe都拥有独立的DOM/CSS/JS环境(类似浏...