上周在 ShopTalk 上,我和 Dave 与 Mandy Michael 和 Lara Schenck 进行了交流。Mandy 刚刚写了有意挑衅的 “那些不会写 JavaScript 的人有什么价值吗?”,这引导了我们的谈话。Lara 也对这个主题深感兴趣,她是一位正在找工作的网页工作者,但她把自己定位为 非独角兽。
讨论的一部分是关于职位名称。如果有一个被普遍接受和使用的职位名称,意味着你专门精通 HTML 和 CSS,并且有一个对该职位名称的需求,那么可能根本不会有任何问题。但实际上没有。 “网页开发人员” 太含糊了。“前端开发人员” 可能曾经代表这个意思,但已经被 JavaScript 大量占用。
事实上,你可能会说,我们中没有人拥有一个完全完美的职位名称,整个行业都难以就一组职位名称达成一致。
Lara 创建了一个仓库,目的是深入思考并讨论所有这些问题。
如果在设计和后端开发之间已经存在一个频谱,并且前端开发是两者之间的位置,那么也许前端开发,如果我们放大,也是一个频谱。

我喜欢频谱的想法,但我同意 Sarah Drasner 的评论,她说这让人感觉你不能同时擅长两项。如果你在这个频谱的中间是一个点,那么例如,你的 JavaScript 能力不如右侧的人好。
这可以通过一些不同的数据可视化(也许是点的尺寸)来解决,或者,天哪,技能等级条。
更重要的是,如果你真的对所有这些的讨论感兴趣,Lara 已经 使用问题区域来公开它。
去年,Geoff 也 开始考虑 我们所有的网络工作作为一个频谱。我们可以将我们的工作分解成各个部分,并以不同的方式将其映射到这些部分。
查看 Geoff Graham (@geoffgraham) 在 CodePen 上的笔 Web Terminology Matrix。
查看 Geoff Graham (@geoffgraham) 在 CodePen 上的笔 Web Terminology Venn Diagram。
这当然可以帮助我们稍微了解一下我们的世界,但并没有真正帮助解决职位名称问题。不太可能让人们写出包含数据可视化的职位描述,来描述他们正在寻找什么。
Jeff Pelletier 尝试了一下职位名称,并将其缩小到三个。
前端实现(响应式网页设计、模块化/可扩展 CSS、UI 框架、实时样式指南、渐进增强和可访问性、动画和前端性能)。
应用程序开发(JavaScript 框架、JavaScript 预处理器、代码质量、流程自动化、测试)。
前端运维(构建工具、部署、速度:(应用程序、测试、构建、部署)、监控错误/日志和稳定性)。
虽然这些对我来说不像职位名称,而且将它们转换成类似“前端实现开发人员”这样的东西,似乎也不太可能流行起来。
Cody Lindley 的 Front-End Developer Handbook 有一个关于职位名称的部分。我不会完全引用它,但它们是
- 前端开发人员
- 前端工程师(又名 JavaScript 开发人员或全栈 JavaScript 开发人员)
- CSS/HTML 开发人员
- 前端网页设计师
- 网页/前端用户界面(又名 UI)开发人员/工程师
- 移动/平板电脑前端开发人员
- 前端 SEO 专家
- 前端可访问性专家
- 前端开发运维
- 前端测试/质量保证
请注意有争议的“全栈”职位名称,Brad Frost 说
根据我的经验,“全栈开发人员” 总是意味着“能够编写前端代码的程序员,因为他们必须编写,而且前端代码‘容易’”。情况永远不会反过来。
不过,这些对我来说感觉都还不错。但奇怪的是,感觉既太多又太少。也就是说,虽然这里有很好的覆盖范围,但如果你要涵盖专业领域,你也可以加入性能、文案写作、分析等等。你添加的越多,我们就离锁定它们越远。更不用说当人们交叉这些学科时会变得更难,而他们几乎总是会这样做。
好吧。
感谢您继续讨论这个问题。它可能永远不会结束,但至少它存在于那些不了解整个事情有多复杂的人面前。
我无意冒犯任何人。但我感觉职位名称和这种标签是美国特有的现象。
我工作过的任何地方都没有对任何人的职位名称进行过有意义的指定,我一点也不在乎你的名片上写着什么。
我是不是漏掉了什么?
这与名片无关,而是与工作机会和面试有关。
我认为,你必须给自己取个称呼。我的意思是,很明显,你的名片上是写着“前端开发人员”还是“SEO 专家”是有区别的。因此,职位名称确实有一定的重要性。
但在将单个主题(在本例中为前端开发)进行划分方面,问题在于每个主题所带来的假设。
如果我们确定对所有前端相关工作都使用“前端开发人员”(FED),那么每个人都会假设每个 FED 都能做所有事情,包括 JavaScript、可访问性、SEO,甚至可能是设计。但这显然是不真实的。而这很重要,因为如果有人雇用你,如果你说你是 FED 但不会写 JavaScript,或者不做设计,或者他们假设你还会做 SEO 但你不会,就会有误导。
所以现在我们开始说“HTML/CSS 开发人员”或“JavaScript 工程师”等等,以确保表达清楚。我的意思是,我很高兴听到你在工作的地方没有这个问题,但我认为在招聘过程中,或者对自由职业者来说,他们为不同的客户做各种各样的工作,这个问题会更突出。
首先,我不确定你是否听了播客,因为他们在播客中更详细地解释了原因。如果你没听过,那也很好。
美国或世界范围内职位名称存在问题的最大原因是,职位名称的含义已经背离了最初的意图,因此你永远无法确定雇主想要什么。当你看到前端开发人员的职位描述时,它通常意味着精通 React、Angular 或其他一些 JavaScript 框架的人。它不一定意味着精通 HTML/CSS 的人,而它曾经是这个意思。你很少,甚至从没见过招聘精通 HTML/CSS/JS(交互式 JS 而不是框架 JS)的人的职位描述。
我认为,问题与 JavaScript 分类/命名一样严重,也与职位名称命名一样严重。JavaScript 已经发展到远远超出其最初设计范围的程度。React、Angular、Ember 和 Vue 并不完全是前端,但它们也不是后端,它们处于两者之间,触及这两个世界。我认为我们应该将这些大型框架重新归类为中间层,然后职位名称就可以用于中间层开发人员,将他们与前端和后端分开。我知道中间层这个名字不太有创意,但它很具有描述性,我们可以找到一个更好的名字。
我认为没有人,或者说大多数人,实际上并不在乎他们在得到工作后自己的职位名称是什么,而是更关心职位描述将职位名称归类为是什么,因为职位名称的含义已经变得如此模糊,并且背离了最初的意图。
我上大学时想成为一名平面设计师,后来变成了“网页人”,我的同事给我起了个外号“theCSSguru”,所以我甚至在我的简历上使用这个名字,但我的职位名称在 10 年间一直在变化和发展,具体取决于公司。以下是我所担任过的同一类工作的职位名称:平面设计师、网页设计师、创意总监、网页开发人员、前端开发人员、首席前端开发人员和 UX 开发人员。我想知道我的下一个职位名称会是什么?我还有平面设计能力的额外优势,所以也许是“首席前端 UX 设计师/开发人员总监”。是的,我喜欢这个。哈哈。
我在哪里合适?我在一家数字营销机构工作。IT 学士学位,接触过 PHP/Java。但我的日常工作是“HTML、CSS、响应式和 WordPress 主题设计”。
我的级别比较低,了解 JS 语法。
令我惊讶的是,数据层应用程序开发总是被排除在“全栈”讨论之外。我同意大多数“全栈”说法都被夸大了。然而,我发现推特/播客/博客上的大多数讨论都集中在“以消费者为中心”的网页开发上。我过去几年一直是保险行业的顾问,参与过一些主要基于浏览器的网页门户和业务管理平台的开发工作,这些平台更多的是内联网,而不是互联网。虽然我对前端为主的 SPA 开发世界还比较陌生,但以前我经常管理数据分析师、SQL 开发人员(这并不意味着仅仅是 select 语句)、系统集成/ETL 开发、商业智能/数据可视化和报表解决方案开发团队。我认为在企业领域,“全栈”这个词确实有一个几乎准确的定义,但它会根据战略规划和战术规划而变成解决方案架构师或技术架构师。在许多大型公司,DBA 和/或 SQL 开发人员的角色对于构建数据中心的关键系统至关重要。我想,这只是火上浇油,但目的是指出,标题/角色的定义并不完整或统一。如果有人想进一步讨论,我很乐意分享一些其他现实世界的例子。
我认为这是一个非常重要的议题,虽然需要记住故事的两个方面。确实,网络变得更加苛刻,Javascript/编程已经成为一个问题,以至于在许多新的工作流程中,尝试将 html 和 css 分开作为一个单独的问题会非常不方便。另一方面,这个行业确实试图将人们归类,而不是寻找个人才华并创造性地加以利用。我认为这并不仅仅是关于头衔,而是关于你是否符合一个公认的类别。不幸的是,html/css 逐渐消失了,不再是那些可接受的类别之一。
正如这里和 Lara 的文章中指出的那样,这是一个真正的遗憾。我认为我与 Lara 以及 Chris 还有很多其他人有着相似的经历,我们都是从 90 年代后期开始做网页设计师的,而且对 Dreamweaver 有点危险的了解。这演变成 CSS,因为 CSS 变得流行,然后当 Joomla、Drupal 和 WordPress 变得流行时,又演变成这些。我认为即使在那时,我也有相当强大的知识,当然不能称之为编程,但我可以完成任务!而且我很容易找到工作,因为我很有细节感。但是到了 2013-14 年左右,随着 Javascript 越来越流行,网络要求越来越高,手工制作的 CMS 工作变得越来越没有利润。在那时,我知道我必须要么完全开始学习编程和 CS 技能,要么将我的注意力转向 UX,要么放弃网络。我选择了前者。那是一项极其艰苦的工作。我每周要花 40-80 个小时读书、做教程、制作练习项目。问题是我开始得不够早。行业已经发生了变化,大多数公司不再像几年前那样重视我(相当不错的)html/css 技能。现在这项工作终于开始有回报了,但我还在学习的时候就遇到了很多歧视。
问题是,即使我已经走得很远,现在正在做全栈工作,也更有信心了,但我仍然能感受到那几年被许多公司/人一次又一次拒绝的痛苦,因为我在 Javascript 上还不够精通。我毫不怀疑,如果你以正确的方式构建团队,可以利用一个优秀的 css/html/通用网络人员(至少了解一些 JS,这样他们就不会把事情搞砸)。我认为这也不是什么仁慈的行为,我认为任何时候你以适当的方式利用人才,都会对团队有利。我认为问题很简单:将事物归类并坚持公式是最简单的解决方法。问题是人们不以这种方式工作。他们不是桶!
我找不到编辑我的评论的方法,但我只是想补充一点,我认为对于从设计转行到编程的 html/css 人员来说,最大的讽刺之处在于你往往会根据你在 CS 和编程方面目前的水平来判断。
如果你有 20 年的通用网页开发经验,15 年前就理解了 HTTP 生命周期,比后端人员更清楚如何正确地构建 CSS,了解浏览器的技巧,学到了适用于任何开发工作的无数经验教训,并且拥有良好的通用工作和测试纪律……在大多数技术面试中,这些几乎都不重要。他们倾向于专注于你的原始编程技能并根据它们来判断你。很多时候,这都是关于你解决学术代码难题的能力,而这些难题需要单独练习(因为它们在现实世界中很少有用)。我绝对不是在贬低优秀的编程技巧,我只是认为对它们赋予了过高的权重,应该给不同类型的才能留出一些余地。尤其是考虑到行业中有很多人是从与 CS 毕业生不同的路径走上职业道路的。
感谢你的文章。作为一个目前正在寻找工作,对纸上草图/模型和 HTML/CSS/基本 JS 都同样充满热情的我来说,这篇文章让我感到非常痛快。似乎每个人都名义上对能够同时做两件事的人感兴趣,但前端网页开发职位正在寻找 angular/react,却没有提及设计技能,而 UX/UI 设计职位大多只希望你“熟悉 HTML/CSS”。
我们如何看待 UX/UI 开发人员?
值得一提的是“T 形人才”这个词。这意味着你擅长很多事情,但在某一方面有深厚的知识。例如,我对前端开发非常有经验,这将是我的“深入”部分,但我也有 5 年的后端开发经验,花了 2 年时间将 SQL 重写为 hibernate 查询并在服务中创建端点。我还做了 1.5 年的 UX 工作,创建线框图和进行交互设计。现在在我的工作中,我也在做几周的 DevOps 工作,我也很喜欢。我热爱前端,但我没有问题加入一些后端开发,如果有的话。我认为“T 形人才”是个人技能组合的最佳体现。我知道当然也有一些灰色区域,就像所有事物一样 :)
确实,从设计转向网页开发的人往往比 Javascript 更擅长 CSS,而从计算机科学背景转向网页开发的人往往更专注于适当的编程语言,包括 Javascript。然而,也有一些后端人员非常擅长 CSS(例如 Rachel Andrew)。也有很多优秀的 Javascript 开发人员根本不做任何后端工作(尽管这种情况正在随着 Node 的流行而改变)。我认为将它看成一个频谱并没有帮助。我认为大多数前端工作根本不需要设计。我只是实现设计师给我的东西。
我从 1999 年开始构建网站。在过去的 17 年里,我使用 HTML、CSS 和 JS/jQuery 的各种组合构建了网站。我的职位名称包括“网页构建者”、“网页设计师/开发人员”、“网页开发人员”和“前端开发人员”。
在这项工作中,我不得不花大量时间关注浏览器和设备兼容性、显示一致性和 UI/UX 设计。交付成果通常需要在所有浏览器、所有设备上保持一致的功能和显示(尤其是在为全球和“财富”品牌构建内容时)。
由于我花了太多时间从 .psd 文件构建网站,我可以快速发现设计 .psd 文件中由设计师缺乏经验和缺乏 HTML 和 CSS 建站知识而导致的缺陷。我可以编写 JS 和 jQuery,当然比很多“UI/UX 开发人员”能写得多,但不如后端开发人员能写得多(或复杂)。
在我担任过的所有职位中,对于我所有的雇主来说,每个我合作过的优秀的后端开发人员(或者程序员,如果你更喜欢这个标签)都必须在前端做一些工作,他们都会寻求我的帮助来调试表现层问题。有时我帮助调试的问题是布局,有时是浏览器兼容性,或者元素状态混乱,但最常见的问题是与 CSS 选择器特异性或级联本身有关——继承问题。
在过去两年里,在裁员后,我一直在做自由咨询工作,但也一直在寻找全职职位,这又让我回到了这个话题:2017 年“前端开发人员”是什么?从我在热门求职网站上看到的职位列表来看,前端开发人员是一个专注于应用程序开发的全栈开发人员。
我亲眼目睹了后端开发人员(他们被期望是“全栈”,但主要工作在编程领域(js、php、C#、jsp 等))对浏览器和设备兼容性、布局和 UI 设计的细微差别了解不足。
然而,似乎有无数的招聘广告,这些广告是由技术招聘人员撰写的,他们似乎只关注招聘“独角兽”开发人员来担任与“UI/UX”和“前端”相关的职位。比“所有开发人员都必须是独角兽”问题更糟糕的是,前端开发人员职位列出了所有“典型”的技术要求,还额外要求该前端开发人员必须有印刷设计经验,以进行印刷品制作。
我最近参加了两次面试,这两次面试都非常顺利,直到最后出现了突如其来的问题,面试才结束。在第一次面试中,这个职位被宣传为“前端开发人员”职位,面试我的人显然对我的经验和技能以及我能为前端带来的价值感到满意,然后他们问我是个全栈开发人员吗?他们对我只是一个“前端开发人员”感到失望,而我也对我们的时间完全浪费了感到失望,因为有人发布了一个职位,然后却以完全不同的职位来面试应聘者——他们在发布广告时本可以避免他们的失望(以及我的失望)。第二次面试也类似——在前端能力方面一切都很好,直到最后提到了“顺便说一下,我们需要你拥有各种印刷媒体的印刷设计经验”的要求。
真是有趣。
过去几年,我对“前端软件工程师”这个职位一直感到意外的满意。它涵盖了我最近转向应用程序开发的举动,并且让我可以承认自己拥有一些后端经验,而不会让人觉得我是在试图成为“全栈工程师”。
其实很简单。
前端与用户代理中用于人机交互的内容的任何视觉表现形式有关。
后端与访问、保存和处理数据以向人类或机器提供信息有关。
运维与实施开发、测试和部署的平台有关。
使用的技术是偶然的,它会随着时间而改变。昨天是“c”、cobol 和文本终端或打印机,然后是 Visual Basic 和 Java 以及彩色显示器,今天是 JavaScript 和 HTML/CSS 在桌面和移动设备上的使用。明天是某种 AI API。
最终只有在行的那一头有用户的情况下才有意义。
如果全栈开发人员是能够编写前端代码的后端开发人员,那么当需要时能够使用 SaaS 或 express 为他们的应用程序创建服务器的前端开发人员是什么呢?
你正确地推测到我的描述不是作为职位名称,而是作为职责范围和描述这些职责的角色。我认为,至少承认在组织层面上有专业化的空间应该是一个目标。职位名称本身并不重要。
我认为有人应该把这个做成一个网页应用。
保持简单
从列表中检查你所能做的一切;
应用程序为你推荐一个合适的职位名称。
对于像我这样的人来说,它将非常有用,因为我正在努力寻找一个好——甚至还算不错的——职位名称。
我给自己贴上了“数字设计师”的标签,但我正在考虑去掉“数字”部分,因为如今它几乎失去了所有意义。
我的意思是,今天你不能只设计一张“名片”或“只设计一个徽标”。你必须将品牌视为一个系统,所以“只为印刷设计”已经不是一件事了。因此,“为数字设计”也已经不是一件事了。
另外,我在用 Laravel 和 WordPress 的 PHP 中开发网站。所以,即使是“设计师”这个词也感觉很局限。
也许是“设计师和开发人员”?我不知道。