【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

不情愿的守门人:关于全栈开发者的迷思

  • 2018-12-10
  • 本文字数:2191 字

    阅读完需:约 7 分钟

不情愿的守门人:关于全栈开发者的迷思

关于全栈开发者,人们存在一些迷思。人们可能会认为全栈开发者是非常厉害的人,他们无所不知,既懂后端又懂前端,一个人可以包揽所有的编码工作。但事实是这样的吗?作者从企业招人的角度和自己作为一名前端开发者的角度剖析了全栈开发者这种角色,观点非常新颖。以下内容翻译自作者的博文。


作为一名 Web 设计师,在我的大部分职业生涯中,我都非常愉快地与程序员、工程师和拥有计算机科学学位的人共事。在这种共生关系中,每一方都有一个安全且明确的工作角色,并且能够从事他们最擅长的事情,享受他们的工作。


计算机科学家们并不会把全部时间花在写代码上,他们做架构,我负责完成通信、表单和互动方面的事情。我们都需要写代码,因为我们是在做 Web 开发,但我们以不同的方式编写代码,以实现不同的和互补的东西。


但对于那些根本不写代码的人来说,事情就没有那么明显:他们很容易认为写代码的人会包揽所有的代码——因为对于代码门外汉来说,所有代码都是一样的。


这种误解造成了糟糕的后果,而非编码人员通常是招聘技术人员的人,这反过来加剧了这种后果。万恶的资本主义总是从最少的资源中榨取最多的价值,因为这是他们赚取利润的方式。如果他们能找到愿意包揽所有编码工作的人,那么就可以极大地减少最重要的开销:人。


因此,市场上就出现了全栈开发者,就像从肮脏的胎盘中破茧而出的强兽人:更强大、更好,同时问题也更多。


为什么会有问题?HTML、CSS、JavaScript、Python、C#和 SQL 都是代码,但它们实际上是完全不同的代码,适合不同类型的人。以前端技术为例:HTML 是一种元语言,与语言、叙事和意义密切相关,属于作家的领域。CSS 属于印刷师和图形艺术家的范畴,而 JavaScript(在这里通常指客户端,但它其实是计算机科学家使用的真正的编程语言)用于处理数据传输和事件。


也就是说,如果你让某人负责所有这些事情(包括 API 和关系数据库设计等等),那么他们在某些领域很可能会比在其他领域要薄弱得多。更糟糕的是,他们往往没有兴趣去改善他们没有意识到的领域或者他们没有获得成就感的领域。根据我的经验,男性更擅长于 JavaScript 或 Python,并通常会从中获得更多的赞誉,但却很少能够从 CSS 技能中获得这些。CSS 让页面看起来更“漂亮”,偏向于“女性化”一些。


一个全栈开发者(实际上是一位同时编写 HTML 和 CSS 的计算机科学家)需要对所有代码负责,尽管这些代码的语法和目的存在根本差异,并成为某些类型代码(一些人根本不关心写得好不好)的守门人。这有两个不利的影响:


  • 糟糕的代码质量;

  • 一群能够(并且喜欢)写出好代码的人却失业了,只能在一旁嘀咕“WTF”。


让人们成为这种守门人的最明显的问题之一是糟糕的 HTML 输出质量。大多数全栈开发人员来自计算机科学背景,他们在学习程序控制结构同时并没有学习 HTML 的文档结构。他们并不擅长这些,但我们却他们也承担了这些工作。


对于“经典”的计算机科学家来说,CSS 可能非常难以捉摸。像级联这样的功能可能让他们摸不着头脑。为了让 CSS 更容易编写和管理,他们用他们更熟悉的东西把 CSS“吃”掉了,于是出现了 CSS-in-JS。


从技术角度讲,CSS-in-JS 通常被定义为一种解决方案(从业者的定义)或者一种问题(反对者的定义)。我认为它不会让 CSS 变得更好或更糟——它只是一种不同的编码方式。但这并不是说它不造成严重的文化问题:


将 CSS 放入 JS 中,那么任何想要编写 CSS 的人都必须学习 JavaScript。而且不仅仅是 JavaScript,还很有可能是 JavaScript 的另一个特定的“风味”,比如 React。更糟糕的是,JavaScript 爱好者不希望在他们的地盘上使用 CSS。


我最近在一家公司工作,这家公司里有数十个全栈开发人员,却没有前端开发人员。我们要开发一个网站,但没有人懂 Flexbox,除了我。当然,我很乐意提供帮助,但我必须学习 React 才能完成手头的工作。所幸的是,我很快就学会了,但换了另一个 CSS 专家可能就没有那么幸运。CSS 专家能给你带来的价值是他们的 CSS 技能,而不是他们的 JavaScript 技能,所以将 JavaScript 作为对他们的一项要求是荒谬的。


总之,我认为我们需要解决以下几个问题:


我们需要意识到这是一种剥削。虽然有一些干得很愉快的全栈开发人员,但他们承担了太多的责任,而且他们其实不愿意或应当为所有事情负起责任。


我们需要解决 HTML 和 CSS 被低估的问题:性别偏见。如果没有那些为计算机科学做出创举的女性,我们也就不会有计算机科学,但现在男性却“反客为主”。任何算不上“真正的编程”的东西现都被认为是微不足道的、愚蠢的,更适合女性做。对于抱有这种想法的人,应该狠狠地揍他们一顿。


我们需要重新审视关注点分离原则。为了完成某些事情,却要花大力气掌握所有的东西,这对人们来说是个沉重的负担。我们现在用自包含组件来概念化设计,这是件好事,但它应该是一种心理模型,不能造成技术方面的抢夺。


