”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 前端悄然普遍的贬值

前端悄然普遍的贬值

发布于2024-11-07
浏览:121

The quiet, pervasive devaluation of frontend

前提

以下是对 Josh Collinsworth 精彩文章的回应,您可以在这里找到。

我决定通过引用他在文章中提出的每一条摘要引用来构建此内容,并以我的观点回应每一条引用。

因此,本文应被视为一系列表明个人观点的想法。在报告的 12 条引用中,我发现自己同意 ✅ 8,不同意 ❌ 3,并且对 没有意见? 1

[TL;DR] 我总体上同意作者的意见和他的观点,尽管在某些情况下文章所创造的扭曲观点导致我不同意某些陈述。在我看来,对偏见的分析造成了作者对发展世界同样多的偏见。

我觉得我看到前端实践的普遍减少。几乎在我所看到的所有地方,我都注意到它的重要性被最小化,它的挑战也被忽视。

✅ 我完全同意这个说法。

前端长期以来被认为是后端的“小兄弟”,这是一个错误。前端是最终用户看到并与之交互的应用程序的一部分,因此是产品成功的基础。它的重要性不可低估,但这种情况经常发生,我自己有时认为我作为前端开发人员的工作“不如”我在后端所做的事情。

为什么会出现这种情况?从我的角度来看,我相信这是因为在过去的十年中,前端开发的世界已经被框架和库入侵,这些框架和库使每个人的工作变得更简单、更容易访问。这导致解决了许多过去出现的问题,导致前端开发变得“更简单”。这导致前端开发人员的角色被贬低,他们通常被视为“代码猴子”。然而,简单并不意味着容易,前端开发人员经常被要求解决复杂的问题并做出重要的决定,正是因为他或她不再被期望解决框架已经解决的“简单”问题,而是以新颖和创新的方式丰富用户体验。

就像 CSS 存在于某种奇怪的量子态一样;不知何故,既太复杂而无法使用,又太简单而无法认真对待,同时发生。

✅ 在这里,我也同意。

CSS 是 Web 开发领域中最被低估和贬值的语言之一。 CSS 是一种强大而复杂的语言,它允许您创建复杂而详细的用户界面。然而,与正常的代码编写方式相距甚远,其特定的语法和操作逻辑往往导致其难以掌握和使用。 CSS 是一门需要时间和奉献精神才能掌握的语言,CSS-in-JS 运动所发生的事情是一个明显的例子,说明社区如何试图通过创建一个不存在的问题来解决这个问题。新的语言,同时还为已经非常复杂的语言添加抽象。

在许多方面,CSS 对用户体验的影响比任何其他语言都大,而这往往直接影响成功。那么,为什么它的作用如此被贬低呢?

✅ 我同意。

正如前面引用中提到的,我认为CSS的问题是由于它的操作逻辑和特定的语法造成的。问题在于,与 JavaScript 相比,它通常被视为一种“第二”语言,而实际上它本身就是一种语言,有其规则和特性,并且需要与编程相当的学习时间。 CSS是一门强大而复杂的语言,其作用不可低估。

大多数情况下,实际上没有人说前端不那么重要,或者不那么真实,或者你不需要那么聪明才能做到这一点。但这似乎常常是暗示的。

✅ 我部分同意。

说实话,我认为这个主题比作者说的要明确得多。事实上,我经常发现自己不得不与那些认为前端与后端相比是“次要”工作的人争论,他们认为前端开发人员不应该是程序员,而应该是支持那些真正从事后端工作的人。当他们问我的角色是什么时,我总是回答全栈,因为在我的训练和成长中有各种各样不同的元素,硬币的两面对我来说都很重要。

我相信社区需要采取更多措施来消除这种心态。前端开发人员在各方面都是专业人士,他的工作是产品成功的基础。

前端开发人员需要在不断发展的工具的支持下解决复杂的问题(这大大增加了认知负荷),并做出直接影响用户体验的重要决策,这是成功产品的堡垒。

在某种程度上,我们的产出是艺术性的,而艺术性的东西有着悠久而传奇的历史,仅仅因为它们看起来简单而有趣而被悲惨地贬值。

✅ 我同意。

缺乏对角色和责任的理解在我们的行业中起着根本作用。前端开发人员经常被视为“艺术家”、“创意人员”,他的工作被贬低,因为它不像后端开发人员那样“技术性”。这是两个方面的错误。

首先,决定应用程序设计的往往不是前端开发人员,而是设计师(UX、UI,随你怎么称呼)。前端开发人员需要将设计转化为代码,并以高效、高性能的方式进行。这需要技术技能和特定知识,这远远超出了简单地编写代码的范围。

