InfoQ Geekathon 大模型技术应用创新大赛 了解详情
写点什么

我放弃了成为一个全栈开发工程师的理想

  • 2019-05-29
  • 本文字数:2378 字

    阅读完需:约 8 分钟

我放弃了成为一个全栈开发工程师的理想

本文最初发布于 Artur Martsinkovskyi 个人博客,经原作者授权由 InfoQ 中文站翻译并分享。


导读: 一提起“全栈开发工程师”,大家的印象肯定是:这号人啊,堪称大神!会很多技术,前端后端都精通,不掌握七八种语言都不好意思出来打招呼,热点技术名词全都知道,也都会点儿;但是呢,单拿出某一项没有一个能称得上精通的,知识面广则广矣,但没有一个精通的。现在还有些人觉得,全栈开发工程师代表了超高的战斗力,什么都会的“Superman”。但是别忘了老祖宗的教导:术业有专攻。成为全栈开发工程师真的应该是我们的目标吗?让我们来看看 Artur Martsinkovskyi 是怎么说的,希望能给读者带来一些启迪!




我除了是个 Ruby 开发人员外,还是个全栈 Web 开发工程师。但是,我已经厌倦了成为这样的角色,有时候,让我从事业务分析师和手动测试工程师的工作,也会令我倍感厌倦。随着时间的推移,这一行业正在越来越深地陷入了以开发人员为中心的工程流程,不知不觉花掉了很多时间;而开发人员一人则承担了越来越多的责任。

很久之前:史前互联网

很久很久以前,就已经有 DBA(数据库管理员)了。而现在你在小隔间里很难再找到这样的数据库管理人员了。如果你在 Indeed.com(全球领先的招聘网站)搜索“fullstack web developer”(全栈 Web 开发工程师),会得到 7000 多个结果,而如果你搜索“Web developer”(Web 开发工程师)则得到 40000 个结果。用户体验工程师和前端开发工程师的两个不同的独立角色也正在慢慢地融合在一起,前提是他们在工作本质上是相同的。越来越多的机构正在物色既能做前端又能做后端,还能参与业务需求开发、编写单元和集成测试的全能大神,要求他无所不能,什么都能干。

消减成本,剩下的都拿走

乍一看,这似乎是个好主意,如果一个人知晓他的需求,完成了从白纸开始到发布所需的一切功能,并控制了整个过程。这对企业来说更为容易:你需要与一个人进行核实,并且开发过程不会因为“这块应由谁来做”的问题而变得过于复杂,还可以降低成本,从而在质量和开发时间上取得一些折衷。而且,由于他们经历了整个过程,而不是从前任留下的工作开始,因此交流和语境转换也不会给他们带来什么影响,这看上去似乎是一个很好的增强做法……如果你对那些专业人员一无所知,那你就会把这些专业人员的角色都塞到一个人身上。

反击复杂性

后端开发是一个非常复杂的领域,涵盖了对网络层、服务器整体工作的方式、部署、AWS/Google/Azure 服务(它们对现代 Web 应用至关重要)、服务器应用程序语言和框架的细节、使用的协议、身份验证、数据库连接和设置以及许多其他内容的理解。前端则包括掌握扎实的 Web 标准、特定浏览器的怪癖和奇异之处、ES5、ES6、CSS、HTML、框架、预处理器、转译器、构建工具、用户体验、用户界面、浏览器视角的网络、浏览器存储的知识,有时甚至还包括与 Flutter、Ionic 和 React Native 有关的移动应用的细节。不要让我讨论业务分析师和测试工程师的角色,因为对我来说这俩是完全不同的领域。


每个角色都有自己的学习曲线和需要掌握的基本技能。你不能奢望一个人只阅读几篇文章或者一本书,编写一个应用程序示例,然后就可以给你带来好结果。但你要知道,结果总是不尽如人意。如果你雇佣了全栈 Web 开发工程师,那么你就不会同时雇佣相当于两个半职专家的人员,而是会同时雇佣一个熟练的工程师和一个不熟练的工程师(在最好的情况下,你也可以得到相当于两个还说得过去的半职开发工程师)。即使在一个领域,也需要投入和动力,以保持相关性和卓越性,而不是投入两个或更多的领域上。因为时间是有限的。除非你放弃了自己的个人生活和时间,否则你不可能会取得文体两开花的成功。

广度还是深度?

千万不要误解我的意思,我的本意是说,我认为拓宽知识面,运用对你所负责的部分的理解来更好地完成你所负责的部分,还是有好处的,但要让开发人员成为这样的一个人:对各种领域样样都懂但无一精通,如此一来,会直接影响代码质量、解决方案的选择以及所开发项目的未来。要知道我们的大脑空间是有限的,但我们可以对一个或几个领域的更深、更好的知识来填充它,或者开始汲取多个领域的信息,结果得到的就是对所有事物都是肤浅的了解。这种知识体系创造了信心泡沫,不幸的是,这种信心并不能证明自己的正确性,结果导致了更槽糕的解决方案,如重新发明轮子、错误的技术选型、用显微镜敲钉子。

并非所有成本消减都是有益的

全栈很有趣,因为它似乎是软件工程领域的独特之处。其他领域大多都有分工,你不能指望牙医能够治愈你的心脏病,也不能指望神经外科医生来治愈你的痔疮。全栈应用于软件工程的原因,似乎是因为这一领域的虚拟性和故障安全特性。你的代码质量并不会直接影响用户可见的结果,因此,你大可以在系统崩溃之前,长期使用补丁解决方案进行修补(通常是你不在时经常会出现这种情况)。此外,这种想法在金钱支出的直观层面上来看似乎颇有吸引力,雇佣具有更广泛技能的人(无论人才质量如何),看起来可能会让人觉得,以同样的成本能够做更多的事情,真是美滋滋。


