为什么每个人都在争论 CSS/UX 和 JS

2025-05-28

为什么每个人都在争论 CSS/UX 和 JS

长话短说:没有。这些话都很难说清楚,但你继续斗争的原因之一,就是因为你误解了这场斗争的意义。请读读那篇该死的文章。拜托,谢谢。

我讨厌自我介绍。我们直接开始吧,我会在合适的地方补充。

大分水岭

Chris Coiyer 的文章《The Great Divide》打破了前端开发社区的格局,在 Twitter 和其他平台上引发了不少讽刺和争议。如果你还没读过这篇文章(你应该读),它围绕着一种观察到的分歧展开:一类前端开发者主要使用 JavaScript 相关技术来完成工作,而另一类前端开发者则将 JavaScript 视为他们众多以用户体验为中心的技术之一。然而,大家似乎忽略了一点:这篇文章并非关于前端领域应该如何运作的规范性观点,而是 Chris 和他的好友 Dave Rupert 在播客ShopTalk Show (dot com) 上进行的真实访谈中得出的描述性观点。

换句话说,他们真的分手了。克里斯和戴夫只是在说说而已。

Chris 在《The Great Divide》一文中总结道,这种焦点的裂痕之所以发生,是因为前端领域已经从过去的框架中逐渐脱离出来,那时前端开发仅仅包括设计服务器渲染组件的样式。他指出,许多前端开发人员使用 JavaScript 的方式更接近于常见的 MVC 风格后端编程,而另一些开发人员则专注于使用更全面的工具集(主要是 CSS)来提升前端体验,使其更易于访问。因此,如果我们要更好地描述前端开发人员的工作内容,我们应该区分 JS 工程师和 UX 工程师。

阶级斗争

然而,讨论很快就转移到了 JS 工程师(我已经接受了 Chris 提出的命名法)是否比 UX 工程师做更多的工作,以及 UX 工程师是否应该获得与 JS 工程师相同的报酬。

需要说明的是:如果您在网上看过讨论,而我提出的提纲与您的理解不一致,那也没关系。网络世界很大,您和我很可能目睹了同一事物的两个方面。我试图将我所看到的内容与我正在构建的叙述联系起来;希望您能理解。

总之,业内人士并不意外,我们经常看到对别人的技术嗤之以鼻,甚至普遍地嗤之以鼻,开发者Aurynn Shaw一针见血地将这种态度称之为“蔑视文化”。在这种情况下,我们开始看到这种蔑视针对用户体验工程师……我敢肯定,很多读者现在会想:“你指的是设计师吧?设计怎么也算工程了?”

因为事情是这样的:即使无意冒犯,很多人也根本不认为用户体验工程师是什么,或者充其量只是被吹捧的网页设计师。我在 ShopTalk 采访那些主要从事以设计为中心的工作的人的讨论中也观察到了同样的态度。我不会纠结于这种说法是否正确;我只是指出,这就是人们持有的一种态度。

我同样要指出的是,参与这种轻蔑文化的人往往并非有意为之(当然,需要注明出处,但这是我的文章)。人们并非一定是故意装傻,他们之所以会因为 Ruby 速度慢而轻视它,他们之所以会因为 JavaScript “十天就写好了”而轻视它,他们之所以会认为 Java 是老古董的技术,他们之所以会认为 Elixir 只是个玩具语言,他们之所以会轻视 PHP,他们之所以会轻视 Web 开发“不是真正的编程”,他们之所以会轻视用户体验工程师“不是工程师”,他们之所以会轻视他们,并非出于恶意。有时,这种傲慢只是基于被动偏见观察而产生的粗暴意见。

然而,很少有人热衷于为这种行为辩护,因为对于那些专攻被鄙视技术的人来说,这些观点往往构成了直接的攻击。你可以给这一点打个大大的星号,但基本上来说:当一个人觉得别人在贬低自己赚钱的东西时,他可能会(无论这是否正确,都可以理解,由你选择)采取防御措施。而这正是我们在推特上看到的。

Jen Simmons(W3C 工作组、Mozilla、Layout Land)将针对 UX 工程师的敌意描述为“阶级斗争”,并针对特定倾向的 JS 工程师发布了多条精选的辛辣推文:

我并没有想把 Jen 后来发的那些垃圾推文也放进去(或者说不)是为了你好:这都是网络问题——发挥你的想象力吧。不过,从更理性的角度来看,这个论点其实更加微妙。Dan Abramov(React、Redux、create-react-app)写道:

我当然会把 Dan 归入 JS 工程师阵营,因为你知道,React 就是其中之一。当然,也有些人并不完全认同我们新的前端称谓。例如,Kyle Simpson(你不懂 JS,前端大师)写道:

