根本不存在所谓的全栈开发人员。
语言至关重要。给事物贴上标签并赋予定义,有助于将我们头脑中抽象模糊的概念变得“真实”。一旦这个抽象概念变得“真实”,它就能构建辩论的框架,迫使即使是反对者也必须在既定的框架内进行辩论。
“语言很重要,因为谁控制了语言,谁就控制了对话;谁控制了对话,谁就控制了对话的结果;谁主导了辩论,谁就已经赢得了辩论……”
埃里卡·琼
我们以“全栈开发人员”的概念为例。这是一个非常新的概念,但近来使用量激增。在 Hacker Noon 或 Medium 等网站上,似乎不断有文章试图帮助初级开发人员或有志成为“全栈开发人员”的人。越来越多的公司也开始发布招聘“全栈开发人员”的职位。
然而,我想指出的是,仅仅通过创造和使用“全栈开发人员”这个术语,我们就已经将其固化为一个概念,它正在重塑我们(尤其是那些会雇佣我们的雇主)看待这份工作所需技能的方式。曾经被我们许多人嘲笑的、荒谬的职位要求清单,如今都被归入了“全栈开发人员”这个术语之下。
让我们来看一份(绝非详尽的)清单,其中列出了通常被认为是“成为全栈开发人员必备的技能”:
- HTML/CSS 包括:
- 前端框架,例如 Bootstrap 或 Foundation。
- CSS 预处理器,例如 Sass
- 响应式和/或自适应设计
- JavaScript 包括:
- JavaScript 框架,例如 Angular、React 或 Vue
- JavaScript 工具链,包括 TypeScript、Babel 和 ESLint 等工具,以及 npm。
- 使用 Jasmine 和 Mocha 等工具进行 JavaScript 测试
- 后端开发,根据雇主的需求,可能包括:
- PHP
- Node.js/JavaScript
- 红宝石
- Python
- C# 或 Java
- 数据库开发包括:
- 关系数据库管理系统,例如 MS SQL
- 类似 MongoDN 的 NoSQL 数据存储
- 内存存储,例如 Redis
- Web应用程序架构包括:
- 利用无服务器/云服务构建微服务架构
- 可部署到包括 AWS、Azure、Heroku 等在内的各种平台。
我们不得不承认,这份清单根本不可能全部列出——即便假设你对其中某些或大多数技能只有最基本的了解。我还省略了诸如理解Web应用程序安全、管理版本控制、配置Web服务器等基本技能。
“全栈”开发者正在逐渐消失。光是跟上 JS 和 React 生态系统的发展就够你忙的了!Redux、MobX、GraphQL/Apollo/Relay、Jest、Enzyme、Babel、Webpack、ESLint……再加上频繁的 React 版本更新、每年更新的 JS 版本,以及数不胜数的 npm 包!#javascript #真是个大问题
— Cory House 🏠 (@housecor) 2018年3月16日
这样罗列出来的要求让“全栈开发人员”显得荒谬可笑。然而,作为雇主,我仍然可以把所有这些要求都归入“全栈开发人员”这个可以接受的术语之下。招聘人员和其他业内开发人员培训人员正在阅读诸如《成为全栈开发人员的 6 个必备技巧》或《全栈开发人员到底是什么?》之类的文章,这些文章试图规范化这个定义,使其看起来更合理、更容易被接受。
最终结果是,即使公司无法满足清单上的所有要求,他们仍然成功地提高了成功开发者的必备条件——并且让一开始就提出所有要求变得合情合理。他们让初级开发者和未来的开发者都渴望达到所谓“全栈开发者”的资质。
读了 Hacker Noon 上的一篇文章后,我更加意识到我并不喜欢“全栈开发人员”这个词。我认为它让公司更容易提出不切实际的要求,并设定了一个难以达到的标准,尤其对于初级开发人员而言。
— Brian Rinaldi ( @remotesynth ) 2018年3月6日
实际上,我们已经让“全栈开发人员”这个词主导了这场讨论。我们不应该这样做。这个词定义了一个并不存在的东西——它不可能存在,因为它是一个不可能达到的标准。我们可以从自己拒绝使用这个词开始。我们可以努力揭穿那些灌输给初级开发人员和有志成为开发人员的人的谎言,让他们不要把这个词视为未来成功的绊脚石。我们还可以要求我们的雇主不要使用这个词——直接阐明你们的要求,而不是用一个荒谬的头衔来掩盖它们。如果你在一家不错的公司拥有一份不错的工作,头衔是“全栈开发人员”,那就试着说服他们,使用一个更清晰、更能反映具体职责的头衔会更好。
希望我们越不愿意接受这个术语,就越少看到它被使用,也越能重新掌控关于如何成为一名成功的开发者的讨论。
注:本文最初发表于我的博客。
文章来源:https://dev.to/remotesynth/theres-no-such-thing-as-a-full-stack-developer-2fp9