速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

  • 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:002680
用户头像

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

关注

评论 3 条评论

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

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

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

跬智 Kyligence 入选工信部“工业大数据分析与集成应用重点实验室”工作组成员单位

Kyligence

大数据 Kyligence 工业数据智能

ORACLE进阶(六)ORACLE expdp/impdp详解

No Silver Bullet

oracle 7月月更 expdp impdp 数据泵

模块六

Geek_2ce415

dapp丨defi丨nft丨lp单双币流动性挖矿系统开发详细说明及源码

开发微hkkf5566

银行需要搭建智能客服模块的中台能力,驱动全场景智能客服务升级

易观分析

人工智能

spark调优(三):持久化减少二次查询

怀瑾握瑜的嘉与嘉

spark 7月月更

打造All-in-One应用开发平台,轻流树立无代码行业标杆

ToB行业头条

一文读懂数仓中的pg_stat

华为云开发者联盟

数据库 后端

谈谈 SAP 系统的权限管控和事务记录功能的实现

汪子熙

SAP abap Netweaver 7月月更 权限监控

A tour of gRPC:03 - proto序列化/反序列化

BUG侦探

gRPC RPC protocolBuffer

当AI对话系统像自动驾驶一样分级,谁能率先跑出L5?

硬科技星球

人工智能 AI人机对话

什么是数据泄露

AIWeker

机器学习 Kaggle 数据泄露 7月月更

Spring Cloud源码分析之Eureka篇第四章:服务注册是如何发起的

程序员欣宸

Java spring Spring Cloud Eureka 7月月更

谈谈 SAP iRPA Studio 创建的本地项目的云端部署问题

汪子熙

SAP 7月月更 iRPA 智能机器人 流程自动化

SysOM 案例解析:消失的内存都去哪了 !| 龙蜥技术

OpenAnolis小助手

开源 案例 内存泄漏 龙蜥技术 allocpage

Python性能分析利器pyinstrument讲解

曲鸟

Python 7月月更

三千余字细说大厂高频Java面试题Redis缓存雪崩-击穿-穿透

了不起的程序猿

java程序员 java面试 Java’

leetcode 241. Different Ways to Add Parentheses 为运算表达式设计优先级(中等)

okokabcd

LeetCode 分治 数据结构与算法

内部排序——插入排序

乔乔

7月月更

讲师征集令 | Apache SeaTunnel(Incubating) Meetup 分享嘉宾火热招募中!

Apache SeaTunnel

99%的人都不知道|私有化部署还永久免费的即时通讯软件!

WorkPlus

麒麟信安根植欧拉:共筑中国操作系统崛起之路

脑极体

Pisa-Proxy SQL 解析之 Lex & Yacc

SphereEx

数据库 sql SphereEx

MRS离线数据分析:通过Flink作业处理OBS数据

华为云开发者联盟

大数据 后端

2022年5月互联网医疗领域月度观察

易观分析

互联网医疗

融云斩获 2022 中国信创数字化办公门户卓越产品奖!

融云 RongCloud

如何参与开源项目 - 细说 GitHub 上的 PR 全过程

玩转Devop和研发效能DevStream/DevLake

GitHub 开源 DevOps DevStream

Python源码扫描工具Bandit小试牛刀

阿呆

Python Bandit 源码扫描

低代码(lowcode)帮助运输公司增强供应链管理的4种方式

优秀

低代码 供应链物流

Sator推出Web3游戏“Satorspace” ,并上线Huobi

股市老人

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