不过,在其他观点中,你可以看到人们开始厌倦了持续不断的负面评论。Das Surma(谷歌,HTTP203)总结道(我真希望我能说“Surma 推测”,但措辞不对):

HTML 基本格式

然而,当 Surma 发表这番言论时,我们已经完全失去了讨论的共同点。讨论的焦点不再是前端开发如何发展,而是 CSS 和 HTML 作为技术是否难懂,以此来为那些可能不再从事编程工作的人辩护(当然,就我而言,我显然没有忽视用户体验工程所需的丰富教育和经验)。

DHH的 JavaScript 框架Stimulus(以及他在Rails上的所有工作)的核心思想是:Web 正在变得不必要地复杂,我们最好专注于让应用程序开发尽可能简单。他毫不意外地直接提出了他的观点:Web 设计应该意味着编写 HTML 和 CSS。以下是他关于这个话题的推文:

我承认,DHH 这么说的时候,讨论似乎有点跑题了(不过他是为了维护用户体验工程师,所以我没有责怪任何人)……我的意思是,Web 技术的意义不就是易于理解吗?HTML 和 CSS 如此简单强大,难道我们不应该为此感到自豪吗?

等等,我们刚才在谈论什么?

就在这时,气氛似乎发生了变化:一个次要的争论开始出现……而我认为正是在这个时候,一切都变得错综复杂,人们开始难以理解UX与JS之间到底发生了什么。因为就在一方争论UX是否和JS一样酷的时候,一场更有趣的、更相关的讨论开始展开……

从我个人的角度来看,这件事始于 DHH,他后来第二次出现在这篇文章中,发表了对 Web 技术现状的观察。这次他发表了一篇帖子,探讨了“查看源代码”如何日渐式微,以及我们不应该让它消亡。以下是他关于这个话题的推文:

(这里汤姆戴尔向 DHH 提出了一个辛辣的问题;我之所以包括这些,只是因为它很有趣:)

无论如何,查看源代码值得保存的想法非常有趣,因为我知道我不是唯一一个认为原始讨论正在凝聚成第二个更细致的对话的人,即:语义网发生了什么?

等等,什么?谁会提起语义网?

好吧,听着,请允许我简单介绍一下背景。如果您不熟悉并且没有阅读我刚才链接的文章,语义网是蒂姆·伯纳斯·李爵士对未来网络的设想,届时网页将不仅对人类可理解,对计算机也同样可理解。不过,实事求是地说,语义网最终不过是一堆模式标签,我们应该把它们扔进 HTML 中,以便 Google 更容易地完成他们的工作。虽然对语义网持怀疑态度很有趣,但我们不要忘记语义网概念存在的真正原因:一个去中心化的网络,每个人都拥有自己的数据,信息孤岛的梦想已经不存在了。然而,更切题的是,语义网表明,自从网络诞生以来,就有这样一种观念,即网络应该是可访问和开放的

同意与否——都不是重点。我只是说,这才是 JS 与 UX 第二轮较量的核心:JS 是否正在变得臃肿,阻碍 Web 的可访问性和开放性。

你可能已经看出来了,这触及了轻蔑文化的范畴,因为它暗示前端 JavaScript 技术对 Web 不利。虽然我认为这个论点比用户体验工程师不如 JavaScript 工程师之类的论调更有学术价值,但正如你可能推断的那样,事情再次变得相当激烈。为了简洁起见,以下是一些论点的粗略列表:

  • 有些人认为,在前端使用过多的 JS 会导致原本应该将我们联系在一起的网络结构不再适合人类访问(这意味着存在问题)。
  • 有些人认为这并不重要,因为网络只是数字产品的一种交付方式。
  • 有些人认为 JS 框架使得网络对于有无障碍需求的人来说变得不切实际或难以访问。
  • 有些人认为,虽然可访问性问题是一种合理的批评,但这并不意味着框架和最佳实践没有发展,而且这是一个可以解决的问题。
  • 有些人认为,框架使人们过度依赖网络本身以外的技术,而新开发人员则失去了对原始技术可能性的掌握。
  • 有些人认为框架有助于降低网络的复杂性并提高人们的工作效率。
  • 有些人认为,框架不必要地庞大,并且会使使用较差网络的人的网络体验变得更糟。
  • 有些人认为这也是一个可以解决的问题......

我想用具体的推文来支持每一种观点,但这太费劲了,所以我行使我的编辑自由,没有做任何修改。不过,你可以去 Twitter、Dev.to 或 Medium 上自己研究一下——人们都在表达这些观点。

这些都不是新鲜事

这场关于网络现状和未来的争论,长期以来一直是原力中酝酿已久的骚动,开发者通常感觉它不过是背景中沉闷的悸动,但偶尔会再次出现,带来震撼。这次显然就是这样一次。然而,作为开发者,我们认识到,这场反复出现的争论是一个老掉牙的主题,虽然经过了变形,但依然熟悉,并且自我们这个行业存在以来就一直存在:计算机应该在我们人类集体经验的主题中扮演什么角色?

