假设前端开发正在发生分化。我感受到了,但这不仅仅是直觉。基于大量开发者情绪的文字表达,我和 Dave Rupert 在 ShopTalk 上进行的采访,以及面对面的讨论,正如他们所说…这是个问题。
分化发生在那些自认是(或拥有职位头衔为)前端开发人员,但技能集却截然不同的人群之间。
一方面,一大批开发人员的兴趣、责任和技能集高度围绕 JavaScript 展开。
另一方面,一大批开发人员的兴趣、责任和技能集专注于前端的其他领域,例如 HTML、CSS、设计、交互、模式、可访问性等。
让我们听听那些感受到这种分化的人怎么说。

针对我们发表的帖子,“什么是优秀的前端开发人员?”,Steven Davis 写道
我认为我们需要抛弃这个术语本身。我们应该分成 UX 工程师和 JavaScript 工程师。他们的思维模式不同。大多数人不会同时精通 JavaScript 和 CSS。让 UX 工程师与 UX/设计团队紧密合作,创造出色的设计、交互、原型等,而让 JavaScript 工程师处理所有数据部分。
我已经厌倦了精通 CSS,却不得不被迫学习 JavaScript。我不是程序员!
这种分裂并非悄无声息地发生在我们脚下。是我们自己在要求它。
我在 Vernon Joyce 的文章“前端开发正在经历身份危机吗?”中第一次听到“身份危机”这个词。他指出主要的 JavaScript 框架
像 Angular 这样的框架或像 React 这样的库要求开发人员对编程概念有更深入的了解;这些概念在历史上可能只与后端相关。MVC、函数式编程、高阶函数、提升…如果你之前只接触过 HTML、CSS 和基本的交互式 JavaScript,这些概念很难理解。
这对我的感受来说非常真实。我喜欢使用和阅读现代框架、高级构建工具以及有趣的数据层策略。现在,我享受使用 React 作为 UI 库,使用 Apollo GraphQL 处理数据,使用 Cypress 进行集成测试,以及使用 webpack 作为构建工具。我一直在关注 CSS-in-JS 库。然而,虽然我认为这些东西是前端开发的一部分,但它们感觉与关于可访问性、语义标记、CSS 可能性、UX 考虑因素和 UI 抛光等的文章和讨论相隔甚远。感觉像是两个不同的世界。
当公司发布“前端开发人员”职位时,他们究竟在寻找什么?假设他们真的知道(哈哈),仅仅是“前端开发人员”这个头衔并不能说明问题。更重要的是了解他们需要哪方面的人才。

我希望解决方案是撰写更具描述性的职位描述。如果对整个行业来说,明确定义和达成共识的职位头衔要求过高(我担心会这样),我们仍然可以使用语言的力量。Corey Ginnivan 说得很好
我希望更多职位描述能够更坦诚和开放 - 让求职者了解你想要实现的目标,具体说明他们将从事的工作内容,但同时将其作为一个双方共同成长的机会。

“前端开发人员”仍然是一个有用的术语。正如 Mina Markham 最近向我们描述的那样,它是指主要与浏览器以及使用浏览器的用户打交道的人。但 Miriam Suzanne 认为这是一个通用的简写
前端开发人员是当细节不重要时的简写。就像在独立摇滚乐队中一样 - 谁知道那是什么,但我经常说。简写很棒,直到你发布职位描述。当细节重要时,我们已经有了更详细的语言 - 我们只需要使用它。
为了更深入地说明这种分化,请考虑 Trey Huffine 的这篇文章,“2018 年前端开发回顾。” 非常棒!它指出了今年的重大时刻,展示了有趣的数据,并对明年可能出现的情况进行了预测。但它完全基于 JavaScript 生态系统。HTML 只在 JavaScript 驱动的静态网站生成器的上下文中提到,CSS 只在 CSS-in-JS 的上下文中提到。这是前端开发,但可能只是其中的一半:JavaScript 部分。如果你读完这份总结后,没有发现任何共鸣,我的建议是
没关系。你仍然可以成为一名前端开发人员。🙏
你可能正在探索布局可能性,构建 CSS 或设计系统,深入研究 UX,构建有趣的动画,深入挖掘可访问性,或其他任何坚实的前端开发工作。足够的工作机会供大家选择。
还记得去年 Frank Chimero 为自己和客户构建了非常棒的网站,但他却对前端开发的发展方向感到 完全困惑吗?概括起来就是
…其他人的工具链从外部来看完全无法理解。即使是入门也是很棘手的。上个月,我必须安装一个包管理器才能安装另一个包管理器。就是在那时,我合上了笔记本电脑,慢慢地退了回来。我们已经远离了我开始时的 CSS Zen Garden 了。
确实走得很远。我可能会说你不必在意。如果你一直并继续以你所知的方式为自身和客户构建网站,万岁!将所有这些新的工具链内容视为完全可选择的协议,它们解决的问题与你的不同。
然而,这种工具链的模糊性甚至困扰着那些必须嵌入其中的人。Dave Rupert 记录了一个真正的错误,它的解决方案深埋其中,以至于能够找到它简直是个奇迹。然后他 感叹道
随着工具链的增长和变得更加复杂,除非你对其非常熟悉,否则很难清楚地了解我们的代码中发生了哪些转换。跟踪输入和输出之间的差异以及代码所经历的过程会令人难以招架。
谁需要这些大型工具链?通常是大型网站。很难确定大型的具体含义,但我敢肯定你对它有很好的直觉。具有讽刺意味的是,虽然大量的工具增加了复杂性,但使用它们的目的是为了应对复杂性。有时感觉就像为了解决蛇的问题而将美洲狮释放到森林中一样。现在你又有了美洲狮的问题。
围绕所有这些最显眼的讨论是由那些在开发这些大型且复杂网站的公司工作的人主导的。Bastian Allgeier 写道
大型团队需要“x”,这就是“x”对所有人来说都是最佳解决方案的原因。我认为这对具有不同要求和对“可维护性”或“可持续性”定义不同的较小团队来说非常有害。我和来自世界各地的许多小型代理商和自由职业者保持联系,有趣的是,他们的工作通常与网络的 VIP 循环完全脱节。
这里究竟发生了什么?发生了什么事?这种分化从何而来?答案对我来说很清楚

太大了
- 它无处不在,遍布网站的前端。主要的 JavaScript 前端框架正在蓬勃发展,并主导着职位发布。这些框架被大量团队使用,为大量网站提供动力。原生 JavaScript 也在快速发展,让许多人感到兴奋。
- 它也为后端提供动力。你的网站可能是由 Node.js 服务器驱动或涉及 Node.js 服务器。你的构建过程很可能由 JavaScript 驱动。
- 第三方 JavaScript 为许多前端功能提供动力,从网站的广告网络和分析到像评论、评论和相关内容等完整的功能。
- 像 Node 驱动的云函数、存储和身份验证等概念,再加上低成本、低成本的可扩展主机,极大地赋能了以 JavaScript 为中心的**前端开发人员**。他们可以使用自己的技能来独立发布整个功能性产品。
如今,拥有强大 JavaScript 技能的前端开发人员拥有强大的力量。我一直称之为无所不能的前端开发人员,我专门做了一个关于它的演讲
在围绕 无服务器 的概念以及预先打包的 UI 框架的所有可能性中,前端开发人员几乎可以构建任何东西,而无需来自其他学科的太多帮助,如果有的话。我发现这令人兴奋和诱人,但也值得暂停。如果你沿着这条道路走下去,你很可能会变得过分依赖框架,从而导致更广泛的问题解决能力下降。我从 Estelle Weyl 那里听到了这种观点,她甚至认为开发人员更像是“框架实现者”,而将“工程师”这个称号保留给工具无关的问题解决者。
这种前端赋能是真实存在的。尤其是在过去几年里,前端开发人员已经变得特别强大。强大到 Michael Scharnagl 说 他已经看到公司将招聘方向转向这一方向
我看到的是,现在许多开发人员完全专注于 JavaScript,我看到一些公司用 JavaScript 开发人员取代了后端开发人员。
有些人可能不理解的是,JavaScript 开发人员本身并不是前端开发人员。JavaScript 开发人员可能不喜欢编写 CSS 或者不关心语义。就像我更不喜欢直接与数据库打交道或配置服务器一样。这没有问题。有问题的是,如果你不想使用某样东西,同时又告诉别人他们所做的事情很简单或没用。更糟糕的是,如果你试图告诉他们所在领域的专家,他们做错了,应该按照你的方式去做。
而 Jay Freestone 尝试解释其中的原因
在过去几年里,我们开始看到前端开发人员角色的重大转变。随着应用程序变得越来越依赖 JavaScript,前端工程师有必要了解和实践传统上属于后端开发人员领域的架构原则,例如 API 设计和数据建模。
即使在我的小型工作中也发生了这种情况。我们正在寻找一名后端 Go 开发人员来帮助我们改进 CodePen 的 Web 服务。当我们没有找到合适的人选时,我们决定改变方向。我们发现我们的技术栈正在演变为对专注于 JavaScript 的前端开发人员非常友好的东西,以至于我们可以轻松地立即让更多前端开发人员投入工作。所以我们就这么做了。
其中可能也存在循环性。我们看到编码学校正在蓬勃发展,并在不到一年的时间内培养出相当有才华的开发人员。这些编码学校的毕业生正在填补劳动力缺口,但更重要的是,正如布拉德·韦斯特福尔告诉我的那样,他们开始领导行业讨论,而不是被动地追随行业讨论。毫无疑问:这些学校正在培养 JavaScript 领域内的开发人员。我见过的每一门编码学校 Web 开发课程都将 HTML/CSS/UI/UX/A11Y 主题视为学生轻松掌握的早期基础知识,或者将这些主题作为 JavaScript 占据课程后半部分时的旁注。你能来给我们学生讲解所有布局概念,而且只用三个小时吗?
当 JavaScript 主导着有关前端的讨论时,就会导致一些开发人员感到力不从心。在罗宾·伦德尔的评论中,“前端开发不是要解决的问题,” 尼尔斯 写道
也许“前端开发人员”这个词需要重新考虑。当我开始工作的时候,前端主要是 HTML、CSS 和一些 JavaScript。一名优秀的开发者需要能够将 Photoshop 布局转换为像素完美的网站。如今,前端远不止于此。如果你想学习前端开发,人们似乎会开始学习 Git、npm、Angular、React、Vue 等等,而所有这些都被称为前端开发。
我是一名设计师,我认为我对 HTML 和 CSS 很擅长,但现在这已经不足以成为一名前端开发人员了。
罗宾自己给自己起了个职称,一个对可访问性、CSS 和组件设计过于重视的成年男孩,但他一点也不关心 GraphQL、Rails 或 Redux,不过我确实因为没有关心这些其他东西而感到很糟糕。
它也以其他方式让人沮丧。还记得拉拉·申克的 求职面试经历 吗?她符合 90% 的职位要求,但面试却涉及 JavaScript 算法。最终,她没有得到这份工作,因为她没有通过面试。并不是每个人都需要得到他们面试过的每一份工作,但这里的问题是前端开发人员作为一个有效的职位名称并没有传达出它需要传达的信息。
有些日子感觉就像身处另一个世界。

