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

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

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

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

作者 | 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栈更好地匹配职位要求与求职者的技术力。项目经理发布的招聘广告可能包含以下内容,他们希望找到适合公司文化的人才:

Bash
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 翻译,转载请注明来源出处。

相关推荐

不看必后悔!15个三星GoodLock隐藏小技巧~(上)

很多刚用三星手机的星粉们,一定对三星GoodLock这个宝藏App还不是很了解,今天就带大家一起详细去看看GoodLock这个大家族究竟有多少宝藏功能及成员呢?让我们一起来看看吧~由于Good...

惊魂幻象理智值监控WA!大字体+范围提示一目了然

一个WA助你轻松监控大幻象理智值,不再错过恢复时机这个WA用大字体实时同步我们的理智值下面的图标提示恢复宝珠的剩余次数上面的图标高亮则意味着我们在宝珠的恢复范围内我们可以将图标随意移动到适合自己观察的...

盘点十个超炫的jQuery插件(jquery插件是干什么的)

“DevExpress14.2新版发布会”即将推出。心动不如行动,赶快报名吧!我们期待与您相约。今天小编为大家搜罗了十个超酷的jQuery插件,这可以使你的网站界面更加友好。jQuery创造了令人难...

Google官方梳理,Android 多返回栈技术详解

用户通过系统返回按钮导航回去的一组页面,在开发中被称为返回栈(backstack)。多返回栈即一堆"返回栈",对多返回栈的支持是在Navigation2.4.0-alpha0...

说三星手机系统不好用,因为没有玩明白三星,三星Diy功能超强大

都说三星手机系统不好用,其实真正用起来,挺好用的三星手机系统像块没打磨的玉,默认设置是基础款,用着普通。但你要是肯花点时间,它能变得特别顺手。关键就在一个叫GoodLock的工具,它是三星自家出的...

Sam Helper三星手机用户必装神器(三星手机必装app)

SamHelper这款软件集合了三星手机主题工具当前主题o主题路径o主题安装系统设置屏幕模式o状态栏o文件o频段o暗码Lock&LabsGoodLockoGalaxyLa...

外卖套餐搭配的探索和应用(外卖套餐搭配技巧)

本文系外卖美食知识图谱系列的第三篇文章,从技术层面我们会介绍外卖套餐搭配的技术方案,包括离线、实时的套餐搭配的迭代,套餐质量评估方案,同时会介绍套餐搭配的业务应用。1.背景让用户更方便快捷地选购到满...

用几行原生JS就可以实现丝滑的元素过渡效果

作者:ConardLi大家可以看下下面这个应用的页面切换体验,是不是很丝滑~做过体验优化的朋友应该都清楚,如果用原生的CSS或者JS动画去实现,想要实现出类似的效果,不会特别简单,而且也要考...

速腾车主RNS315固件及2016年6月地图升级详细教程

本来打算买个大众原厂的地图卡,后来在网上看其实不需要原厂地图卡也可以升级,于是开始在网上收集资料,开始天真的以为只要有密匙文件修改一下就可以免费升级了,其实最主要的还是破解的固件,不知道为什么,网上找...

学习一个母词act,一次解析一串关联、复合、衍生词族

首先形义解读一下act的原始意象,A是力量与行动的开始C是范围的覆盖T是目标目的的接触与刻度合在一起,行动行为艺术力量的复合行为以下是关于act的复合词、词根词缀衍生词及其变形后的词根衍生词的详细...

优迈系统(一体化控制柜)快车调试(八)

逻辑故障和驱动故障分析段码管上显示警告码和故障码对照表警告码操作模式故障码操作模式或驱动故障AL000EPC(紧急电源管制模式)ER100DTC(门在设定时间内不能关到位)AL001COR(复位模式)...

Layui简单实现左侧菜单和Tab选项卡动态操作

<!DOCTYPEhtml><html><head><metacharset="utf-8">...

码农如何快速打造一个有设计感的网站

像我这样的程序员来说经常被“设计”这个词吓到,因为我是一名程序员而不是设计师,我拥有的是计算机学位证,另外我对ComicSans字体并不介意。(注:ComicSans字体是Win95附带...

vue3 新特性 computed、watch、watchEffect 看完就会

1、watchEffectwatchEffect侦听器是一个副作用函数,不需要指定监听的某个属性,监视的回调中用到哪个属性,就会监听哪个属性,一旦运行就会立即执行。watchEffect与com...

10个冷门但非常实用前端开发者很少用的CSS规则

许多开发者只学了基础——比如修改颜色、设置字体或创建弹性布局——就止步不前。但CSS是一门精深而多用途的语言,掌握后能帮你构建优雅、高效且无障碍的界面。无论你是从零搭建还是微调设计系统,掌握一些高...