其次,正如上面已经提到的,前端开发人员的职责通常远远超出了简单地编写代码。如果我修改后端应用程序中的代码,自动测试很可能会比我更早地注意到任何回归。如果我修改前端应用程序中的代码,很可能注意到任何回归的唯一方法是手动测试应用程序或等待最终客户的报告*。这使得前端开发人员的工作比人们想象的更加复杂和艰巨。更不用说大量的业务逻辑状态管理——两者都迅速涌入前端——这使得该角色与业务越来越融合。

*注意:我很清楚端到端测试的存在,但它们的实现比传统的自动测试复杂得多,成本也高得多,而且由于其随机性和外部条件,它们的可靠性经常受到质疑。

该语言意味着界面与软件分离,而不是软件的实际部分。

?对此没有意见。

这里提到的是一个悖论,在我们的行业中,开发人员工程师之间似乎存在差异,并且必须显示为更多东西。我对这个问题没有意见,但我同意现在标题和横幅的泛滥只会让我们每个人实际所做的事情变得更加混乱。

编写 CSS 似乎很像在会议中做笔记,其中隐含着性别歧视,并且贬低了记录者在会议中的重要性。

✅ 我同意。

正如本文前面已经提到的,我同意 CSS 和整个前端世界的错误贬值。此外,在文章的这一部分中,提到了我们行业中存在的沙文主义,虽然我从未直接认识到它,但我了解它的现实性和严重性。我们的行业仍然常常是对女性充满敌意的环境,我相信社区需要采取更多措施来消除这种心态。

就好像支持过去、现在和未来所有可能的设备、操作系统、屏幕尺寸、浏览器、用户偏好和界面这一几乎不可能的工作是如此简单,我们自己发明了所有的复杂性,只是因为我们感到无聊。

✅ 我同意这句话的内在含义。

当今世界的复杂性使得前端开发者的角色比以往任何时候都更加复杂,当前端笑话和妙语变成偏见时,很容易陷入贬低前端工人工作价值的陷阱。

是的,作为一个团队,我们对新事物感到兴奋。但这为什么不能让我们感到好奇、适应或好奇呢?为什么我们不因学习的乐趣而受到赞扬,反而因拒绝留在原地而受到诽谤?

❌这个我不太同意。

尽管前端世界的发展确实(如前所述)导致了思想、工具和方法的激增,但闪亮对象综合症是一个真实且普遍的问题,尤其是在前端社区。这并不意味着你不应该有好奇心或适应能力,而是你经常陷入采用新技术的陷阱,而没有充分了解其利弊,也没有评估它们是否真的有必要。

如果我们的技能就像胶带一样有价值,可以掩盖组织缺陷的裂缝,那么为什么它们在导致这些缺陷的规划和决策过程中没有价值,而我们有可能阻止它们呢?

✅ 完全同意。

确切地说,作为软件架构师(或技术主管,或负责架构的人员),必须让团队的每个成员参与架构选择 - 尽管拥有最终决定权并最终对他们负责 - 以及决策- 导致创建应用程序或其一部分的制作过程应该涉及团队的每个成员,包括前端开发人员。那些已经这样做了足够长时间的人可能能够发现其他人看不到的用户体验或设计中的差距,并且让他们参与决策过程可以带来更好的用户体验和成功的产品。

前端工具在推销自己时就好像前端是没人想做的事情,而且没有人应该关心任何不必要的事情。

❌你可以清楚地看到随着帖子的发展,挫败感越来越大,但在这种情况下我只能不同意。

前端工具的营销——正如 Josh 所定义的那样——从来没有轻视或试图简化开发人员的挑战,除了一些罕见的例外。这些工具越来越多地致力于使前端开发人员的工作更简单、更高效,但绝不平庸,而且方向保持不变是正确的。我们的承诺永远不是让前端开发人员成为代码猴子,而是让他专注于真正重要的事情:创造成功的用户体验以及对业务和周围世界的影响。后端世界也是如此,工具的发展使开发人员能够专注于产品,而不是技术选择或配置问题。

最后,让我们记住,开发者关系的世界近年来已经以结构化的方式发展,一些公司的任何失误都不应该被视为常态。

似乎没有人再认为前端是产品的关键部分了;他们只认为它是产品到达时的漂亮盒子。

❌在这里,唉,我也不同意乔希的观点。

前端是产品的基本组成部分,其重要性不可低估,但这并不意味着您必须沉迷于复杂性和抽象性。前端开发已经足够复杂,不需要超复杂的设计或深奥的架构,而且正如后端世界一样,标准化,如果在充分了解事实的情况下完成,可以让我们不增加不必要的认知负担并专注于其他方面产品的。