最重要的是,我们需要教育那些根本不写代码的人,不同类型的代码可以用来完成不同的事情,以及每个人的对代码的理解和写代码的方式存在差异。希望通过这种方式能够让更多的人编写适合自己的代码,而不是花时间在焦虑上,比如不知道自己在做什么,或者承担了太多的责任。当然,这并不是说如果你愿意承担编写 JS、CSS、HTML、SQL 和 C#代码的任务或者有足够的时间也不应该去写这些代码!


查看英文原文:https://medium.com/@Heydon/reluctant-gatekeeping-the-problem-with-full-stack-e9ad836570f6


2018-12-10 00:002548
用户头像

发布了 731 篇内容, 共 433.7 次阅读, 收获喜欢 1997 次。

关注

评论 3 条评论

发布
用户头像
给作者点赞!
假设你用的java(或c#),正常智商 + 中偏上的自学能力,往好了说,你3年可以成为一个高级程序员,我说的高级并不是说工作3年(工作5年以上的渣渣我也见了不少)或者拿高薪的,而是你真正理解语言、理解设计模式,明白这些特性是用来处理什么问题,什么场合下使用、各种框架执行原理是什么,扩展点在哪里。
即便你用node.js一样也要花这么多时间,因为难点并不在语法,而是本身就需要时间去接触各种场景,去思考

这种强度的学习下简单学学前端,早点现成的前端框架用用应该可以,不过想深入真的很难
即便深入了你会忘得很快
即便你记忆力超级好,你也来不及学习新的东西,因为后端更新很快,前端比后端还快..

最后你前后端跟专业的比都是隔渣渣,但是很多歌公司抢着要你,因为你啥都会啊,但是工资不会太高,为啥? 你一个前后端都业余的做的东西比人专业的做得好,你做不好公司咋赚钱,没钱有你的高工资?
而且会经常加班,为啥?招全栈的目的就是为了省钱
展开
2018-12-10 13:57
回复
用户头像
如果同时负责html、css、js就算全栈的话,那作者可能对全栈有误解
2018-12-10 11:37
回复
没有更多了
发现更多内容

华为云ModelArts的使用教程(附详细图解)

逝缘~

华为 华为云 7月月更

Python 入门指南之使用 Python 解释器

海拥(haiyong.site)

7月月更

TCP两次挥手,你见过吗?那四次握手呢?

C++后台开发

网络编程 网络协议 TCP/IP 后端开发 C++开发

被忽视的问题:测试环境配置管理

老张

软件测试 测试环境治理

激进技术派 vs 项目保守派的微服务架构之争

BoCloud博云

微服务 微服务架构 云原生 istio 服务网格

DeFi生态NFT流动性挖矿系统开发搭建

薇電13242772558

NFT DeFi流动性挖矿

DataKit——真正的统一可观测性 Agent

观测云

你可能不知道,我是如何将一个老系统的kafka消费者服务的性能提升近百倍的

Java全栈架构师

Java kafka 程序员 面试 架构设计

容器环境minor gc异常频繁分析

wgy

Java minor gc

PingCode 性能测试之负载测试实践

PingCode研发中心

软件测试 PingCode

能源行业的数字化“新”运维

博睿数据

AIOPS 智能运维 博睿数据 能源行业

字节跳动Dev Better技术沙龙成功举办,携手华泰分享Web研发效能提升经验

字节跳动终端技术

字节跳动 前端

NBA赛事直播超清画质背后:阿里云视频云「窄带高清2.0」技术深度解读

阿里云视频云

音视频 直播 视频编码

Nebula Importer 数据导入实践

NebulaGraph

图数据库 数据导入 Nebula Graph

如何实现一个延时队列 ?

领创集团Advance Intelligence Group

延时队列 Redis 数据结构 redis 底层原理

2022年国内云管平台厂商哪家好?为什么?

行云管家

云计算 云管平台 云管平台厂商

LeetCode-168. Excel表列名称(java)

bug菌

LeetCode 7月月更

uni-app与uviewUI实现仿小米商城app(附源码)

优秀的李

小程序 uniapp 7月月更 uviewui

LeaRun.Java快速开发平台 高效代码自动化生成

力软低代码开发平台

第十八届IET交直流输电国际会议(ACDC2022)于线上成功举办

E科讯

智捷云——元宇宙综合解决方案服务商

智捷云

区块链 元宇宙 智捷云 区块链技术开发

图像检索(image retrieval)

Geek_e369a5

图像搜索 图像检索

输入的查询SQL语句,是如何执行的?

华为云开发者联盟

MySQL sql 开发 语句

OPPO 小布预训练大模型揭秘:可大规模工业化应用的十亿级模型

OPPO小布助手

AI 智能助手 预训练模型 预训练

【Unity UGUI】ScrollRect 动态缩放格子大小,自动定位到中间的格子

萧然🐳

游戏开发 Unity ScrollView 7月月更 UGUI

什么是低代码开发?

AIRIOT

低代码 物联网 低代码,项目开发

五千字讲清楚团队自组织建设 | Liga 妙谈

LigaAI

团队管理 个人提升 敏捷开发管理 LigaAI 自组织协作

同事悄悄告诉我,飞书通知还能这样玩

Jianmu

自动化 建木CI 飞书通知 定时

太方便了,钉钉上就可完成代码发布审批啦!

阿里云云效

云计算 阿里云 钉钉 jenkins 代码

一加10 Pro和iPhone 13怎么选?

Geek_8a195c

Numpy 的仿制 2

祖维

c slice Numpy

不情愿的守门人:关于全栈开发者的迷思_大前端_Haydon_InfoQ精选文章