我们得到的是一些平庸的解决方案,这些解决方案都是由那些在特定领域没有足够专业知识,无法发现更好方法的人创建的,他们所掌握的知识都比较粗浅,略知一二,他们的知识体系都是一堆复制粘贴的答案。我们要让那些故步自封的人必须跟上如此多的主题。我们雇来的专业人员并没有创造出什么令人惊叹的东西,因为他们没有足够的时间来为这个领域创造一些价值。我们以较低的开发成本进行开发,得到的是不合格的产品,这一状况在出现 Bug 和客户流失后就会逐渐消失。由于这些问题,项目以这种开发方式进行开发时将不可避免地会遇到。从短期经济角度来看,雇佣全栈开发工程师可能是值得的,但长期来看,它对整个行业和我们建设的项目来说都是有害的。




原文链接:


https://artur-martsinkovskyi.github.io/2019/i-dont-want-to-be-fullstack/


活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2019-05-29 16:1613288
用户头像

发布了 504 篇内容, 共 210.4 次阅读, 收获喜欢 1502 次。

关注

评论 5 条评论

发布
用户头像
全栈被小型企业所善待,被大型公司所摈弃。
2019-06-13 09:24
回复
用户头像
至今还能听到有些前端或者后台的同学要走全栈(尤其是一些刚入门的同学),其实当深入到前端或者后台的技术之后,自然会打消这种想法,还有这种想法的同学,可能还不够专业,当然不能排除一些有精力饱满的人会深入前后端技术。
2019-05-30 17:00
回复
赞同,新手会有这种错觉是因为他对技术不够深入,当他足够深入后,才会发现自己的无知
2019-06-05 16:12
回复
用户头像
行业都是有粗放到精细化分工的,
成本消减 感觉应该是 成本削减 吧
2019-05-30 10:11
回复
整个人类的知识体系都是越来越细分的,分科治学就是最好的实践,而全栈则是在逆水行舟
2019-06-05 16:07
回复
没有更多了
发现更多内容

如何用Apipost校验响应结果

爱研究代码的极客人

APi设计 JSON Schema apipost

MySQL中的distinct和group by哪个效率更高?

Steven

线上网络丢包引起的接口响应时间过慢,快速排查案例

KINDLING

Java 运维 网络 丢包 eBPF&Linux

SparK 用稀疏掩码为卷积设计 Bert 预训练

Zilliz

计算机视觉

使用Jira盗版会存在的6大风险

PingCode

项目管理 软件开发 软件管理

统一观测丨如何使用 Prometheus 监控 MySQL

阿里巴巴云原生

MySQL 阿里云 云原生 #Prometheus

全球化安全生产 & 质量保障体系建设探索

阿里技术

质量保障 安全生产 全球化技术能力

智能合约佛萨奇系统开发,佛萨奇2.0源码搭建

薇電13242772558

OpenHarmony标准系统内核学习【2】CPU轻量级隔离特性

离北况归

OpenHarmony

理论+实践,教你如何使用Nginx实现限流

华为云开发者联盟

后端 开发 华为云 企业号 2 月 PK 榜 华为云开发者联盟

10大知识管理软件厂商有对比

PingCode

项目管理 知识管理软件

简单概述Serverless

天翼云开发者社区

工业生产环境下,时序数据库 TDengine 如何打造全面有效的数字化监控?

TDengine

数据库 tdengine 时序数据库

基于GIS+WebGL智慧消防3D可视化云控系统

2D3D前端可视化开发

智慧消防 消防物联网云平台 消防三维可视化 智慧消防系统 消防云控平台

APISIX Ingress 如何使用 Cert Manager 管理证书

API7.ai 技术团队

证书 api 网关 APISIX Ingress Controller

新年新气象,老兵开新坑

致知Fighting

Java Go 服务器

实战分享 | 金融数据采集报送平台实践

葡萄城技术团队

行云洞见|为何行业权威都预测“云原生IDE 将成为常态”?

行云创新

ide 云原生 云端IDE Cloud IDE TitanIDE

谈谈我工作中的23个设计模式

阿里巴巴中间件

阿里云 云原生

一文教你如何重新认识用户

菜农曰

互联网 产品经理 消费者 需求设计

浪潮云:以数据云IBP释放数据要素力量

浪潮云

云计算 数据云

单线程架构的Redis如此之快的 4 个原因

JAVA旭阳

redis 缓存

NFTScan 正式上线 Fantom 网络 NFTScan 浏览器和 NFT API 数据服务

NFT Research

NFT 数据基础设施

如何通过jstat命令进行查看堆内存使用情况

华为云开发者联盟

后端 开发 华为云 企业号 2 月 PK 榜 华为云开发者联盟

单线程 Redis 如此之快的 4 个原因

C++后台开发

redis 中间件 后端开发 单线程 C++开发

泰山众筹sun4.0矩阵合约系统开发搭建

开发微hkkf5566

全景剖析阿里云容器网络数据链路(三):Terway ENIIP

阿里巴巴云原生

阿里云 云原生 云原生容器

聊聊Docker镜像

天翼云开发者社区

Docker 镜像

LeaRun快速开发平台:自由搭建个性化门户

力软低代码开发平台

RocketMQ Streams拓扑构建与数据处理过程

Apache RocketMQ

RocketMQ 消息列队

易观千帆 | 12月用户体验GX评测:国有行及股份行持续领跑,农信社用户体验关注提升

易观分析

金融 手机银行

  • 扫码添加小助手
    领取最新资料包
我放弃了成为一个全栈开发工程师的理想_语言 & 开发_Artur Martsinkovskyi_InfoQ精选文章