版本声明 本文转载于:https://dev.to/cadienvan/the-quiet-pervasive-devaluation-of-frontend-26h7?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何在无序集合中为元组实现通用哈希功能?
    如何在无序集合中为元组实现通用哈希功能?
    在未订购的集合中的元素要纠正此问题,一种方法是手动为特定元组类型定义哈希函数,例如: template template template 。 struct std :: hash { size_t operator()(std :: tuple const&tuple)const {...
    编程 发布于2025-04-09
  • 可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    [2这里: https://webthemez.com/demo/sticky-multi-header-scroll/index.html </main> <section> { display:grid; grid-template-...
    编程 发布于2025-04-09
  • 如何使用FormData()处理多个文件上传?
    如何使用FormData()处理多个文件上传?
    )处理多个文件输入时,通常需要处理多个文件上传时,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    编程 发布于2025-04-09
  • 为什么尽管有效代码,为什么在PHP中捕获输入?
    为什么尽管有效代码,为什么在PHP中捕获输入?
    在php ;?>" method="post">The intention is to capture the input from the text box and display it when the submit button is clicked.但是,输出...
    编程 发布于2025-04-09
  • 如何在Java字符串中有效替换多个子字符串?
    如何在Java字符串中有效替换多个子字符串?
    在java 中有效地替换多个substring,需要在需要替换一个字符串中的多个substring的情况下,很容易求助于重复应用字符串的刺激力量。 However, this can be inefficient for large strings or when working with nu...
    编程 发布于2025-04-09
  • 对象拟合:IE和Edge中的封面失败,如何修复?
    对象拟合:IE和Edge中的封面失败,如何修复?
    To resolve this issue, we employ a clever CSS solution that solves the problem:position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%)...
    编程 发布于2025-04-09
  • 大批
    大批
    [2 数组是对象,因此它们在JS中也具有方法。 切片(开始):在新数组中提取部分数组,而无需突变原始数组。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    编程 发布于2025-04-09
  • 如何在Java中执行命令提示命令,包括目录更改,包括目录更改?
    如何在Java中执行命令提示命令,包括目录更改,包括目录更改?
    在java 通过Java通过Java运行命令命令可能很具有挑战性。尽管您可能会找到打开命令提示符的代码段,但他们通常缺乏更改目录并执行其他命令的能力。 solution:使用Java使用Java,使用processBuilder。这种方法允许您:启动一个过程,然后将其标准错误重定向到其标准输出。...
    编程 发布于2025-04-09
  • 为什么我的CSS背景图像出现?
    为什么我的CSS背景图像出现?
    故障排除:CSS背景图像未出现 ,您的背景图像尽管遵循教程说明,但您的背景图像仍未加载。图像和样式表位于相同的目录中,但背景仍然是空白的白色帆布。而不是不弃用的,您已经使用了CSS样式: bockent {背景:封闭图像文件名:背景图:url(nickcage.jpg); 如果您的html,css...
    编程 发布于2025-04-09
  • 如何限制动态大小的父元素中元素的滚动范围?
    如何限制动态大小的父元素中元素的滚动范围?
    在交互式接口中实现垂直滚动元素的CSS高度限制,控制元素的滚动行为对于确保用户体验和可访问性是必不可少的。一种这样的方案涉及限制动态大小的父元素中元素的滚动范围。问题:考虑一个布局,其中我们具有与用户垂直滚动一起移动的可滚动地图div,同时与固定的固定sidebar保持一致。但是,地图的滚动无限期...
    编程 发布于2025-04-09
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-04-09
  • 如何干净地删除匿名JavaScript事件处理程序?
    如何干净地删除匿名JavaScript事件处理程序?
    删除匿名事件侦听器将匿名事件侦听器添加到元素中会提供灵活性和简单性,但是当要删除它们时,可以构成挑战,而无需替换元素本身就可以替换一个问题。 element? element.addeventlistener(event,function(){/在这里工作/},false); 要解决此问题,请考虑...
    编程 发布于2025-04-09
  • 如何使用Regex在PHP中有效地提取括号内的文本
    如何使用Regex在PHP中有效地提取括号内的文本
    php:在括号内提取文本在处理括号内的文本时,找到最有效的解决方案是必不可少的。一种方法是利用PHP的字符串操作函数,如下所示: 作为替代 $ text ='忽略除此之外的一切(text)'; preg_match('#((。 &&& [Regex使用模式来搜索特...
    编程 发布于2025-04-09
  • 如何使用node-mysql在单个查询中执行多个SQL语句?
    如何使用node-mysql在单个查询中执行多个SQL语句?
    在node-mysql node-mysql文档最初出于安全原因最初禁用多个语句支持,因为它可能导致SQL注入攻击。要启用此功能,您需要在创建连接时将倍增设置设置为true: var connection = mysql.createconnection({{multipleStatement:...
    编程 发布于2025-04-09
  • 如何配置Pytesseract以使用数字输出的单位数字识别?
    如何配置Pytesseract以使用数字输出的单位数字识别?
    Pytesseract OCR具有单位数字识别和仅数字约束 在pytesseract的上下文中,在配置tesseract以识别单位数字和限制单个数字和限制输出对数字可能会提出质疑。 To address this issue, we delve into the specifics of Te...
    编程 发布于2025-04-09

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3