“全栈开发已死?”

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

作者 | Joe Honton

译者 | 弯月,责编 | 屠敏

出品 | 优快云(ID:优快云news)

以下为译文:

全栈的起源

在新千年来临之际,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-43be78df37dd)。说到底,2020栈就是跨领域沟通。我相信这是一次全新的文艺复兴。

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

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

<think>嗯,用户让我介绍一下“锐评Java后端已”这个观点,我需要先理解这个说法的背景。最近可能有些讨论认为Java后端开发在走下坡路,可能是因为新语言和技术的兴起,比如Go、Python、Node.js之类的。不过Java在企业级应用里还是很稳固的,尤其是在大型系统里。 首先,用户可能是听到这样的言论,想了解具体情况,或者自己也在考虑学习方向或技术选型。需要分析Java的现状,挑战,以及为什么有人会认为它“已”,同时也要给出客观的反驳点。 接下来,要考虑用户可能的身份。可能是刚入行的开发者,担心Java的前景,或者是有经验的开发者想了解行业趋势。如果是新手,可能需要更详细的解释;如果是老手,可能需要更深入的技术对比。 然后,需要覆盖几个方面:Java的优势,比如生态成熟、性能、跨平台;面临的挑战,比如新语言的竞争、云原生趋势下的适应性;Java自身的演变,比如新版本特性、框架更新(Spring Boot 3、Quarkus等);还有实际应用案例,比如大厂的使用情况。 还要注意避免偏见,不能盘否定Java,也不能忽视其他语言的优点。需要客观指出Java在哪些场景下仍然适用,哪些场景可能其他语言更合适。 另外,用户可能想知道学习Java是否还有必要,或者是否需要转向其他语言。所以回答中应该包含职业发展的建议,比如Java仍然有市场,但多学其他语言也有好处。 可能还需要提到微服务、云原生对Java的影响,比如GraalVM、原生编译等新技术如何帮助Java适应现代架构。同时,Java社区活跃,持续更新,这也是它保持生命力的原因之一。 最后,总结的时候要强调技术的选择取决于具体需求,Java并没有,而是在不断进化,适应新的挑战。这样用户就能得到一个面的认识,而不是被极端观点影响。</think>近年来,"Java后端已"的论调时有出现,这种观点主要源于新兴技术的冲击和技术演进的趋势,但实际情况远非如此简单。我们可以从以下角度进行理性分析: **一、争议的根源** 1. **新语言的崛起**:Go(高性能并发)、Python(AI生态)、Node.js(效率)等语言在特定场景分流了Java的传统优势领域 2. **云原生挑战**:容器化、Serverless架构更青睐轻量级运行时(如Go的单一二进制文件) 3. **开发体验对比**:Kotlin/Scala等JVM语言在某些场景提供更简洁的语法,Spring框架的复杂性引发争议 **二、Java的不可替代性** 1. **企业级生态壁垒**: - 球500强企业90%的核心系统仍基于Java(2023 New Relic报告) - 金融、电信等行业关键系统对JVM稳定性的依赖短期内难以替代 2. **持续进化能力**: - Project Loom(虚拟线程)大幅提升并发性能(JDK21+) - GraalVM支持原生编译(编译后应用启动时间<100ms) - Spring Boot 3.x面拥抱云原生,支持Native Image 3. **性能新标杆**: - Quarkus框架在Kubernetes环境内存占用比传统Java应用减少80% **三、技术选型新思维** 1. **混合技术趋势**: - 高并发网关:Go(如字节跳动Edge Proxy) - 数据密集型场景:Java + Rust(如Netflix内存管理) 2. **开发者竞争力重构**: - 基础要求:深入理解JVM(类加载机制、内存模型) - 必备技能:云原生技术(K8s、Service Mesh) - 增值方向:多语言能力(掌握Java+Go/Python) **四、未来演进方向** 1. **Serverless适配**:通过CRaC(Coordinated Restore at Checkpoint)实现亚秒级冷启动 2. **AI工程化**:LangChain4j等框架推动Java在AI应用层的渗透 3. **硬件协同**:Project Panama提升与本地代码交互效率,强化异构计算能力 **理性结论**: Java后端并未消亡,而是进入技术转型深水区。2023年TIOBE指数显示Java仍稳居前三,GitHub活跃度排名第二。其演变路径呈现: - 核心系统:持续加固(银行核心系统Java占比78%) - 新兴领域:通过框架革新争夺市场(如Spring AI) - 开发者:从"纯Java"向"Java+"复合型人才转变 建议开发者:保持Java深度同时拓展技术广度,重点关注云原生Java、性能优化、多语言集成等方向。技术的价值不在于生,而在于持续进化能力。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值