两位“前端 Web 开发人员”可能并肩而立,但他们的技能几乎没有共同点。对我来说,对于一个如此具体且普遍的职位名称来说,这简直是不可思议。我相信“设计师”这个职位名称也已经存在这种情况,但前端 Web 开发人员已经是小众中的小众。
吉娜·安妮 是一位我非常敬佩的前端开发人员和设计师。然而,在她几年前与我一起参加的一个 小组讨论 中,她承认她不把自己归类为前端开发人员。
当我在苹果公司工作时,我刚开始时的职位名称是前端开发人员。我现在会称自己为前端开发人员吗?不会,因为它已经变成了一件截然不同的事情。比如,我学会了 HTML/CSS,但我从未学过 JavaScript,但我懂得如何绕开它。现在——我们正在谈论职位名称——当我听到“前端开发人员”时,我会假设你比我懂得更多。
看起来,当时,缺乏 JavaScript 的经验让吉娜觉得自己没有拥有前端开发人员官方头衔的人技术娴熟。我认为人们拥有吉娜小拇指上的技术都会很幸运,但这只是我个人的想法。最近和吉娜谈话时,她说她仍然刻意回避这个头衔,因为它会导致对她的技能产生错误的假设。
曼迪·迈克尔在她的文章中比任何人都能更好地说明这一点,“不会写 JavaScript 的人有价值吗?”
我不理解的是,为什么如果你能“只写 JS”是可以的,但如果你“只写 HTML 和 CSS”就 somehow 不够好。
当互联网上的每个新网站都拥有完美的、语义化的、可访问的 HTML,以及在所有设备和浏览器上都能正常运行的、执行得极其出色的、可访问的 CSS 时,你就可以告诉我这些语言本身没有价值。在此之前,我们需要停止贬低 CSS 和 HTML 的价值。
曼迪利用她的帖子来促进和平。她告诉我们,是的,确实存在分歧,但,两边都没有比另一边更有价值。
另一个令人沮丧的原因是,这种巨大的分歧会导致工艺水平低下。我认为这是导致大多数跨部门嘲笑和挖苦的原因。布拉德·弗罗斯特 指出“全栈开发人员”这个词 有点误导人。
根据我的经验,“全栈开发人员”总是等同于“能够编写前端代码的程序员,因为他们必须编写前端代码,而且编写前端代码‘容易’”。情况永远不会反过来。“全栈开发人员”这个词暗示一名开发人员在前端代码和后端代码方面都同样熟练,但我在我个人的经验中从未见过真正符合这种描述的人。
海顿·皮克林 也表达了类似的观点。当你以这种神话般的较高水平被雇用时,像 HTML 这样的东西就不太可能成为你的强项。
… 让全栈开发人员成为所有代码的守门人,最突出的问题之一是 HTML 输出的质量低下。大多数人来自计算机科学背景,文档结构并没有与控制结构一起教授。这不是他们的能力问题,但我们仍然把这项工作交给了他们。
就像配置我们的部署管道和处理我们的数据库扩展可能不是我的工作(如果这项任务落在我身上,我会做得一塌糊涂)一样,也许将 HTML 和 CSS 的工作留给擅长做这件事的人是最合适的。也许更容易说:即使存在分歧,也不能免除我们每个人做好工作。
就像架构和开发人员人体工程学都是我们的工作一样,我们应该将性能、可访问性和用户体验视为我们工作的一部分。如果我们无法很好地完成其中的任何一部分,那就确保有其他人能够完成那部分。没有人被允许做坏事。
值得一提的是,有很多开发人员拥有跨越分歧的技能,并且优雅地做到了。我想到我们自己的莎拉·德拉森,她以出色的动画师、SVG 专家和 Vue 核心团队成员而闻名,她还在微软的 Azure 上工作。名副其实的全栈。
我在最近在 WordCamp US 上发表的另一个演讲中对其中很多主题进行了扩展。
对于工艺水平低下和技能贬值的这些问题,有什么解决办法吗?这些问题是系统性的,根深蒂固,还是表面上的,没有严重的后果?分歧是真实存在的,还是暂时的裂痕?摩擦正在减轻还是加剧?随着时间的推移,前端开发人员的技能范围会扩大还是缩小?让我们继续讨论这个问题!
即使 JavaScript 持续升温,瑞秋·安德鲁告诉我,过去很难填补 CSS 工作坊,但如今大会组织者都在要求举办 CSS 工作坊,因为它们的需求量很大。有一件事是确定的,就像赫拉克利特喜欢说的那样,唯一不变的是变化。
✌️
我对这个主题有很多感受,但最直接的感受是艺术导向的博客文章
强烈的艺术导向博客感觉越来越强烈
100% 同意
我的感受也是如此。
非常有趣的文章。作为一个这个行业的新手,这篇文章实际上让我对还不知道所有事情感到好一些。在过去的六个月里,我一直在研究各种各样的东西,试图弄清楚我的前进方向,以及真正长期深入研究什么,而一切都似乎像一罐罐的蠕虫。而且每一罐蠕虫里都装满了罐装蠕虫 :)
几个月前,试图成为一名“全栈”开发人员似乎是一个明智的目标,但现在我明白这不是一件容易的事,至少对我来说不是,至少在接下来的几年里不是。我将努力成为一个以 JavaScript 为导向的前端开发人员,同时也会尽力做好设计和 CSS,但会向那些知道自己正在做什么的人求助。
顺便说一句,这个网站看起来很棒。这篇文章无论如何都是一篇不错的读物,但加上引号和分段等等,看起来非常漂亮,让它变得更令人愉快的阅读。
全栈开发人员确实存在。只是行业发展得太快了,这些职位的定义跟不上。你可以以你理解整个应用程序堆栈的编程逻辑的方式成为全栈开发人员。你并不一定需要在堆栈的任何特定领域拥有专业知识,但你懂得如何将它们连接起来并使其正常运作。你通常也会有一个倾向,你可能更倾向于后端或编程,或者你更擅长传统的 HTML 和 CSS 等前端技能。但是你通常都会对整个堆栈及其含义有相当的了解,并且能够连接并创建一个完整的应用程序,但你所缺乏的是在堆栈的任何一个领域中单一的专业化和精炼。随着所有新库和框架的出现,全栈开发并非不合理。像 Vue 和 React 这样的东西让你基本上是在后端进行编码。
我的天啊,我需要这个。请将它转发给所有技术/数字招聘人员。
这是一篇很棒的文章。
我知道“高级”JS、Node、React 等等,但我总是把自己归类为另一方“军队”。
也许这与我的职业发展有关,我已经工作了十多年,当时一切都是关于良好的语义和出色的 CSS 技能。在很早以前,Javascript 不过是一种用来用弹出窗口和花哨的小玩意儿惹恼用户的工具。
我估计我花了很长时间才登上 JS 的列车,一开始我真的很讨厌这门语言。然后 ajax 技术让我们爱上了它,接着 jQuery(和 mootools!)让 JS 更易于使用,并用它构建了优秀的东西。最终,模块化的 SPA 框架/库出现了,JS 的方面在受欢迎程度方面爆炸式增长。
与此同时,**许多来自后端语言的开发人员开始转向前端**,职责也随之转移。许多开发人员并非从“网络开发人员”的背景而来,而是从主要“桌面”语言转向前端。而**这就是无障碍性走向崩溃的地方**,我们开始看到到处都是“CSS 糟透了”的抱怨。我想知道 TypeScript 的流行趋势有多少与将 JS 变成更像 Java 的东西有关……)
无论如何,我很幸运地了解了争论的双方,但我**确实相信这个行业错过了一方面**。主要基于 JS 的开发人员的职位提供(和薪资)已飙升,**这对标记质量产生了负面影响**,而说“我主要是一名 CSS 专家”可能根本得不到工作(而且还会受到一些欺凌)。
这导致新人们强烈关注 JS 方面,课程和训练营也这样做。FreeCodeCamp 提供了关于 JS 的极好的课程,而只在单一章节中略微涉及 CSS,从“应用视觉设计角度”来看(这甚至在大多数课程中混淆了语义和视觉效果)。
**这让人感觉像是一场“老派”与“新派”的讨论,而实际上应该被认为是两种截然不同的、非常重要的专业领域。**我喜欢将 JS 专家称为“JS 工程师”,而将标记/a11y/CSS 专家称为“UI 工程师”……但我已经看到一些职位招聘标题为“UI 工程师”,但实际上是 100% 的 JS 重型职位。我们**需要**在标题上达成一致。
可悲的是,趋势相当明显:**JS 将不可避免地接管前端的所有内容**。实际上,**我对这个行业认识到另一角色重要性的唯一希望在于无障碍性问题**。也许 2019 年将是 a11y 年,由上周贝嫂事件引发的罚款和需求推动,这将导致该行业迫切地寻找人来修复他们的烂摊子。这与我想要看到的无障碍性的原因恰恰相反,但无论如何……
.
顺便说一下,我越来越喜欢新的设计。
不,那永远不会发生。
因为 1KB JS > 1KB 图片 > 1KB CSS > 1KB HTML
因此,高度优化的仅 HTML/CSS 网站始终比基于 JS 的网站更快。
我同意 Markus 的观点。我希望这个行业能够意识到,一个网页使用 JavaScript 渲染内容就像一个 Word 宏生成一个 Word 文档一样荒谬。对 Word 的例子做出“Ugh,为什么有人会这样做?”的反应有点虚伪,而对 Web 的例子却说是“Meh,现在是 2019 年,跟上时代”。
我喜欢编写 JavaScript,它对于诸如表单字段验证之类的任务至关重要,例如减少服务器负载,但我已经看到许多客户端平台兴衰,例如 Flash、jQuery、Bootstrap、Angular……我不相信 React 或 Vue 会有什么不同。如果某件事没有未来,那么它就不值得拥有任何存在。我知道这听起来很苛刻,但这就是 Web。我的意思是,我不会将我创建的任何东西与没有未来的产品合作,那不是一个好的投资。
一个依赖 JavaScript 的解决方案适合编写游戏或类似桌面的应用程序,但这意味着你拥有的是在网络上的东西,但实际上不是网络的一部分。用户不需要伪网络渲染引擎来享受内容。有太多关于这些新框架的销售炒作和营销胡说八道,这让我想起皇帝的新衣,太像了。
奇怪的是,这似乎是前端开发的一个大问题,但我没有在其他学科中看到太多这种情况。你不会因为房地产纠纷而打电话给个人伤害律师。即使在工程领域,你也不会聘请结构工程师设计卫星。是因为“前端”这个词缺乏特指吗?仅仅是因为这个行业太新了,或者是因为行业以外的人缺乏了解吗?
谢谢,Chris。“如果我能记住这些粒子的名字,我可能就成为了一名植物学家了”——恩里科·费米在给莱德曼的信中。
简单。只要把“网页设计师”带回来。然后我们可以把这种二分法描述为“网页设计师”和“网页开发者”。也许不行。
我建议,前端设计师,以区别于平面设计师的角色。
“但如果你只是写 HTML 和 CSS,你就还不够好。”
我认为 Bootstrap 是罪魁祸首。Bootstrap 对那些不需要或不想写 HTML 和 CSS 的人来说已经“足够好”了。(根据帕累托定律,大约 80% 的人都是这样。)
喜欢这篇文章!完全同意文章中关于 css/html/UX 的观点。我唯一想改变的是,不要称某人为 JavaScript 开发人员。
让我解释一下我的想法……当然,区分 UX 开发人员和 JS 工程师非常重要。但是,我建议不要将那些对代码/框架/等等充满热情的人归类为 JavaScript 工程师。是的,我们需要精通 JavaScript,但 FE 不仅仅是 JS。它是关于了解模式、OO、函数式编程、架构、模块打包器等等。例如,TypeScript 正在颠覆市场(无论你对它有什么样的感受)。最重要的是,Wasm (https://www.youtube.com/watch?v=DKHuEkmsx3M) 正在取得巨大的进步,以至于我们不再需要严格地了解 JavaScript,而浏览器将能够读取字节码。
我想说的是,工程师不仅仅是精通某种特定的语言。就像你不会把后端工程师称为 Java/c#/c++/等等工程师一样,应该有一个更好的术语来称呼那些喜欢前端“后端”的工程师。我个人喜欢:前端工程师、UX 工程师和 BE 工程师。
谢谢!好文章!
我就是招聘广告右边的那个人。戴着圆框眼镜,但头发少一些。
大型项目的劳动分工创造了对不同角色的需求。但分界线在错误的位置。
在营销领域,我们都在做开发、发布和管理内容的工作——不仅是网站,还有所有目标。
更清晰、更易于管理的分工是结构(html)、样式(css)和逻辑(js)之间的传统分离。你使用的工具链可能让它变得更容易,也可能让它变得更难。
慢拍,谢谢!
值得注意的推特对话
https://twitter.com/cssgrogneugneu/status/1087442576842678273
https://twitter.com/ryanflorence/status/1087473420412112902
文章说得没错。现在要把自己称为前端开发人员,需要学习的东西太多了。我更像是一名 UI/UX 工程师。
这篇文章很棒,对于那些学习和专注于 HTML/CSS/JS 和 PhotoShop(如文章中所述)并拥有“前端开发人员”头衔的人来说——当我开始寻找其他开发工作时,我发现自己身处一个全新的世界。我更经常看到的一个术语与 a11y、HTML 语义和整体良好的 UX 相吻合,那就是“UI 开发人员”这个头衔。它更符合“前端开发人员”这个术语以前的意思。
我对那些暗示全栈开发人员无法同时处理良好的前端和后端代码以及设计的引用有点生气。这是一种非常精英主义的思维方式,具有讽刺意味的是……
通常,情况要么是不关心设计,要么(在我的情况下)没有足够的时间来完善它。设计需要时间、测试和来自生态系统不同部分的多人的输入。API 也是如此。
在我工作的公司里,我们有两种类型的人。我是一名“网页设计师”,我…等等…为网页设计东西。我使用html/css/一些js来设计东西。我们还有一个前端开发人员负责前端的“开发”方面。我们都在工程团队工作。效果很好,已经运行了两年了。
TL;DR我们需要把“网页设计师”找回来。
我个人很高兴看到这种情况出现。我最初是一名“后端”开发人员,被扔到了前端,因为那里的设计师无法处理现代应用程序所需的更复杂的逻辑。这种分工让我成为了我自己:一名工程师。我没有上过艺术学校,我只知道色彩理论的数学原理,我不关心美学,更喜欢使用终端。而前端设计师需要我,这很明显,因为我似乎无法摆脱前端开发。这种需求表明,我们确实需要在前端定义两种不同的学科。
工程师和设计师。就像我们以前称呼他们那样。
不过我认为这并不完全正确。我会说我在HTML/CSS方面更熟练/更热衷,但这并不意味着我是一名设计师。我没有真正的设计背景或培训。我和一个完全不会编码的设计师一起工作。
我的职位是前端工程师,但我总是把自己介绍为前端开发人员,因为即使我对React很熟悉,并且花了很多时间在JS上工作,但我认为我并不是一名工程师,从更广泛的架构理解方面来说。
我认为这只是一个频谱,在一定程度上,我们大多数人都会生活在中间某个地方。
我对这种不对称性的最佳猜测是,一方更能满足要点。JavaScript开发人员可以“让它做事情”,HTML/CSS专家可以“做好事情”。但当业务人员提出项目需求时,该列表中的项目更直接地转化为JavaScript开发人员所做的事情。细节,所有修饰和使它更容易获得和更连贯的东西都是“软”功能,难以量化,因此往往被视为辅助功能。一些非技术管理人员甚至可能没有意识到这些需要做。
需要明确的是,这并不是要贬低UX方面。我个人非常注重细节,而CSS是我最喜欢的语言之一。我只是在谈论外行人(通常是那些拍板做决定的人)可能存在的看法。
是的。说中了。这就是我所说的“后端已经转移到了前端”。
目前的职位名称和招聘人员对谁做什么的了解也越来越糟糕。外面就像是一片丛林。
说到前端,为什么你的评论电子邮件文本字段没有type=email?就是这样。
这种分化也是金钱上的——想找到一份以HTML和CSS专家身份获得10万美元的职位,祝你好运。
这些基础语言被视为入门级知识,但正如其他人所说,代码质量已经下降。我意识到CSS正在成为一种“达到目的的手段”,当时我得知直接在React组件中编写样式是一件很平常的事。
现在我必须学习React,这样我的整个职业生涯才不会受到限制,哈哈。我有十年的经验可以提供,但这一切都不重要,因为我不是这些库的专家,而这些库在五年前还没有人需要。我并不反对这些库本身——它们在某些时候非常有用——但我不喜欢它们让人们有效地忽略了构成网络的66%。
我完全同意CSS和HTML被低估了,因此代码质量正在下降。作为一名从设计职位开始学习网页开发,并通过HTML和CSS学习的人,我能够立即识别出后端开发人员或JavaScript开发人员编写的样式表。太糟糕了,人们似乎并不关心。人们认为CSS和HTML并不重要,它们不需要优化或可维护性。
我在Stack Overflow上也看到了这一点;针对问题的简单CSS解决方案往往被忽略,而人们会毫不犹豫地推荐使用jQuery来解决布局问题。使用JavaScript来解决布局问题应该作为绝对的最后手段,而引入整个库来解决可以用CSS或更好的HTML结构解决的问题是完全荒谬的!
更糟糕的是,理解编程的开发人员会因为它,因为JavaScript更“有利可图”,而将CSS和HTML完全留给非程序员编写,最终导致代码可维护性降低,并且对代码原则、可重用性、优化和其他重要编程原则的关注减少。
很容易将CSS和HTML视为“非真正的语言”,而且似乎有太多人这样看待它们。这意味着很少有人关注正确地布局文档,因此标记受到影响。网站变得笨拙,过度依赖JavaScript——甚至依赖它——而一些网站的响应性方面简直就是一场噩梦。可维护性有时完全不存在,在布局中添加额外的内容可能会完全破坏它们,因为布局没有被正确地构建以能够适应和响应其上下文。
当然,将开发区分开很重要,这样人们的才能就不会在语法上截然不同的编码规范之间过度扩展。但我们也需要对HTML和CSS给予更多的尊重,并开始将它们视为重要的语言。我们需要将编写它们的人视为开发人员,并在我们的项目中灌输(已经存在并易于获得的)原则。简而言之,我们需要不再那么痴迷于JS,并只专注于JS。
当然,JS可以解决很多问题。但这并不意味着它是解决所有问题的最佳或唯一解决方案。有时JS是必要的,但有时——如果文档可以在一开始就被更有意义地构建——通过使用JS,我们只是在伤口上贴创可贴。
在这种情况下,我们应该考虑,也许一开始在HTML/CSS方面投资更多是个好主意。但到那时,几乎为时已晚。
我自己更倾向于HTML和CSS方面,我经常感受到这种巨大的分化。我认为这两方面同等重要,从我的角度来看,在两方面都涉猎过,精通HTML和CSS比精通JS框架的开发人员更有价值,但不要止步于此。
如果你要偏向于HTML和CSS方面的前端开发,确保你是该领域的专家;扩大你的视野。如果你喜欢CSS,学习SCSS。它不是必需的,但有了它,你可以做更多事情,并且更容易,最终你会更有价值,更不用说它会让你在前端“语义”开发领域和社区中更具相关性。
此外,回应Keith的观点,在前端开发人员类型之间确实存在巨大的金钱差距,这主要是因为供求关系,而且这是合理的。HTML和CSS可能足以胜任一些职位,但如果你希望与那些以JS为主的同行获得同等的价值,那么这些技能是不够的。交叉培训自己。成为Photoshop和Illustrator的优秀设计师,或者使用Sketch/Adobe XD/InVision Studio/等工具精通UI/UX设计。或者更实际地,至少在PHP和基本jQuery方面变得熟练。这些技能都很容易掌握。在传统的前端职位中,通常需要对jQuery的基本理解,而且PHP开发人员比非PHP开发人员赚得多,尽管PHP会以多种方式让你受益,不仅仅是收入,它甚至可能激励你继续学习其他语言。
据我所知,HTML/CSS和JavaScript之间的区别在于HTML更容易学习。这意味着HTML/CSS开发人员比JavaScript开发人员多得多。这使得价格极低。你最终会得到https://www.psd2html.com/。我已经被一个前端/UX职位拒绝了,因为我在精心制作的HTML/CSS基础上制作了一些东西,而他们只关心JavaScript。我永远不会再把自己当作HTML/CSS开发人员来推销自己,无论我多么关心它们。
这几乎是我过去3年的生活。我不得不放弃大多数我真正喜欢做的事情,才能保住我得到的工作,这份工作与我认为我申请的工作完全不同。考虑到我为此搬到了全国各地,我不想放弃亚马逊的稳定职位,去追求更有乐趣的事情,尤其是考虑到我在寻找非JavaScript框架工作时得到的反馈……
背景中的The Division Bell。
你好。我是一名设计师兼数学家。在一天的课程中,我可能会从视觉原型设计切换到编码,反之亦然。Javascript 允许我通过函数和空间的连续性构建非常定制的体验。我发现 CSS 是一个很好的补充,也是一个用来管理页面上离散存在和关系的尺子。我认为这种划分不是关于工具,而是关于两种类型的人:不知道代码/上下文的数字设计师和不知道设计语言的工程师。第一组人经常因为害怕复杂的编码而寻求庇护,并在基本工具中寻求安全感,并以保持事物简单为借口。简单很棒,但通过能够创造复杂美的工具或流程来实现简单才是真正的艺术。第二组人只是不明白。他们通常是工程师类型,在设计思维方面接触和练习较少。我个人放弃了与 alpha-coder 合作进行 UX 或视觉美学或执行风格。顺便说一句,同样的沮丧感也存在于其他领域,例如建筑师与结构工程师。许多工程师只是因为他们有执行事物的能力,就在交付我们都在现实生活中看到的那堆垃圾。自由市场和当前经济生态系统的本质使得真正的思想家和行动者很难扭转权力动态。当生产和生产更多东西的需求存在时,在快速和可扩展的产品执行方面拥有突出技能的人员就会成为领先者。这个系统不太关心最佳方式,也不关心谁做对了,因为实践这些价值观没有奖励。最后,我想象在不久的将来,随着经典教育的许多颠覆,我们将拥有一代人才,他们对自己的学位或头衔没有偏见,并且拥有构建重要事物的各种技能和兴趣。我从未真正理解为什么设计师通常讨厌编码和数学,或者为什么工程师如此自豪地单色。他们都是操场上的同龄人。恐惧和分歧的钟声是在教育、工作场所、职位名称、职位发布等方面形成的。
很棒的文章。作为一个新手,我被这一切深深地激励着。有这么多不同的途径,有时保持努力前进会令人畏惧。
我最近在寻找开发者身份的过程中发现了这个网站,很喜欢这里的内容!
克里斯,感谢你写这篇文章,它读起来很发泄。我很幸运,我所在的团队重视我的贡献,我们都发挥各自的优势,并且一起创造了一些很棒的东西,但这并没有阻止我在内心与自己的相关性和技能集作斗争。虽然这并没有真正让我更接近克服自己的偏见和心理障碍,但知道我不是一个人,这多少让人感到安慰。
除了偶尔的推文之外,我没有看到任何问题或任何实际的划分。在我看来,这几乎不是什么问题。对我来说,前端开发人员一直都是编写 HTML、CSS 和 JavaScript 的人。
JavaScript 开发人员是指专门关注 JavaScript 方面的人。你不可能有 CSS 开发人员,因为你需要 HTML 才能配合你的 CSS,否则它什么也做不了。如今,JavaScript 本身已经成为一种完全独立的语言。
就像后端开发人员编写 PHP 或 Ruby 代码,然后还处理数据库和服务器方面。如果有人只专注于 PHP,我会把他们归类为 PHP 开发人员。我不明白这种所谓“身份危机”从何而来。
就好像人们有一天决定不喜欢自己的工作头衔,需要想出一些新颖独特的东西来让他们听起来与众不同、有趣。工程师、开发人员、程序员……仍然只是编写代码。我们可以统一称为开发者吗?
很棒的文章。读完这篇文章后,最让我惊讶的是,很多人感受到了“我们和他们”之间的划分。
今年我开始了我的第一个全栈职位;在此之前,我在各种前端职位上工作了大约 7 年。我想我已经“获得了荣誉”,精通前端的基础方面。我知道这不是本意,但文章中的一句话让我感觉自己被孤立了,作为一个全栈开发者,我可能不应该碰 CSS 或类似的东西,因为我的产出可能与专门使用这些语言的人相比“很可怜”。
更重要的是,我认为“全栈开发人员”不应 necessarily 意味着开发人员在前端代码和后端代码方面都同样擅长。谁说不能有志于学习两方面但目前只达到熟练水平的初级全栈开发者呢?从这篇文章中可以明显看出,一些全栈开发者确实存在一些“上帝情结”,而这正是全栈与“样样精通”联系在一起的原因。
承认自己的局限性和知识差距并不可耻。如果你渴望成为全栈开发者,或者目前正在学习两方面,但可能几年没有复习 CSS 了,可以向那些有经验的人寻求建议。不要对这种情况装作无知,也不要认为自己能生产的东西“足够好”——你在给其他所有人抹黑。
我们把一个非常复杂媒介的太多方面硬塞进一个工作头衔,难怪人们会感到压力;被迫适应,接受失败,或者不幸的是,在某些情况下对他们不完全理解的东西装作无知,并“继续前进”,生产出糟糕的代码。
我认为我们需要更多工作头衔,但也要有一套在整个行业中普遍可识别的头衔。否则,我们可能会给人们冠上“半栈 UX 交互设计师”的头衔……谁也不想那样。
说得好!
我认为前端开发中存在的一个大问题是,大多数人认为发生在浏览器中的所有事情都是“前端”,但事实并非如此。
前端和后端与客户端和服务器端并不相同。仅仅因为你的代码在浏览器(客户端)中运行,并不意味着它是前端代码。
简单地说:前端处理它的外观和感觉以及你可以如何与它交互,后端处理应用程序的业务逻辑。这两者是完全不同的东西,需要非常不同的技能集。仅仅因为我们拥有一种可以处理后端和前端任务的语言(javascript),并不意味着你用它制作的所有东西都自动成为前端。
如果你在浏览器中运行的 javascript 中编写了应用程序的所有业务逻辑,你不需要前端开发人员,你需要后端开发人员。
你的代码在哪里运行并不决定它是否是前端还是后端,而是它做什么决定它是否是前端还是后端!
在这场“巨大分歧”中,其兴趣和技能集主要围绕 javascript 的一方,并不是前端开发人员。他们是选择 javascript 作为主要语言的后端开发人员。就像一些后端开发人员使用 PHP 或 Go 一样。
天哪!JavaScript 和我从来没有成为朋友。当然,我可以看看它,弄清楚它在做什么,并使用一些 jQuery 来让浏览器做一些炫酷的事情,但我绝不是程序员。从来没有过。我尝试过、尝试过、再尝试过学习编程和 JavaScript,成为一名“合格”的前端开发人员,但你刚刚指明了我的方向!我是一名前端开发人员,只是擅长 HTML 和 CSS 的那种,喜欢设计和 UX,喜欢制作动画和数字内容!只是不喜欢编程!接下来,我只需要有信心承认这一点!感谢你!
作为一个做所有事情(从设计到 JavaScript)的人,让我告诉你:
我喜欢 UX/前端开发人员给我一个可以立即使用的布局,带有图片、间距和十六进制/rgba 颜色值。
我知道布局不是我的强项(它们最终会变成“还不错”),我非常感谢有人帮我处理它,因为我知道它会好很多。
你甚至不必编写 HTML 和 CSS。
仅仅是布局就已经让我把你视为英雄/女英雄,所以不要把你的工作当作理所当然。
我爱你。
感谢克里斯发表这篇很棒的文章和视频。(而且我喜欢你 CSS-Tricks 网站的新外观)
网络始于静态网页。当时,UI/UX 设计远没有那么动态(即纯粹的 vanilla CSS1/2)……单个页面/屏幕上的动画和交互性更少。
但现在我们看到这里出现了融合,比如 CSS 变量和关键帧动画(某种程度上是对动态 CSS 的声明式语言),页面上每个元素都有交互性……
还有动态布局/移动优先——以新的 CSS 网格和 Flex 盒为例……不仅仅是布局……它也是以网络和页面渲染高效的方式动态填充网格的。在这里,你需要同时了解 JavaScript 和 HTML/CSS,并且可能需要对服务器端技术有一定的了解(例如,在用户向下滚动时,在单独的请求中提取大型数据的部分)。
所以我的观点是,如果有人雇佣你创建一个现代(网络)应用程序/页面,他们希望你能够精通比早期网络开发人员需要的更多技能。就像如果你把你的新车送到汽车修理厂去修理,如果你他们告诉你他们只知道如何修理 1970 年及之前的汽车,你会非常担心……你希望他们知道如何修理你现代汽车的所有方面(电子/发动机/电脑芯片),或者如果需要,找一个专家来修理。
我认为雇主/招聘人员最需要了解这个问题……雇主需要给他们的员工时间/任务,将他们培养成全面发展的“开发者”……如果你自己创业(或者你的雇主不关心),你必须努力提升自己。
我最近对前端开发的划分感到非常不知所措。这一切都始于几年前,我应聘了一个 UI 开发人员职位,该职位将 HTML/CSS/JS 和 TDD 列为核心技能。他们一将 TDD 写入工作说明,我就发现它被传递到了该市其他大型组织。接下来是工作说明中的 Angular 2+,然后是 React……我开始认为开发人员只是喜鹊,盯上了最新的闪亮的东西。
为了反驳我自己的论点,我上周做了一个小型的宣传网站,使用了 Gatsby 和 WordPress。它开发起来花了更长时间,但在 lighthouse 报告中,它在所有方面都获得了 95+ 的分数,并且使用起来非常快。
这是一篇很棒的文章,它很好地概述了 25 年来的网页开发,以及为什么事情在不断发展 - https://hackernoon.com/modern-web-development-bf0b2ef0e22e
我真的认为这个角色将开始细分到专业领域,但使用 HTML/CSS/JS 布局和构建页面的核心技能仍然是所有工作的核心。
这是一篇非常棒的文章,它与产品团队中的大多数其他角色(头衔?)产生了共鸣。
例如,Ann Rockley 在 https://contentmarketinginstitute.com/2016/02/types-content-strategist/ 为内容策略师这样说了。UX 设计师也是如此。我会把这篇文章作为我团队的参考!
这篇文章体现了我职业生涯中的挣扎。我始终难以掌握深厚的 JS 知识。我在向语义化网络转变的过程中获得了我的技能和知识,并一直在磨练这些技能。但是,我一直都是一名“混合型”设计师。一些以设计为主导的公司经常把我归类为开发人员,而一些开发团队又觉得我没有“技术性”或者不够“开发者”,尽管开发人员表示他们需要我在前端方面的帮助。有些日子真的很难熬。
非常感谢你谈论这个问题 <3
为了提供背景信息,我是一个目前正在学习 JavaScript 开发的初学者,并且尽力学习适当的标记和设计。从这篇文章中,我的意思是,我专注于 SPA 库和通过其他库(例如 Material-UI)预设 UI 设计,但也专注于编写语义化标记、SEO 和 CSS(我真诚地享受所有这些!)。
我真心感到难过,因为标记和设计方面的开发人员因为他们“不以 JavaScript 为导向”而受到歧视。从我所写的内容和我在网上读到的内容来看,JavaScript 已经是一种非常晦涩的语言,许多开发人员出于这个原因甚至都不碰它。看到前端被分割成这样,我感到非常难过,尤其是在 JavaScript 已经取得进步的情况下。相反,我认为应该将前端分成许多不同的角色,我将在下面描述。
现在看来,将头衔拆分得更细更有意义。与其让“前端开发人员”只代表 JavaScript(主要是),我更倾向于这样:
前端标记开发人员
负责 HTML、标记和语义
前端 UI 设计师
精通 CSS,拥有良好的设计技能
前端 UX 设计师
与 #2 相同,但拥有 UX 技能
前端**React**开发人员
精通 React 及其姊妹库(例如 react-router)
前端**Vue**开发人员
精通使用 Vue 创建 UI
前端**Angular**开发人员
精通使用 Angular 创建 UI
前端 JavaScript 开发人员
精通现代 JavaScript、React、Vue 和 Angular 的开发人员
前端设计专家
精通 CSS,拥有 UI 和 UX 技能
全栈前端开发人员
精通 HTML、CSS、JavaScript。能够编写语义化标记,熟练高效地使用 CSS Grid 和 Flexbox,能够使用 React、Vue 和 Angular 编写 SPA。对 GraphQL 和编写 API 有一定的了解。熟悉 NodeJS。
正如你所见,“前端开发人员”这个术语有很多细分领域,这造成了很多偏见和混淆。我认为,将这些细分领域拆分成更易于管理的、**与前端相关的**角色,就可以澄清问题。“前端”开发人员这个术语应该保留给那些能够在一个角色中胜任所有这些细分领域的人。
Chris,你对 2019 年前端网页开发现状的概括非常棒。我一直在努力学习和精通这两个领域(因为我同样喜欢它们),但我觉得中心不会维持太久了,我很好奇几年后这个领域会变成什么样子。有一点是肯定的,它不会枯燥乏味。继续你文章和播客中的优秀工作,我们需要明智的声音帮助我们以同情和智慧应对这场巨大的变革。前进。
我认为这说明了商业和这些融合学科之间的一个更大的问题。它不仅仅是“前端”,还包括“全栈”,甚至包括像“性能”这样的术语。
我见过“全栈”这个术语用来描述也进行测试的开发人员。我还见过只专注于后端(URL 或应用程序压力测试)的性能测试,完全不考虑客户端。
这里可能存在很多问题,但这确实令人担忧。它只是强调了在组织以艰难的方式吸取教训之前,为被忽视(但必要的)元素发声的重要性。
中间件,你还记得这个词吗?当你提到服务器端 JavaScript(rofl)的时候,你就已经远离了显示层/GUI/UI,你不再是“前端”了。前端是橡胶与道路相遇的地方。
在我从事这项工作的 25 年中,我们首先有了网页设计师、网页开发人员、网页管理员。然后我们开始将后台与设计师区分开来。有一段时间,我们有了 DBA、中间件和设计师。面向客户(前端)的东西长期以来一直被主要视为设计师。
跳过一些步骤,来到目前的状态,UX/UI 和前端设计师甚至变成了不同的角色。前端设计师和前端工程师现在将我们区分开来。
廉价的客户试图让我们在“全栈”的幌子下过度工作,这完全没有帮助。太酷了,所以你知道 AAA 级别的 ADA 合规性、数据库、当代设计、CORS、测试、D3、3D、Jenkins 和盒子模型黑客吗?预计会有一项耗时的代码挑战,而获得的报酬仅仅足以让上述各个学科的专家赚到。
“前端”人员没有为整个社区做出贡献。
这在我们工作场所一直是一个常见的讨论话题。我们建议,那些拥有“传统”HTML 和 CSS 技能的人被授予“UI/UX 开发人员”的称号,而让“前端开发人员”这个称号用于 JavaScript 密集型职位,这符合新兴的行业趋势。
这真的很有共鸣。
我很幸运,能够将我在 1996 年开始的有趣爱好发展成一份工作。甚至是一份职业。但我确实注意到这种分歧正在形成。最初使这项工作变得有趣和值得追求的东西,现在却被贬值了,转而完全强调曾经只是其中一小部分的技能。
继续从事这项工作的唯一方法是从中汲取尽可能多的乐趣,直到它基本上变成其他东西。这其中未说出口的部分是,当你需要不断添加新的领域知识、技能和责任,仅仅是为了保住你已经拥有的工作时,实际上没有职业发展路径。
我一直陷在管理不善、以 IT 为中心的组织中,这些组织永远无法看到 UX、CSS、可访问性、交互等方面的价值。它们变成了“真正的开发人员”在完成编程后可以处理的复选框项目。对他们来说,CSS 作为一项技能,始于并止于对语法的理解。对于像这样的组织来说,你的网站是否是你与用户和客户的唯一联系点并不重要——如果它涉及代码,它就是 IT 部门可以处理的事情。
我厌倦了这种将代码置于用户同理心之上的心态,但我适应了。我学习了新的技能,坦白地说,我并不想学习这些技能,只是为了保持就业,但主要是因为我知道我必须离开。多年来,这些迹象一直在显现。我知道,离开的唯一途径是转向管理层,但这在一个小型的、没有多少发展空间的组织中并不容易。我每周工作 60 个小时,在会议上发表意见,并在可能的情况下主动采取行动,试图改变现状。但主要的是,我很幸运。
有一段时间,我有一个确实理解用户同理心,并看到这些方面价值的老板。当那个难得的机会出现时,我抓住了它。一段时间里,一切都很好。我拥有任何人都梦寐以求的最佳团队。但最终,那个老板退休了,事情发生了转变。他们让一个 IT 人员接手——那种认为没有 JavaScript 和 Python 无法解决的问题的人。
尽管我运营着一个高效的小型团队,已经完成了许多成功的项目,并取得了重要的成果,但我还是知道事情即将变得有毒,我该走了。现在,不到一年时间,我的整个团队已经离开了那个组织,或者被裁掉了——他们都是将编写代码置于用户同理心之上的心态的受害者。
我不愿悲观,但一个没有强大的 JS(或编码)技能(数据结构、算法、可扩展架构等)的 FE 开发人员,在未来几年可能会变得稀缺。
诸如 Webflow 等工具以及来自浏览器的更好合规性,使得专注于 HTML/CSS 的 FE 开发人员不再那么不可或缺。当然,Webflow 并不完美,但在许多情况下,它足够好了,而且还会变得更好。
绝对精彩的文章。喜欢定制的艺术导向风格。
我是一所专注于前端的短期网页开发项目的讲师。我不会称我们为训练营学校,因为该项目是在一家公立资助的专科院校进行的,但我们确实面临着附近各种训练营学校的竞争。我们试图构建我们的项目,以便将 HTML/CSS 和设计与 JavaScript 视为同等重要。
你说许多训练营学校几乎完全专注于 JavaScript,而只花一两天时间学习 HTML 和 CSS,你说得没错,非常令人难过。
作为课程设计师,我们不断感受到来自潜在学生、毕业生雇主、毕业生甚至我们自己的压力,要求我们添加越来越多的 JavaScript。
学生总是问,“我们会学习这个框架还是那个框架”,他们从不问“我们会学习语义化 HTML 吗”。我以前感觉我们应该屈服于压力,添加越来越多的 JavaScript,也许缩减我们项目中 HTML 和 CSS 的部分,但这感觉永远不对。
在过去几年里,我一直担心,互联网已经变成了一个 JavaScript 框架的世界,JavaScript 被视为解决所有网络问题的方案。人们用 JavaScript 写 HTML,现在他们用 JavaScript 写 CSS。为什么要费心写 CSS……CSS 太蠢了……整天用 JS,一直用 JS……这不是我的话,但过去几年里我的感觉就是这样。
我们需要 HTML,我们需要 CSS,当然,我们也需要 JavaScript。作为教育工作者,我们有责任培养出理解良好编写的语义化和可访问性 HTML 重要性,以及理解 CSS 的全部力量和美感的毕业生。JavaScript 有其作用,但并非网络上的每份文档都需要用 JavaScript 生成。纯 HTML 和 CSS 编写的文档有一种简洁的美感。
感谢 Chris 撰写这篇文章。CSS-Tricks 是我们领域内一个有影响力的网站,我相信这篇文章会被我们领域内的许多人分享和阅读。这让我感到欣慰,因为我希望我们或许已经转过弯了,希望我们能够回到网络开发的平衡状态,JavaScript 占据自己的位置,但 HTML、CSS、可访问性、用户体验、设计和信息架构方面的技能被认为同样重要,可以创建一个可用、可访问和视觉上吸引人的网络应用程序或网站。
我站在 HTML/CSS 一边。然而,我想挑战我 fellow HTML/CSS 一边的开发者,投入时间学习像 React 这样的东西。React w/ JSX 真的感觉是我最接近 SCSS 的东西,用于我的标记,并包含一些简单的逻辑,真的可以加速我的工作流程。
例如,一个
Button
组件,如果传递了href
,它将渲染一个a
标签,否则将渲染一个button
标签。这个Button
本质上就是一个标记混合。非常赞同。过去 5 到 10 年左右,我每天都越来越强烈地感受到这一点。
好文章,它验证了我已知的事实……任何现在还在工作,并且不断学习本领域新技术的的前端开发者,都已经了解这些,或者至少了解大部分……JavaScript 不仅在网络开发中占据主导地位,而且在网络中也占据主导地位,我们已经看到了基于 JavaScript 的框架,用于创建桌面和移动应用程序。
作为一名前端 Web 开发人员,你必须熟悉 HTML、CSS、JavaScript 这三者的核心,但你真的需要了解 PHP、SQL、Node.js、MongoDB 和 GraphQL,当然,前端开发者只是连接用户和服务器的链条中的一环,他决定了用户可以执行的所有可能的交互场景,以及最终的视觉结果(不是决定接收哪些数据,而是决定数据的视觉效果,以及如何显示给用户),而不涉及任何数据“获取”或“发送”到服务器,也不涉及任何必要的验证。
好文章,但只是留个评论,感谢这篇文章的设计和分段。
我极其讨厌那些对别人,甚至对我自己也这么做的人。
感谢您在这篇文章上投入的时间和精力。我想重点强调一下经济角度。我认为很多公司都希望雇用全栈开发人员会更便宜,而不是雇用几个人来担任多个角色。这让我想起公司曾经寻找“独角兽”的时候,基于同样的想法——通过雇用更少的人,让他们拥有更广泛的技能来节省成本。
忍不住要开个玩笑,下一个流行的职位头衔将是独角兽全栈开发人员……
嗨 Frida,
的确,大多数公司都在寻找全栈开发人员,但在他们的职位描述中写着“前端开发人员”。过去几个月我在找工作的时候,很多次当我被问到“你也能用 [用任何后端/js 框架替换] 吗?”的时候,我都翻白眼——当然我可以使用这些框架,但我当时不想!职位描述清楚地写着“前端开发人员”,而且都是关于 CMS 或电子商务系统的模板,那他们为什么要问我这些?就像你说的:仅仅为了省钱,找到一个无所不能的人。
不幸的是,我担心这种讨论不会结束这种做法。公司想省钱是可以理解的,但为什么他们要用欺骗性的职位描述来欺骗别人,而这个人正在寻找一份新工作?:)
感谢 Chris!
这些评论中的很多都引起了强烈共鸣。
5 到 10 年前,我是一个“独角兽”,可以做研究、设计、编写 HTML/CSS,编写足够的 JS 来胜任,并将所有内容封装到当下的 CMS 模板语言中。如今,我的团队只有我和一个 CMS/系统管理员,我感觉自己一直在被动应战。我花了很多时间只是试图弄清楚什么需要担心,什么可以放弃。我的电子邮件显示的是“前端开发人员”,但实际上我只是一个前端技术协调员,试图让一个大型网站保持最新,并保持在我们资源的最佳范围之内。很多规划和路线图占据了我很多时间。
我最近经历了“安装节点管理器的节点管理器”式的体验,于是决定报名参加一个自行车车架制作课程。我已经老了,不想再一直追着尾巴跑了。不断涌现的新工具实在是太复杂了,已经没什么乐趣了。行业发展速度快于其标签。或许是时候抛弃这些标签了?让我们改用“我是一名 JS 工程师”,“我是一名 HTML/SCSS 开发人员”。
读起来真不可思议。我认为自己是一名设计师,精通 HTML/CSS,还能勉强应付一些 JavaScript。我能阅读/修改它,但不能从头开始编写。
也有一些使用 PHP/WordPress 开发的经验,但我对 JS 框架并不感兴趣。我试过,但就是没有感觉。
我非常认同“另一方面,一大批开发人员,他们的兴趣、职责和技能集中在前端的其他领域,如 HTML、CSS、设计、交互、模式、可访问性等”。
所以当我看到前端开发人员的职位时,通常职位描述中会有很多 JavaScript,我对此很不舒服。我在质疑自己到底是谁,而且还有冒名顶替综合症,因为我觉得自己应该了解更多。
读到这样的内容真的很棒,让我知道我不是一个人!
Chris 的文章很棒,确实是你的佳作之一。因为它描述了一种越来越多的“老”前端开发人员都体会到的感觉:确实存在某种分化。JavaScript 似乎是当下的主流,但我认识很多 JS 开发人员,实际上他们并不能写出好的 CSS 代码。他们被框架束缚,写出的代码没有语义化,无法在应用程序中保持图形的一致性。大多数雇主没有意识到这一点,因为他们缺乏对前端领域的了解。他们因为 JavaScript 开发人员能提供带来收益的功能解决方案而重视他们,而“老”前端开发人员或 Web 设计师往往感觉自己只是二等角色。
我现在对 JavaScript 了解很多,因为我正在参与一个涉及大量数据和 Angular 的大型项目。但我仍然更喜欢设计。我希望我能在前端这方面做得更好:更深入地理解和掌握 CSS、SVG、动画……但大多数雇主并不十分重视这些方面。
作为一名从印刷版面设计师转型为“网页设计师”(后来我才知道这个术语已经过时了)的人,我对这篇文章感觉很好。现在,我在拉丁美洲最大的报纸之一担任前端开发人员(哈哈!),这让我不禁思考行业是如何看待我的。我毕业于新闻专业*,而不是计算机科学(或类似专业)。
但对于市场来说
我不是记者(尽管我的学位是新闻专业)。我不是设计师(尽管我多年来一直从事报纸和杂志设计)。我不是“html 和 css”专家(尽管我做了很多没有使用过一丝 JavaScript 的东西)。我不是程序员(尽管我现在的主要工作是编写 JavaScript)。
我必须为我接触到的每一个产品进行版面设计、设计、结构和编程,现在我正在学习后端开发(与你所说全栈开发人员是从编程到设计的趋势相反,我走的是反方向)。
真的很难知道在我的简历中写些什么。
(听起来很奇怪,英语不是我的母语)
其中一个评论提到了,“这些技能的薪资等级是否相同?”文章的其他部分完全没有提到这一点。我非常好奇你想更详细地了解这个问题。
对于我个人和我的职业发展方向来说,2017 年初我从一个职位上被辞退的时候,正好卡在了这个裂缝的中间。我当时正在申请 FED 职位,职位描述是我认为我想要的。当我参加面试或测试的时候,全是关于 JS 框架、Node 和其他我真的一点都不想深入研究的东西。
随着我在网上看到了这种“分化”越来越严重,并在播客中听到这种现象,我开始思考自己作为一名开发人员的身份,这样我才能真正地向人们讲述我所做的事情,以及我为什么喜欢它。
我小时候,也包括现在,都很喜欢搭乐高,但我喜欢乐高的一点是按照说明书搭。我是在创造东西,但我不需要设计它。这告诉我我知道我喜欢创造,但并不总是喜欢设计。我很少会拿一堆乐高随意地搭一些东西。我并没有这种天性。
不过,我所热爱的创作过程中,最让我着迷的是协作和解决问题。我喜欢与一群志同道合的人一起工作,共同创造出针对当前问题的最佳解决方案。我们每个人都有自己的技能,但我们也明白,协作可以创造出比仅仅将设计师关在房间里更好的产品。
在 JS 方面,我感到很挣扎。我坦诚地说,我付出了很多努力才达到现在的水平。我知道我还有很多地方需要进步,我必须主动地推动自己前进,因为这并不足以激发我的兴趣。尽管如此,JS 的重要性正在与日俱增,其地位已经超过了 15 年前我使用表格布局时的情况。因此,我知道我需要深入研究,克服困难,找到一种方法来学习、理解和成长。
我来自巴西,曾在一些小型公司工作过(开发部门约 10 人),以下是我的经验。
在我的工作中,我什么都做。从线框图到布局,再到一些 UX 设计,以及最终的 HTML、CSS、JavaScript 和 Vue 实现(目前正在学习 React、Redux 和 React Native)。
然而,当我发现有 UX 设计师负责布局部分时,我感到如释重负。因为我知道自己不擅长布局,我所做的布局只能说是“还算不错”。而那个 UX 设计师不需要编写 HTML 和 CSS,因为我对此非常擅长,而且做得相当不错。
你知道那个 UX 设计师吗?他还负责社交媒体的内容创作,有时甚至负责社交媒体的广告!
至少在巴西的小型公司里,这些职能往往被融合到一个职位名称中,因为人们确实什么都做。当然,他们在各个方面都不完美,但通常他们在某一方面很擅长,而在其他方面则表现尚可。
虽然我同意这篇文章的观点,但我们最终使用的术语是“前端设计师”和“JavaScript 工程师”。
问题在于大量涌入的 JavaScript 开发人员都被冠以“前端”的称号。我们需要一个新的称号。也许 JS 开发人员应该被称为 JavaScript 开发人员?或者 HTML/CSS 开发人员应该被称为 UI 开发人员?
克里斯,这篇文章写得很好,你真的涵盖了过去几年中的重点。我还想提一下瑞秋·曼宁最近对这个主题的看法(以及出色的图形):https://blog.prototypr.io/dissecting-front-end-job-titles-7f72a0ef0bc5
我提供了一种解决职位名称/职位发布问题的潜在方案:https://twitter.com/withinsight/status/1086271812835729408
我们可以简单地将那些选择专门主修 React、Vue、GraphQL、styled-components、nodejs 等,并辅修 CSS/SCSS、HTML、交互设计、SVG、WP 主题等的人称为前端开发人员?然后将那些主修 CSS/SCSS、HTML、交互设计、SVG、WP 主题等,并辅修 JS 库、nodejs 等的人称为前端设计师?这样似乎可以解决问题,我们可以就此作罢。
哇,我认为这是关于这个主题的最佳阅读材料之一。作为一名从网页设计师到网页开发人员,再到 UX 工程师、UI 开发人员,最后到高级前端开发人员,现在还在学习交互设计的人,这篇文章让我感触良多。我遇到过一些才华横溢的前端开发人员,他们并不了解 CSS 基础知识,例如特异性。现在,我认为这完全没问题。但真正不可取的是,那些理解 CSS 特异性,能够构建一个维护良好的 UI 架构的人却被认为是初级前端开发人员。我想,我们必须接受“前端”正在变得越来越复杂,这并不一定是坏事,但这意味着我们无法很好地跟踪所有主题,这导致了更多专门的角色。我认为问题在于,公司或 CTO 通常对实际工作的详细要求缺乏了解,所以他们只是在寻找能胜任所有工作的前端开发人员,但要便宜。
关于这件事有很多话要说!
文章写得很好,但我认为你在绕着答案转圈,并没有深入探讨。
首先,将“前端开发人员”这样的职位名称与“JavaScript 开发人员”进行比较,本身就是一种误解。你是在比较目标/领域和语言。JavaScript 只是一个实现动态网站的工具,例如。
但它可以实现更多功能。
如果要我选一个词,虽然我不希望它有负面含义,但有些人可能觉得它有负面含义,我会用“Web 集成器”来对比“前端开发人员”。
对我来说,前端开发人员就是 CodePen 职位发布中描述的那样。
“你曾参与过使用 JavaScript 编写的中型或大型 Web 应用程序的开发。你拥抱单元测试。你精通 HTML、CSS 和设计。”
而 Web 集成器更像是
“将 Photoshop 布局转换为像素完美的网站。”
这在一定程度上是因为现在的网站大多是 Web 应用程序,所以需要编程语言,而不仅仅是“HTML/CSS”(再次强调,这不是负面的)。我认为大多数 JavaScript 开发人员可以通过精通 HTML/CSS 而获益匪浅,Web 集成器也是如此。
至于全栈开发人员,他们根本不存在。
听起来问题源于将设计师称为开发人员。
观点很精辟……我开始称自己为前端设计师。我认为这更符合我的专业领域。
克里斯,文章写得很好!你用语言总结了我自 2011 年开始从事用纯 HTML 和 CSS 编写非响应式网站的编码工作以来所观察到的现象。
最近,我不得不时隔 8 年再次开始求职。我认为自己是一个 CSS 和 HTML 专家,但我在找工作时却遇到过很多“前端开发人员”的职位,甚至都没有提及 HTML 或 CSS!他们都要求你了解 React、Angular 或 Vue,但却没有提及 CSS 格式化技术、可访问性、语义 HTML、UX……这真的很让人沮丧。
作为一个主要为非营利组织和小企业开发网站的人,我从未有必要学习任何这些 JavaScript 框架,因为它们侧重于 Web 应用程序。一般的网站不需要成为 Web 应用程序。
我发现即使是“Web 应用程序”这个词也有些奇怪和混乱,这与这篇文章的内容相符。
JavaScript 开发人员总是吹嘘他们能够快速高效地创建“单页 Web 应用程序”,在很多情况下这是真的。但简而言之,“Web 应用程序”可能只是一个网站,添加了一些收藏夹图标,并设置了 manifest.json 文件(它本身只是一些十来行代码,可以轻松地生成一次,然后通过手动更新一些变量,在多个网站上重复使用)。这个应用程序(实际上只是一个网站)会保存在用户的智能手机或平板电脑上,并在他们连接到互联网时可以使用。
“Web 应用程序”与“单页应用程序”(同样只是一个单页网站)并没有真正的关系——它们是截然不同的东西。
JavaScript 的一个好处是可以创建一种名为“服务工作者”的东西,它允许你将文件保存在本地,这样用户即使没有连接到互联网也能使用网站。此外,一个单页网站意味着不同的“状态”(可以看作是不同的页面,或者显示不同内容的页面)不是通过点击链接(例如)跳转到新页面生成的,而是通过 JavaScript 将新内容加载到现有页面中,并将该内容存储为“状态”,以便用户可以在内容之间来回切换,并始终知道自己的位置。由于服务工作者要求你明确指定要保存哪些文件,而且没有很多不同的页面,而只有一个页面会根据用户的操作交换内容,因此这可以更容易地决定甚至自动保存文件到本地。因此,许多框架会自动处理整个过程。也就是说,这并不是创建 Web 应用程序的必要条件——你仍然可以手动进行。
简而言之,一个 Web 应用程序可以在没有 JavaScript 的情况下,非常简单地创建,甚至可以事后添加。一个能够离线运行的 Web 应用程序可以使用非常简单的插件制作,只需很少的基础知识即可实现。
使用框架创建 Web 应用程序可以简化配置过程,因为它可以自动化许多操作,并处理许多“状态管理”方面的问题(对于具有非常复杂代码库和数十人同时工作的庞大项目,使用一个固定的系统来强制每个人都使用相同的风格编写代码非常有用,并且管理项目状态——可能规模太大,以至于没有人能够独立完成整个项目——可以再次提高网站的可管理性),但最终,如果设置这样一个系统的复杂性大于在没有 JavaScript 的情况下管理这样一个系统的复杂性(在很多情况下都是如此),那么人们使用框架就并不明智,也不高效,而只是在追赶“酷炫的趋势”。
框架有其用武之地。但正如这篇文章所暗示的那样,它们并非万能解决方案。有时,它们会增加复杂性,而不是减少复杂性。一个优秀的程序员——即使是专门从事 JavaScript 的程序员——也不一定知道如何使用所有 JavaScript 框架……他们还知道何时不使用框架,而是使用原始 HTML 和 CSS。
我同意——仅仅从职位发布来看,你会认为所有网站都是由 API 和响应式 JavaScript 驱动的单页 Web 应用程序。但大多数企业、个人和组织只需要一个普通的网站。这些网站应该加载速度快、可访问、响应式、美观、有效——而这正是前端开发人员的工作。
我深切地感受到了作为“前端开发人员”的身份危机。
最近在创建Angel List个人资料时,从规定的技能列表中选择技能时,我忍不住苦笑了一下。你能想到的所有语言,包括3个JS框架,但没有CSS或HTML。感觉像是无意的门槛。
我怀疑,如果HTML和CSS可以被选择,绝对每个人都会选择它们,这将使它们 (!)变得毫无意义。
这并不是说它们毫无意义。相反,它表明人们对“了解”它们意味着什么的理解存在着巨大差距。
CSS,就是当你使用style属性而不是标签来进行格式化的时候,对吧?酷,我知道CSS。除了我不知道。
所有真正优秀的CSS开发人员都了解SASS吗?也许这就是答案。将SASS列为一项要求将区分“真正的”CSS开发人员和那些只知道它是什么的人。(除了我不知道前提是否正确。)
根据我的经验(超过20年),如果你不擅长JavaScript,你将很难找到工作。事实上,我和另一个所谓的“CSS专家”被贬低,最终被 [西雅图的一家大型软件公司] 赶走了。
随着JavaScript框架的兴起,我们看到了后端业务逻辑向前端迁移,这需要在过去主要用于用户界面布局和交互的空间中拥有更复杂/更正式的编码技能。
读完这些,我觉得自己老了。我不知道为什么,但我有一种感觉,HTML/CSS方面主要来自老一辈的前端开发人员。那些像我一样从Zen Garden时代开始的人。而另一边则主要是年轻的开发者。
我感觉自己老了,因为我还记得Flash也有同样的分化。一边是动画师,另一边是ActionScript开发者。
我开始写HTML,然后是CSS,最终学习了jQuery。我记得这些技术中的每一种都给我带来了挑战,以便我能够在任何一种技术中都感到游刃有余。HTML是一个头疼的问题,表格、嵌套,还要记住所有这些标签,我的天!然后是CSS,盒子模型,浮动,以及清除布局的浮动,我的天!从jQuery开始学习JavaScript,不明白你如何将一个值作为函数传递,或者实际上任何东西,它太难了!
这已经过去几年了,坦白地说,我认为需要几年时间才能做到。这个行业并不容易掌控,目标一直在变化。现在我可以编写服务器,配置Docker构建流程,并真正构建全栈应用程序。我不知道我是否走了一条通往这个目的地的最糟糕的路线。我知道人们似乎真的很喜欢和我一起工作,我也知道我喜欢UI/UX开发,与设计师合作仍然是我最喜欢做的事情之一。
我甚至在我的现任雇主那里推动了头衔的移除,我们所有的开发者,无论是后端还是前端,都是工程师。我一直以来,驱动我前进的动力就是尽我所能做好工作。但即使拥有超过十年的经验,我仍然觉得还有很多东西要学。这仍然令人兴奋,我仍然想要创造我心中渴望的,最具视觉流畅性和可访问性的杰作。也许有一天我会做到。
我是在CSS 3登场表演的时候发现了前端开发(至少当时是这么称呼的)。那是一个好时代,像圆角边框、渐变和动画这样的东西出现在了规范中。
与此同时,iPhone正处于第二代或第三代。人们已经沉迷于这个小屏幕设备。因此,浏览器或网站制造商希望在人们的屏幕时间中占有一席之地。因此,浏览器变得功能强大。有了强大的功能,它们现在有了更多空间来弥补JavaScript。这篇文章中Chris很好地描述了更复杂的JavaScript和其余部分。
虽然这篇文章是关于前端开发人员的,但这是否也影响了后端开发人员呢?
哈利路亚!
将前端拆分为三个重叠领域的需求,多年来一直是一个事实。
前端工程师、开发人员和设计师分别专注于js、标记/css、设计/ux,其中技能集中在其中一个领域,并在其他领域有所涉及。
完整的集合是一种罕见的生物,被称为全栈前端开发人员。别提神话中的全栈开发人员了,虽然他们确实存在,但他们倾向于想独处,一次专注于一个领域。
职位描述中包含“全栈开发人员”通常意味着该公司要么正在寻找一个工资过低的奇迹,要么不知道自己的需求,这可能是一个机会……或者是一场噩梦。
我们编织着多么奇妙的世界
作为一个前 (!)全栈开发人员(就像十年前一样,当时只有网页开发者,没有后端、前端等角色),我转行成为主要的前端开发人员,现在努力跟上几乎每年都会出现的新的JS库和框架,并且再次面临着一个职业分叉路径的决定(成为JS开发者还是作为UI/UX开发者定居),因为“巨大分化”变得越来越明显,这篇文章与我一直以来的感受产生了强烈共鸣。我很高兴我并不孤单,在这个困境中。
我一直在试图找到这种分化的原因,这篇文章很好地总结了它。
实际上,不久前我看到一个前端角色的职位描述,它要求一个“HTML & CSS专家”,它继续描述了这个角色在他们公司中的重要性,与维护文档结构、命名约定、BEM、代码优化/调试、UX等有关。我心想“多么理想的工作!”。
不幸的是,大多数公司似乎更喜欢有Angular、React或Vue经验的前端开发人员,因此,他们会为这些候选人提供更高的薪酬等级。
哇哇哇!非常感谢Chris引发了这个讨论。我真的很高兴找到了它并阅读了它。读完这篇文章后,我感到一种巨大的挫败感和焦虑感释放了出来。我一直很喜欢前端开发,但现在我很难找到另一份工作,仅仅基于“前端开发人员”的职位名称。我已经做了十多年的这项工作,我真的认为自己是一名“专业人士”。当你参加“前端开发人员”的第二次工作面试时,你会感到贬低,他们会给你一个包含“WebSockets”之类内容的任务,让你连接到一个“回声服务器”,获取所有这些数据,并在构建整个布局的同时渲染动态内容,时间范围只有几个小时。不是我做不到,但我个人认为这更像“后端”相关的工作。我很沮丧,直接合上了笔记本电脑,离开了大楼。我认为这篇文章应该传播出去,下周我发布文章的时候会这样做。谢谢!
我同意,我们需要能够在所有领域都胜任的人员共同努力,才能打造出优秀的网站——我们不应该打造糟糕的网站……但是怎样才能做到呢?
总的来说,当一个糟糕的网站也能满足需求时,企业没有动力去创建优秀的网站——我说糟糕并不是指设计和执行不佳,而是指缺乏可访问性,使用劣质HTML,重复使用和误用CSS,也许还存在着巨大的安全漏洞。
我听过相当多的DotNetRocks播客,他们定期提到他们认为软件开发行业需要一个类似于其他职业中的专业认证机构。有一期播客邀请了Uncle Bob,他们在几年前谈到了这个问题,并强调了奥巴马医改的healthcare.gov网站的灾难,作为一个为什么需要软件质量标准的极佳例子。
我不确定这种认证是否是答案……而且我是完全自学成才的,所以我对这个想法有点抵触,因为我担心这会对业余爱好者和从事副业的人产生什么影响……但我的意思是,企业(如果没有超出网络行业之外的文化转变)通常不会(一般来说)花钱去创建一个好的/伟大的产品,当一个差的/还可以的产品能带来可接受的利润率时。
(恕我直言,在很多情况下,投资于更好的产品可以获得巨大的投资回报——但很大一部分公司似乎没有意识到这种潜力……经常很难说服一个组织,做出x改变会带来回报。)
我扯远了……
非常棒的文章!我记得当我还是一个前端开发新手的时候,为一家初创公司做HTML和CSS工作,一个资深人士问我:“你什么时候开始学习JavaScript?你难道不想进入更好的IT公司吗?”。我对他的说法感到困惑,甚至开始因为不了解JavaScript而感到难堪。今天,我已经学习了足够的JavaScript来进行DOM操作和遍历。顺便说一句,还挺有趣的!:)
我在这方面是个新手,自学成才,我的热情是 HTML 和 CSS。现在我在这方面已经努力了大约 5 年,大约在第 3 年的时候,我意识到我必须学习比 JavaScript 基础知识更多的东西……我说的是纯 JavaScript,没有 React 或其他类似的东西……当我决定我想构建网站时,我的目标是成为一名前端开发人员——据我所知,前端开发包括 HTML、CSS 和基本的 JavaScript。当然,我越深入这个领域(而且我爱上了这个领域,宝贝),我就越困惑。现在我称自己为前端设计师。仍然不确定如何推销自己,也完全没有信心申请前端开发人员的工作。除了框架之外,我真的不想成为一名全栈开发人员。这对我的小脑袋来说太难了。我之所以说这一切,是因为看到这些问题被提出来很好。这意味着它们正在得到处理,并且应该拥抱变化。我相信我们所有人都有空间,我们所有人都有自己的作用。这个行业一直在变化,而且变化很快,现在是重新评估角色以及我们如何使用正在开发的强大新工具的时候了。这篇文章给了我希望。我认为我终于找到了正确的职业。我看到了我的位置……这是件好事!
我认为这将变得更加简单,而且我希望如此。不久的将来,前端将变得很“笨”,但这是好的一面。前端的 Javascript 将仅仅是微服务后端(由中间层编排)控制的数据的反映。我认为那些只懂 HTML 和 CSS 的前端人员将没有用武之地,你需要贡献更多。
我从 2001 年就开始做这个,那时我们还没有 CSS,JS 只是用来验证表单。我不是为了虚张声势,只是想说:我经历过多次工作头衔和期望的改变。
2001-2005 年:网络开发人员。我做了经典的 ASP(Visual Basic 6.0)、XML、XSLT、javascript、MsSQL、服务器维护、DNS、CI/CD、备份、电子邮件。基本上什么都做。现在你可能会称之为“全栈工程师”。
2005-2011 年:前端开发人员。我专注于前端,因为有了 CSS,而且我真的很喜欢不同浏览器之间巨大的差异。我在这方面很出色。Javascript 基本上只是 jQuery,用来显示模态窗口。我在服务器端代码(Java、.Net、Ruby)发送过来的模板中编写 HTML。
2011-2015 年:前端工程师。第一个大型前端框架出现了。我忘了如何保持代码编写方面的最新状态,因此我不得不重新学习。我使用了 Backbone JS、Ember JS 和其他一些框架。基本上,我在 HTML、CSS 和(随着时间的推移)Javascript 方面都很出色。
2015 年至今:仍然是前端工程师,只是有了新玩具。但说实话,我看到 TypeScript 正在兴起,它的投资回报率非常糟糕,除了所有从后端世界涌入前端世界(感谢 Angular)的开发人员,他们非常不喜欢不使用强类型来编写代码。所以 TypeScript 正在掀起波澜,而我讨厌它。
未来:我希望通过使用 React 或 Vue.js,我可以在相对“笨”的前端专注于强大的用户体验。让我来编写用户界面、组件,将其连接到浏览器,使其具有响应能力,将其国际化,在其上添加 a11y,添加语义值,进行 SEO 操作。
是的,这意味着我知道如何编写 FizzBuzz。JS 数组函数和 ES6 的新增功能,以及所有这些爵士乐:我认为在这个领域,没有人能再不知道这些东西了。保持最新状态不是选择,而是必须做的事情,而且这个工作领域变化很快。
如果你喜欢 HTML 和 CSS,但不想学习 javascript:为了世界上所有美好事物的缘故,请磨练你的 UX 或 UI 设计师才能(如果你有的话),然后去做。世界上需要更多像你这样的人,他们知道自己不知道什么。
也许巨大的分化只是高质量技能需要时间和精力才能获得这一事实的自然结果,而且不可能在所有方面都做到最好。我们要记住,出色的 UI 技能如果没有实现出色的解决方案,就毫无用处。当未来出现新的 UI 技术来解决更复杂现实生活问题时,这种二元分类肯定会变得更加碎片化。目前,公司需要这两种类型的 UI 开发人员,并且必须迫使他们互相沟通,否则就有可能创造出次优的解决方案。
非常棒的文章!
我认为导致这种情况出现的一个问题是,有些人开始认为 CSS 和 HTML 是编程,而严格来说它不是。
因此,主要做 CSS 和 HTML 的人被称为“前端开发人员”,这实际上是一个误称。
现在,我不是想贬低他们的工作,但我认为如果你主要从事 CSS 和 HTML 工作,那么这个头衔就有点混乱。
我认为也许应该有一种“前端设计/UX”角色,负责标记、css、a11y、ux 等。
所以,基本上我认为“前端开发人员”需要更多地向后端发展,而“前端 css/html”人员应该更多地向设计师/广告/UX 角色发展。
所有三个角色(后端、前端、设计/UX)都需要拓宽其职责/技能范围,以便更有效地互相合作。
我相信很多人会不同意,但这只是我的想法。我并不是说这是唯一的真理。
我们一起努力制作产品,所有这些角色都是必不可少的。
我看到了不同的分化
第一方:在(网络)开发的某个方面表现出色/专门化,并且始终在团队中工作:css/html/ux 设计/前端编码/后端编码/数据库设计/DBA/api 编程/项目管理/定义需求/系统工程/测试/培训/支持台/devops。
第二方:自己做(几乎)所有事情,并且不依赖团队成员
公司结构和一个人的经验决定了你是属于第一方还是第二方。
很棒的长文章。忘记说 React/Angular/ect 被美国政府机构和一些外国国家用来进行流量分析。这些技术的营销将带来软件持续改进的假象,这种假象将在新一代技术人员到来后消失。由于开发人员准备不足,计算机的运行速度与 10 年前几乎相同。想想吧!不要让媒体炒作和旧的叙事蒙蔽你的未来!
哇。那是一篇很棒的文章。
我发现自己处于“全栈设计师”的利基市场。我是在被“制作那个 .gif 横幅”、“我们需要传单”、“设计这个登录页面”、“编写那个内容”、“我们需要在那个画廊中添加一个灯箱”、“我们需要一个定制的 wordpress 模板”、“你能搭建一个 joomla 网站吗?”等要求折磨了 8 年之后,才不得不选择的。
因此,我发现自己精通“图形工具”和编码(甚至是像 twig 这样的高级混合语言)。
我真正热爱并且一直热爱的事情是编码 HTML 和 CSS(加上一点 jQuery),我谦虚地认为我写出了干净、精简、漂亮、连贯且注释良好的代码。当我看到周围的代码非常糟糕时,尤其是一些试图消除对前端开发人员需求的人/应用程序(Adobe Muse、Squarespace、Wix 的代码让我痛苦地毛骨悚然)。
显然,我不得不围绕这些语言进行拓展,我学习了 LESS 和 SASS,我懂一些原生 javascript,我不得不学习一些 PHP 基础知识,并且知道如何在数据库中移动。天啊,我甚至不得不学习 webpack 和 gulp 来使用一些新的开放 CMS 主题套件。
但我一直将“前端”一词与项目的“面孔”联系在一起,因此,当我看到“前端开发人员”的职位描述要求了解 react、angular 或 vue 时,我感到非常困惑。为什么我要知道这些?这些与前端有什么关系……
我曾在阿姆斯特丹的一家大公司面试过几次,他们正在寻找前端开发人员,一切都很顺利,但我被拒绝了,因为我不精通“大数据分析”。这与前端有什么关系……
我认为分化已经变得非常可怕,迫切需要一个新的、特定的角色来将这些 javascript 重量级选手归类在一起。我不知道,也许是“逻辑开发人员”,我开始担心,随着我们“资历”的提升,我们作为前端开发人员的价值可能会大幅下降。
询问某人是否了解 JS、HTML 或 CSS,就像询问厨师是否会使用刀、烤箱或铲子一样。只要招聘人员想要“仅仅是一个网页”,他们就可以雇用任何他们想要的“前端开发人员”,他们就能找到一个。如果他们想要超出“仅仅是一个网站”的东西,那么他们最好更具体地说明他们想要什么。
您好,我认真地阅读了这篇文章。
在多次面试中,我发现每家公司对前端部分的解释都不一样。所以我一直在思考这个问题。
我可以在我的博客上将这篇文章翻译成韩语吗?这将对包括我在内的许多韩国前端引擎有所帮助。我一定会添加参考。
我在去年年底写了一篇类似的(但短得多,研究也少得多)博客文章。
https://opc.com.au/blog/no-longer-just-developer
我目前正在做一个小型政府网站,大约有 30 个页面和 20 个文档。
所有这些都通过 Docker、容器、Lagoon、定制的管理界面、定制分发进行运行……
说实话,这个东西可以是静态 HTML,托管在智能冰箱上,但不是……我们需要增加复杂性来减少复杂性。
Chris,你在这篇文章中大获成功。很棒、精彩的文章。观点有效,表达得很好,而且讲述得很优雅。文章中“JavaScript 变大了”部分变成红色是一种很棒的讲故事方式。引语使故事更加动人。Chris,你的个性和真心在这里闪耀。继续努力!
谢谢!
我在一个拥有超过 150,000 个页面的网站上工作。我们有超过 100 万用户,每月有 350 万次页面浏览量。我们有一个 9 人团队,包括主管和专门的设计师。我们的网站必须既有响应性又可以访问。
我们没有使用 CMS,实际上我们也不需要。我们的页面是 HTML/CSS,其中添加了一些 PHP。在大多数情况下,它们加载速度很快。
我们使用 Foundation 框架和 SASS。
我必须告诉你,开发这个网站最痛苦的部分是为框架搭建开发堆栈。最初是 SASS/HTML/Jquery。然后下一个主要版本是 Node、Bower、Mustache、Grunt。现在,在同一个版本中,不再有 Bower,也没有 Mustache 的迹象(那到底有什么意义),而是用 Gulp 代替了 Grunt。
只有我们四个人使用它,而且实际上我们只需要编译 SASS 并压缩 CSS 和 Javascript。然而,每次我们想要升级框架时,我们都不得不进入一个全新的开发堆栈的兔子洞。这太荒谬了。
我并不是说没有需要使用所有这些东西的情况,但我猜想有很多网站正在使用复杂的开发堆栈,而实际上并不需要。
作为一个拥有 JavaScript 技能的后端开发者,我发现如今前端的开发方式令人震惊。许多工作可以用 HTML/CSS 和少量的 JS 完成。一切都过于复杂,没有任何实际理由。我一直非常欣赏 Basecamp 的 Web 应用模型的优雅,他们使用 HTML 代码段/页面来完成工作。超级简单,而且能够以很少的工作量获得 JS 前端的许多好处。他们甚至可以为移动应用做这件事,这真的让我很惊讶。
我一直在用 Intercooler.js 来开发一个项目,我对它的易用性非常满意。它确实让你以不同的方式思考如何编写 Web 应用,但是一旦你掌握了它,就会变得非常直观。
我注意到我们在工作中创建的业务应用是多么复杂,而实际上它只是一个包含一堆表单的页面,然而很多时候我们甚至都没有使用表单!
这里有很多值得说和谈论的地方。很高兴像 Chris 这样的优秀人士能够站在能够富有同情心地分享这些话题的多个方面的立场。
我认为“前端”就像“运动员”。就是这样。好吧,也许更像是“足球运动员”(足球或美式足球,你选择)。我们都能想象到,足球四分卫的技能与踢球手完全不同。
如果一个运动队说“我们需要另一个足球运动员”,很明显这还不够具体。如果他们说,“你必须投出达阵,踢出射门,而且你的手必须像魔术贴一样接住球,并且还要坐在轮椅上做到这一切”,那么他们的招募人员或招聘经理一定是遭受了太多脑震荡。(因为如果你坐在轮椅上,你已经比我认识的大多数人拥有更多的技能!)
我希望 A 球员不会不尊重 B 球员,因为他们在球队中担任不同的位置。否则,我们就谈论的是尊重和/或成熟度的问题,而不是技术或类别问题。在我看来,对于那些轻视专注于 HTML & CSS 的人来说也是如此。尊重和成熟。
对于工作来说,他们只需要具体和诚实。对于求职者来说,如果职位描述不清楚,并在面试过程中出现了那种令人不快的情况,这对你是个学习经验(你可以责怪公司没有说清楚,或者太过分要求),尽管很尴尬。这是不可避免的残酷部分。
我相信如果我们开始使用“前端设计师”和“前端工程师”这样的术语,一切都会变得顺利。我个人将自己定义为前者,但遗憾的是,通常找不到符合要求的工作。
这种分歧是一种神话。有效的前端开发需要识别你的目标,并根据具体情况确定你的优先事项。如果有与之匹配的设计,那就是你的目标。如果没有(例如,你可能正在编写一个 JS 工具),那么 JavaScript 的质量就成为优先事项。
身份危机源于你可能需要加强 JS 或观察技能的认识。你不会有任何损失,相反,你现在应该知道下一步该学习什么。
我也有同样的沮丧。我曾经是 Web 设计师、Web 开发人员和前端开发人员,主要从事设计、HTML/CSS 和基本的演示性 JavaScript/Jquery 工作。我发现如今有许多前端开发人员基本上是 Angular/React 专家,并且许多职位要求前端开发人员必须精通这些技术。我不确定我是否想成为 Angular 开发人员,我喜欢设计、语义、可用性、SEO、可访问性等等。而且我发现优秀的 Angular/React 开发人员并不关心这些东西,例如,他们不会处理图像,也没有任何艺术技能,而且通常倾向于做一些可以用 CSS 轻松完成的复杂事情……所以我认为整个问题在于,缺少对这些开发人员明确的角色/职位的定义。他们不完全是后端开发人员。他们也不完全是前端开发人员。归根结底:前端开发人员的整个概念是指能够编写与设计直接相关的代码的人,包括 HTML、CSS (Sass/Less) 和演示性 Javascript (Jquery、Bootstrap 等)。这些人对细节有敏锐的眼光,了解颜色,可以处理图像,关心语义和 SEO,现在越来越关心可访问性。同时,后端开发人员是指从事服务器端代码、数据库等工作的人员。应用程序背后的工程。这些人擅长数学。但他们通常不喜欢 HTML,而且他们往往不在意事物的外观……甚至他们的头发……所以,对我来说,这里明显缺少一个角色。我们需要为在这两者之间工作的开发人员定义一个新的角色。我称之为“中间层开发人员”。所以,你有了!三个不同的角色将所有事物连接起来!不再需要经历身份危机。分歧也已经消除。总结一下:
前端开发人员 - HTML (语义、可访问性、SEO)、CSS (Sass/Less)、演示性 Javascript (Jquery、Bootstrap 等)、图像处理、与设计师的沟通。
中间层开发人员 - Angular、React、Vue、Node、Go,以及 HTML 和 Javascript (连接)。
后端开发人员 - 服务器端语言,例如 C#、Java、PHP、数据库、Web 服务器、APIS (连接),等等。
现在,有道理吗?:-) 告诉我你的想法!
我同意那里缺少一个角色,但“中间层开发人员”有点太笼统了。他也负责中间件吗?不仅在中间层,而且还在后端?
你看,从一开始就变得令人困惑。
也许前端设计师和前端开发人员/工程师会更好。
本质上,如果你在中间层,你就是在将后端连接到前端。
也许一些与实现/系统绑定相关的名称。桥接端开发人员。连接端开发人员。
我不知道,这个名字需要大量的修改 xD
这个…! ^
这种趋势也影响了后端开发人员。当我刚开始时,PHP 是大多数应用程序的首选。这就是为什么出现了如此多的 PHP 框架,而且至少熟悉 2 个框架非常重要。许多框架已经消失或停滞不前,因为新的首选标准已经变成了 Node.js。根据 Indeed.com 的数据,PHP 已经成为第七大最受欢迎的后端语言,而 Javascript 则排在第三位。一切变化如此迅速,让人难以跟上。
感谢你发布 Jason 的评论,“让人难以跟上”。我是最早在线创建网站的人之一——使用简单的编辑器和 CGI 脚本,并且支付方式没有被散列化。我无法相信自那以后我们在线发展了多少。上周,我停止学习 React,我开始怀疑我是否应该努力跟上,或者是否能够跟上。我同时处理的事情太多,无法掌握所有内容,而且我学到的东西并没有被建立在之上,反而消失了。我以为世界上充满了比我更有能力的人,现在是时候放弃了。知道其他人也感觉跟不上很困难,这让我感到安慰。谢谢。
这是一篇精彩的、经过深思熟虑的文章。过去几年我一直有类似的感觉。很多观点都非常棒!
这篇文章深刻地揭示了一个我最近才开始(我认为)理解的问题。作为以前的前端开发人员,但现在是可访问性顾问,我总是惊讶于有多少可访问性审计结果从开发人员那里返回,只有半数的缺陷被修复。有时他们会返回进行 3 次重新检查,直到所有问题都解决!——尽管我提供了非常详细的解决方案,通常包括他们需要使用的确切标记。
起初我以为这是因为开发人员根本对可访问性没有兴趣——但这些通常是大型银行和其他组织的 IT 团队,我知道他们出于监管原因对实现完全的 WCAG 合规性有明确的要求。(还要记住,客户为每次重新检查付费。)对我来说,作为一名前端开发人员,这些解决方案通常看起来非常简单(用于可访问性的标记通常就是这样)——那么为什么他们不明白呢?有时,框架可能无法让他们添加额外的标记,但这并不是主要问题。
最近我开始怀疑,是否过分依赖 JavaScript 框架和库会导致如今的开发人员对 HTML 和 CSS 的了解不像我们以前那样深入,不像我们所有人学习这门技能时那样理所当然。你的文章证实了这种想法,认为这可能是造成这种现象的原因。不幸的是,除了糟糕的编码和 CSS 之外,可访问性合规性也受到影响。
我已经注意到这种分化/趋势好几年了,读这篇文章让我很认同。我在前端开发者的角色中,更多地专注于 HTML、CSS、a11y、设计和 UX 方面。我的技能在公司里被低估了,因为我不是 JavaScript 专家,这不是开玩笑(我只知道足够应付)。然而,当我“全栈”开发人员同事需要帮助调试这些问题时,我总是他们第一个求助的人……而且这种情况比你想象的要多,因为我是专家。或者,他们只是草草了事,让我之后去清理他们的烂摊子。我不是你们的 HTML 和 CSS 保姆!
金钱上的差距是真实存在的,而且完全不公平。一门语言怎么就能成为薪资的决定性因素呢?
去年跟老板谈加薪的时候,我没拿到,因为我缺乏 JavaScript 技能。很抱歉,是我的错,我用我的时间去进行代码审查,重构 HTML 和 CSS,以及教我们的“全栈”开发人员如何编写正确的 HTML、CSS 和 a11y,以至于我没有时间优先学习公司的 JavaScript 框架。
Julie,我完全能理解你的感受。说得好!
@Julie 解释得很完美,现实生活中每天都会遇到的场景。太棒了。你在 HTML 和 CSS 方面更擅长,而开发人员在编码方面更擅长。你们彼此都需要(主要是开发人员更需要设计师)。大多数开发人员都喜欢这样“他们只是草草了事,让网页设计师去清理他们的烂摊子”。我也是一名网页开发人员,刚开始的时候我也是这样做的。然后,在看到网页设计师面临的困难之后,我意识到自己的错误。然后我尝试自己解决大多数 CSS 问题,或者通过在线帮助(阅读资料等)来解决。现在我已经习惯写格式完美的代码,我不喜欢凌乱的代码,比如这里那里的一些部分……(虽然这需要更多时间,但我更喜欢这样。)在我看来,网页开发人员和网页设计师应该一起讨论想法、问题、技能,以最终交付完美的产出。
这一切都是由 Google 始于 dart、go 和 angular。他们一直想要控制网页,远离标准,远离 HTML、CSS、JS 约定,转向一种编译语言体验,最终看起来与 HTML 完全不同。当 Google 看起来要主导时,Facebook 介入了,可能是出于正当理由,但通过 transpilers、babal、webpack、grunt、gulp,他们只是加速了我们远离标准,走向编译器(transpiler)。对 jquery 网站的明显批评是(HTML、CSS 和 JS 很好地分离,不需要服务器端渲染,SEO 正常工作,设计师和开发人员并肩工作等)它创建了意大利面条代码。但这种现象的出现,是糟糕的技术领导或糟糕的开发人员造成的。使用 jquery 的代码布局始终可以模块化、可维护且自文档化。现在有了 react 和 redux/mobx 等,你得到了文件意大利面条,一个庞大的全局数据全局存储,复杂的 state 管理,完全依赖于 js,以及一个完整的编译(transpile)过程。这是 Google 的梦想。这是一个危险的地方。如果你想赚大钱,你就必须拥抱它,但它使系统开发变得更加困难,而不是更轻松。我指的是大型系统(这也是另一个谬误——没有前端系统会那么大。没有前端系统需要 react 或 angular 的复杂性)。所以 Google 赢了……。
我认为你总结得非常棒!
很棒的文章,以及想法和评论的讨论。
我从主要的设计背景进入前端开发,我知道我最大的优势之一是能说设计和开发的语言,并理解双方的概念和局限性。就我个人而言,我认为将“前端”世界分成两个不同的阵营对大多数人来说都是有益的,因为 HTML/CSS 专家在更多情况下需要具备良好的设计眼光和某种形式的设计培训,而功能性前端编码人员可以更专注于自己的专业领域,而无需过多地关注设计世界。
也就是说,这不仅有利于那些对更复杂的 JS 编码和框架理解较少的开发人员,也有利于那些很难像设计师一样看待设计和构建的网站,最终构建了包含数十或数百个与设计相关的小错误的网站的开发人员。
非常有趣且具有现实意义!
一些想法:
1. 当人们抱怨技术时,我的第一反应总是:“当印刷机发明的时候——那些没有看到它价值的人抱怨。现在是不是同样的事情?”如果你在职业生涯早期学习了 Cobol,之后再也没有学习过其他语言,这很酷,但不要抱怨如果你的工作前景有限,人们采用新的技术。谁的技能不受变化影响?如果你是一条鳄鱼或一只蟑螂,抵制适应是可行的,但对于人类来说,这很少是一个好策略。
人类天生是富有创造力的解决问题的人。当前的通信技术,可以说仍处于起步阶段的范式转变,为我们提供了过去无法想象的能力(很容易忘记)。在我看来,JS 革命是第二次重大的、相对普遍的开发,它为我们大众提供了工具来创建利用这些能力的内容。当然,你不必学习新的工具,但如果你抱怨,想想你可能是一个鲁德人,看看第 1 点。
从过去的好时光开始,就有很多糟糕的手写 HTML 和 CSS 代码(我贡献了我的部分),也许网上大多数代码都属于这种类型。质量取决于编写代码的人的努力和能力——无论他们使用什么工具。
在前端开发领域工作了 20 多年,这非常真实。但我不同意“两个前端开发人员坐在酒吧里,他们无话可说”这句话所隐含的悲观观点。
我们一直都在跨学科融合,从这项手艺开始!我们采用了设计,并将其与代码、文档结构、语义和分布式媒体相匹配。我们强制执行可访问性,并将结构与演示分离,同时不断尝试更多交互性。我们通过网页性能、响应式设计、一致且可重复使用的 UI 实现,将业务需求和目标转化为良好的转化率。
我们让它成为一个行业。
多年来,我们越来越相信 CSS 和 HTML 也是代码。我认为 JavaScript 和结构化编程实践的兴起不是威胁,而是一种受欢迎的补充。这是一门我们再次需要去融合的学科,尤其是对于我们大多数人在 JS 还是一种更简单的基于浏览器的语言时就已经涉猎过的人来说。
如果我们可以与设计师并肩工作,我认为我们也可以与前端工程师并肩工作。
我们有太多的话题可聊,我们会一直聊到酒吧关门……。
我很高兴你写了这篇文章。当 WP 甚至 Drupal 开始谈论区块时,我开始深入学习 React 和更高层次的 JS。我在第一个网站上线时就开始在 html 上工作,当时的在线世界是一个狂野的西部未开拓的边疆。尽管我有多年的经验,但我越来越觉得我落后了,跟不上我需要掌握的所有东西,对自己的技能也感到有些厌倦。我实际上很享受更深入地学习 JS 和 React,但天哪,努力做到样样精通是一项挑战。更糟糕的是,这种挥之不去的感觉,多年来我付出的所有努力都导致我的技能沦为二等……令人震惊。我太忙了,还没有跟任何人谈过这件事,但我感到自己的不安全感越来越强烈,因为 JS 的依赖越来越大。看到这篇文章,读完大家的回复后,我凌晨 4 点就从床上爬起来了!我并不孤单。我不知道。非常感谢你让这件事曝光……我们接下来该怎么办呢?
我曾经是一个“全栈开发人员”,但这仅仅是因为身边没有人愿意接手后端。我把所有时间都花在了思考和担心我需要学习的安全和服务器等问题上,以至于我没有跟上 HTML/CSS 的步伐。目前我专门做 UI,把所有这些事情都留给了优秀的后端开发人员。他们同样也很高兴不用构建前端。JavaScript 是我们的交汇点。
我们称那些懂 html、css 和 jquery 的人为布局设计师。他们是一些还没有学习 js 的新手。如果你在该行业工作了 20 年,还没有做这些,那么我有一个坏消息要告诉你——要么你能力不足,要么你厌倦了你的工作,你应该尝试去其他地方。
实际上,我完全不同意。
我认为每个人都是从 HTML 和 CSS 开始的,然后选择两条路径之一。
路径 1:这个人开始学习用户交互和用户体验,然后成为 UI/UX 设计师。这个人通常精通 JavaScript,但专注于 DOM 交互和设计。
路径 2:这个人开始学习框架、实现,并在前端和后端的边缘徘徊。这个人通常精通 JavaScript,但专注于功能,而不是设计。
他们两人都有非常强大的理由来证明自己的职位头衔。
没有了解你的目标受众,并为他们创造良好的体验,你就不可能拥有一个好的网站/应用程序,同样,如果网站/应用程序失败、速度慢或有意外行为,你也不可能拥有一个好的网站/应用程序。
顺便问一下,为什么这么生气呢?
(**编辑注:**我删除了这条回复的评论,因为它不仅生气,而且粗鲁无礼。)
我很好奇这种分化到底存在于 JS 的哪个地方。我假设大多数 FED 至少可以使用基本的 JS 事件和 DOM 操作,并了解一些数据结构,例如数组和哈希映射。但到底是什么分化呢?
关于这个问题,我们不妨提出一个初步的建议:
范围
闭包
原型
线性算法
……
— 在这里划分 —
偏函数 & 柯里化
树,图
面向对象编程
测试驱动开发
……
我看到很多新的前端开发人员使用最新、最棒的 API 来创建智能聊天、图像识别等功能,但这篇文章显然对前端开发现状做出了更沉重的评价。
哇!这是一篇很棒的文章,总结了多年来一直困扰我的问题。我的 HTML/CSS 技能并没有让我获得显眼的位置,仅仅是因为大多数职位招聘都是关于 JS 的。我已经学习 JavaScript 两年多了。请帮助我们解决这个领域中的重叠问题,以便我们这些新人能够将技能提升到超越限制的水平。
我在 JavaScript 和 CSS 方面拥有数十年的经验,但我绝对不属于这场“伟大分歧”的 JavaScript 一方。
JavaScript 太棒了,是我最喜欢的编程语言。但是,我永远不会构建一个由 JavaScript 渲染的网站。我的意思是,当没有没有 JavaScript 的网站时,即客户端渲染。
客户端渲染存在缺陷。我们在 2004 年为一个客户做了这个,再也不做了!我认为我们遇到了来自 每个人都有 JavaScript,对吧? 的所有问题。这根本不值得。
对于普通网站来说,客户端渲染并没有满足用户的任何需求。你需要开发一款游戏或类似的东西才能证明它的价值,而不是一个普通的网站。
我也认为可访问性很棒。可访问性指南形成一个三位一体;网页内容 (WCAG)、网页用户代理 (UAAG) 和网页创作工具 (ATAG)。
大多数网站作者(关心可访问性的)只遵循 WCAG,但 UAAG 规定允许用户禁用脚本是可访问性要求。那么客户端渲染可以被认为是可访问的吗,还是不能?当 JavaScript 没有执行时,它们肯定不可访问。
我的困境是,如果你使用客户端渲染,你是否仍然只关注 WCAG,或者你现在也受 UAAG 的管辖?
UAAG 规定“用户代理是任何检索、呈现并促进最终用户与网页内容交互的软件”。因此,如果你的网站在客户端渲染,它也是一个用户代理,但它永远无法满足 UAAG 的要求。你无端地将自己的嵌入式不可访问用户代理脚本化到浏览器中。
在读完我写的那篇文章后,有人向我介绍了这篇文章。这是一个我观察了五年多的问题...
前端开发的“后端化”
https://hackernoon.com/the-backendification-of-frontend-development-62f218a773d4
请理解,我可能是最接近传说中的全栈开发人员的人(拥有商业背景加成)。我在 Angular 和 React 流行之前就为它们欢呼。但概念上很棒的东西在实施过程中却分崩离析。
我之前准确地预测过未来,我目前的感受是全力以赴 Vue。阅读我的文章,找出原因。
很棒的文章,过去五年一直困扰着我的问题。
我有一个针对所有读者提出的实际问题。一个从事更多“设计”方面工作的 前端开发人员,该如何找工作?他们应该寻找什么职位名称、科目或关键词?
这种分裂在专注于前端的新闻通讯中很明显。
“Frontend Weekly”是由 JavaScript Weekly 的人编写的,因此它是有偏见的。那里的标题都是基于框架的。(https://frontendfoc.us/issues/380)
使用 Angular 管理图像断点
React 中的动画
使用 React Context API
将改变你编写正则表达式的 JavaScript 新特性
“Frontend Focus”更平衡。(https://frontendweekly.co/)
探索 Chrome 的前进/后退缓存
何时按钮不是按钮?
在规划 React 应用程序时,开发人员应该考虑什么?
网格的黑暗面
“CSS Tricks 新闻通讯”是真正的新闻,不仅仅是索引,在我看来是最好的。(https://css-tricks.org.cn/newsletters/)
如何正确使用 CSS 网格
一些允许你进行跨浏览器测试的服务
作为服务的社交卡片
编写让你的网站栩栩如生的动画
我真的很需要阅读来自专家的类似内容。
我是一名信息学学院的学生,拥有编程技术学位。作为一名学生,我学习了关于数据库、面向对象编程、数据结构等方面的概念。
当我决定认真专攻前端开发(我已经有一些 CSS/HTML 知识)时,我开始学习 AngularJS,并很兴奋地将它应用于一些实际项目。但当我得到我的第一份工作时,我作为前端开发人员的职责几乎完全与制作像素完美的网站有关,只涉及一点点 jQuery。我从来没有(现在也没有)机会使用 MVC 前端框架,因为它们没有必要。我想它们只适用于非常大型的项目。
这对我很成问题,一方面,JavaScript 生态系统变化太快,甚至难以记住所有库的名称,另一方面,我的实践知识最终变成了 UI 网页开发人员的水平,因此,如果没有感觉我在设计方面浪费了时间,就更难以转向 JavaScript 方面(我喜欢 CSS/HTML 和 UI,但这感觉很奇怪,因为我处于这个特殊的位置)。
Brad Frost 已经为这个语义问题创造了一个很好的词语。我一直都在使用它:前端设计
引用他文章中的内容:“前端设计涉及创建构成用户界面的 HTML、CSS 和展示性 JavaScript 代码。”——所以,这正是这篇文章所讨论的内容,不是吗?JavaScript 前端开发人员和前端设计师之间的巨大分歧(过去我们只是称它为网页设计,但现在人们认为它是平面设计师的工作... 哎)。
这场讨论真的很棒,很有必要,所以有人像 Chris Coyier 这样的人写这篇文章真是太好了。我目前担任 HTML/CSS 前端开发人员。如果我看到荷兰的职位机会,这两门学科之间存在着细微的转变。也就是说,我完全同意编写正确的 HTML/CSS 不是一件容易的事,尤其是在大型项目中,组织和编写可维护的 CSS 是一个巨大的挑战,我个人在这方面还有很多挑战,每天都在学习。但我认为我们应该诚实地说,JS 工程师的薪资和职位机会要好得多,这就是为什么公司想要精通这两方面的 前端开发人员的原因,我完全理解。我甚至认为 HTML/CSS 前端开发人员应该训练自己学习 JavaScript,因为如果你了解一些基本概念,你可以更好地与工程师沟通。这也适用于应该阅读一些有关 HTML/CSS 的文章的 JavaScript 工程师,例如关于盒模型、CSS 布局(网格、弹性盒子等)的基本知识。
我认为我们不应该将这两门学科分开,应该要求 HTML/CSS 设计师和 JavaScript 工程师编写优秀的 HTML/CSS,并编写优秀的 JavaScript。
我很好奇;“网页设计师”现在不是一个足够好的术语来描述那些设计网页的人吗?对我来说,“开发人员”与“程序员”是同义词。
感谢你写这篇文章。这种痛苦是真实的。
我曾经是一个前端开发人员,当时你只需要 HTML、CSS 和 jQuery 和/或 JavaScript。但如果没有扎实的 React、Vue 或 Angular 基础,我觉得自己就像身处无人区。
说实话,我对 JS 开发的依赖地狱感到厌烦,我已经放弃了,并且正在转向其他领域。
听到这些消息我很抱歉。我看了 Bruce Lawson 的“可访问性——重返未来”演讲(https://youtu.be/T2CjuAwrAq8),他在演讲中很有说服力地断言,我们过分依赖 JS 的工具集正在给用户造成巨大的损失,并且对他们造成了伤害。这绝对不可取!
我不使用这些基于 JS 的东西,我可以使用,我甚至之前写过完整的基于 JS 的桌面应用程序,但现在我正在一个使用 Scala+Play+Twirl 构建的大型平台上工作,考虑到渐进增强对于这个大型客户来说是必须的,浏览器中几乎没有 JS 的作用范围。
令人担忧的是,所有网页开发人员都是或应该成为 JS 开发人员的想法。我不喜欢这种缺乏区分,所以在看了 Bruce 的精彩演讲后,我认为我会把自己推销为一个全球性的网页开发人员,以便人们知道“来自网络”的东西与“在网络上”的某些 JS 依赖应用程序之间存在区别。
今天才知道我是一个独角兽中的独角兽——我不但精通全栈,而且是从 HTML/CSS 开始的。我这么说不是为了炫耀,而是想说我有点惊讶它稀有到被认为是不可能的程度。当然,有些时候我会感到任何一方面的技能深度都超过了我的跟进能力(可访问性并没有像我希望的那样自然地掌握,但我希望现在能做到),但总的来说,我有能力切片你的 PSD,将像素精确地放置在指定位置,然后围绕像素旋转整个网站,而不会弄乱它的边距,然后再为你构建一个控制旋转的 API。但是,我是在 1999 年作为一项爱好开始职业生涯的过程中逐步成长起来的。现在,随着所有复杂性的出现,这样做似乎更令人望而生畏,但我仍然不认为这两者是相互排斥的。