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

作为一名 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 作为对他们的一项要求是荒谬的。

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

  1. 我们需要意识到这是一种剥削。虽然有一些干得很愉快的全栈开发人员,但他们承担了太多的责任,而且他们其实不愿意或应当为所有事情负起责任。
  2. 我们需要解决 HTML 和 CSS 被低估的问题:性别偏见。如果没有那些为计算机科学做出创举的女性,我们也就不会有计算机科学,但现在男性却“反客为主”。任何算不上“真正的编程”的东西现都被认为是微不足道的、愚蠢的,更适合女性做。对于抱有这种想法的人,应该狠狠地揍他们一顿。
  3. 我们需要重新审视关注点分离原则。为了完成某些事情,却要花大力气掌握所有的东西,这对人们来说是个沉重的负担。我们现在用自包含组件来概念化设计,这是件好事,但它应该是一种心理模型,不能造成技术方面的抢夺。
  4. 最重要的是,我们需要教育那些根本不写代码的人,不同类型的代码可以用来完成不同的事情,以及每个人的对代码的理解和写代码的方式存在差异。希望通过这种方式能够让更多的人编写适合自己的代码,而不是花时间在焦虑上,比如不知道自己在做什么,或者承担了太多的责任。当然,这并不是说如果你愿意承担编写 JS、CSS、HTML、SQL 和 C# 代码的任务或者有足够的时间也不应该去写这些代码!

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

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

  1. 16岁成为全栈开发者:我从开发游戏到写加密货币投资机器人的心路历程

    选自Medium 作者:Nuno Martins 机器之心编译 参与:Luo Sainan.一鸣 全栈开发者听起来是个很高大上的程序员岗位,似乎没有几年工作经验是 Hold 不住的.但是,有个葡萄牙少 ...

  2. 最想学 Go、Python,全栈开发者紧缺!分析了 11 万条程序员数据后有了这些发现...

    整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 科技江湖众生态,技术各有千秋,但有一个定律似乎一直存在,即随着时代的推移,强大的技术未必长久不亡,长久的技术未必强大不衰.那么,就当下而言 ...

  3. 我如何在 16 岁成为全栈开发者?

    @程序员,你在 16 岁的时候做了什么呢?又是什么让你走上了技术之路?本文就分享一位 16 岁的开发者是如何成为全栈开发的故事. 作者 | Nuno Martins 译者 | 刘静,责编 | 郭芮 出 ...

  4. 全栈开发者意味着什么?

    在诸多的企业尤其是创业型公司中,HR 在招聘时往往希望可以招到一名技术全能型人才,而这种人才又被称之为全栈开发者,那么对于全栈开发者而言,都需要具备哪些技能? 作者 | Chris Coyier 译者 ...

  5. 游戏开发中的全栈开发者

    全栈开发者是现在颇流行的词汇,从一开始我就非常喜欢这个概念,甚至在这个词还没有提的时候,现在也是团队非常倡导的方向之一. 那么这里也聊下,全栈和专业化分工之间在开发中的不同,以及我们如何去选取. 这里 ...

  6. 2019年,全栈开发者应该学些什么?

    对于什么是全栈开发者并没有一个明确的定义.但是,有一件事是肯定的:2019年对全栈开发者的需求量很大.在本文中,我将向你概述一些趋势,你可以尝试根据这些趋势来投入你的时间. 简单地说,全栈开发者就是可 ...

  7. 我是如何在 16 岁时成为全栈开发者的?

    @程序员,你在 16 岁的时候做了什么?又是什么让你走上了技术之路的呢? 本文我将跟你分享国外一位 16 岁小哥是如何一步步成为全栈开发者的. 作者 | Nuno Martins 译者 | 刘静,责编 ...

  8. 程序员很少加班?得全栈开发者得天下?撕开标签的技术圈真实模样

    点击参与 2020 开发者大调查:https://bss.csdn.net/m/topic/dev_survey2020,有效信息填写者均能在第一时间获得包含专家解读和丰富干货调查报告的电子版,还有幸 ...

  9. 从算法工程师到全栈开发者,我终于明白了数据科学的真谛

    很多人对于数据科学的概念模糊不清,事实上数据科学早在有数学的时候就已经存在,只是没有人将其描述得如此细致.在过去的9年中,我从数据分析师发展到算法工程开发,最终成为了一名全栈开发工程师.经过无数项目经 ...

最新文章

  1. 基于matlab的硅晶体模型,基于Matlab的图像处理技术识别硅太阳电池的缺陷
  2. 34.angularJS的{{}}和ng-bind
  3. 如何避免Java中的回调“地狱”
  4. uniapp添加顶部导航栏并且更换图标
  5. SpringCloud个人笔记-02-Feign初体验
  6. leetcode双指针合集
  7. linux 下安装部署mq,RocketMQ在linux下安装部署
  8. STM32之窗口看门狗原理
  9. 从国内的996,到美国的朝9晚5,真的这么惬意吗?
  10. selenium 简介
  11. 不确定度在线计算_不确定度标准给找全了,收藏下,有天会用得到
  12. 微信号注册人工服务器,怎么设置微信公众号接入人工客服?
  13. 如何在WordPress主题中的帖子中添加奇/偶类
  14. LaTeX | LaTeX:写大论文时同时使用“\uline”和“\textbf”
  15. Bilibili批量取消关注
  16. 网络与协议2022 - Practice Questions - Block 1
  17. 【Pygame小游戏】一发超人:弓箭手佛系射鸟休闲小游戏,你能射中几只?(源码白嫖)
  18. Python学习:Python分析钉钉评论(一)爬取数据
  19. rxjs_如何阅读rxjs大理石图
  20. Expected commajson(514)

热门文章

  1. 《近匠》专访Ayla Networks云平台工程部主管——企业级物联网云平台的设计与部署...
  2. #读书笔记#《富爸爸窮爸爸》 | Rich Dad Poor Dad 罗伯特.清崎 Robert Kiyosaki
  3. 计算机英语说明文,英语说明文
  4. mysql磁盘读写每秒多少正常_一般硬盘读取速度和写入速度是多少
  5. SQL Server 创建和管理数据表
  6. IGBT最小死区时间计算
  7. AjaxFileUploaderV2.1修改版
  8. Linux内核:一文搞懂外设I/O内存资源的静态映射方式
  9. 上线即砸崩的Filecoin,崩坏的不只是价格 | 研报
  10. TPO “Java运行环境未找到”