...是的,好吧——我会淡化哲学上的幻想。

但至少你知道我在说什么。这个行业创造了黑客道德免费软件开源知识共享、“信​​息想要自由”以及前面提到的语义网,等等,甚至可以追溯到道格·恩格尔巴特提出的用计算机增强人类智能的想法。我只是想说,众所周知,开发人员一直在思考人机关系的本质。

因此,这场斗争带来的一个好处是,人们从网络的角度审视这个问题时焕发了新的活力:我们想从中得到什么?我们希望网络是什么样子?什么值得保留,什么又是可以舍弃的?我们希望看到哪些新功能?谁在推动这一切?各种观点的前端工程师又将扮演什么角色?

确实,我在推文中提到的一些人对 Web 的未来有着相当敏锐的见解。例如,Kyle Simpson 在他关于 JavaScript 未来的精彩演讲中,谈到了我们是否应该让 JavaScript 成为一个简单的编译目标(相关内容见 27:50):

Jen Simmons 在她关于现代 CSS 的精彩视频之一中建议停止使用 Bootstrap 之类的框架,并开始使用原始 CSS 及其所有强大的功能(相关内容见 8:29):

另外,观看另一场精彩的演讲也别有一番滋味,它讨论了语义网最初设想为何失败,以及我们能做些什么(摘要幻灯片在 1:09:24 左右放出)。

但也许我离题了......

说到点子上了,作者

好的。我的意思是,我们当中有不少人(哎呀,看来我终究还是选边站了)认为网络应该是一个功能齐全、人人可访问的平台,我们应该努力维护其开放性和语义化的本质。我们当中有些人(比如我)甚至认同蒂姆·伯纳斯-李爵士的观点,认为网络应该完全去中心化,变成像个稳固的、诡计多端的乌龟一样,或者其他什么。在这场新近演变的讨论中,我们姑且称之为“A”方

还有人认为,如果 Web 仅仅是一个编译目标,那它就毫无意义:只有当人们将其用于真正的商业目的时,Web 才有意义。如果真是这样,那么我们唯一应该关注的应该是为产品用户提供良好的体验,至于那种把 Web 当作一个可以手牵手、浏览可读源代码的地方的嬉皮士式想法,那就见鬼去吧。我们姑且称之为极端的B 面

毫无疑问,大多数人的观点都会落在这个连续体的某个位置,而不是任何一个极端。不过,结论是:

  1. Chris Coiyer 的“大分水岭”旨在描述而非规定前端开发的现状。

  2. 关于用户体验工程师是否应该获得与 JavaScript 工程师同等薪资的讨论,源于人们对用户体验工程师究竟做什么的误解,以及这个称谓是否只是“设计师”的花哨新称谓。而“设计师”这个词在目前的语境下似乎承载着巨大的、不合时宜的厌恶。我建议避免讨论这个问题。

  3. 理性开发者之间的讨论主要集中在前端过度使用 JS 框架魔法是否可行,以至于它实际上正在推动行业发展——与其说是逐步提升宝可梦的等级,不如说更像是强迫皮卡丘用雷石变身。我认为无论哪种方式都有其优点,但所有参与者都应该谨慎行事,避免踏入轻蔑文化的领域。并不是说你需要来评判你的胡言乱语,但你知道,这是我的博客。

  4. 此外,毫不奇怪,理智的 Twitter 评论者确实可以成为大型垃圾压缩机的素材。

  5. 但是管他呢,因为尽管有这些人,我们仍然可以就网络的未来进行一场精彩的成人对话,所以,你知道,让我们从这个方面开始吧:让我们讨论一下 JS 框架的作用;让我们讨论一下 Web Assembly 是否真的会取代 JavaScript,以及我们是否希望它取代 JavaScript;让我们甚至讨论一下网络上所有伟大的新功能......有很多事情要谈,对我们作为网络居民和开发人员的未来进行有效的解读,我们绝对应该坐下来谈谈。

不过你先走。


文章来源:https://dev.to/ulitroyo/why-everyone-is-fighting-about-cssux-and-js-4cpp
PREV
经过一年的自学,我如何在两周内找到了一份初级前端开发的工作
NEXT
我们这些“开发者”是不是在把“知识”从下级和同行那里“守”起来?🤦 背景语境 PSA:你觉得常见的东西,对其他开发者来说可能并非如此。所以在屏蔽此类内容之前,请三思。兄弟程序员?难道我们不能更友善一点吗?兄弟程序员?所以问问自己,镜子里的自己?你会做出改变吗?我看到其他文章/推文也发生过类似的情况,有什么我可以帮忙的吗?继续努力!评论区的其他建议 历史岔路