前端开发就是开发

Avatar of Geoff Graham
Geoff Graham 发布

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200美元免费额度!

有些人认为前端开发不是真正的开发。这是一种傲慢、挑衅的观点。尽管如此,我们有时也需要挺起胸膛。让我们来解释一下,为什么前端开发与任何其他子领域一样,都同样困难,同样值得这个称号。

这是我 上周文章 的延续,文章讨论了前端开发人员所需的技能难以确定,以及我们之间的差异性。那篇文章引起了很多读者的共鸣,收到的评论中充满了关于前端开发在技术和个人意义上所代表的含义的有趣故事和经验。

前端开发实践类似于演奏贝斯:它 易于入门,但 难以精通。它远不止 HTML 和 CSS(它们本身就足够难)。

Chris 在 Twitter 上提出了一个填空题

虽然大多数回复都很有趣,也很搞笑,但也有一些智慧的结晶。让我们来看看让前端开发成为,嗯,开发的共同主题吧!

我们必须处理跨浏览器兼容性。

这是该组中最常被提及的抱怨。虽然 Internet Explorer 仍然是大多数笑话的焦点,但每个浏览器都有自己的怪癖,通常需要特殊的开发技术来克服。

我们理所当然地被期望知道如何构建可以在跨浏览器环境下工作的网站。我们应该知道哪些浏览器支持什么功能,以及如何调试和克服特定于浏览器的错误。我们应该知道如何在各种浏览器上进行模拟或测试。

我们应该了解可以帮助我们自动解决跨浏览器问题的工具,或者使我们能够编写代码来处理功能支持和不支持的情况。我们应该知道如何进行回退。我们应该了解渐进增强和优雅降级。

跨浏览器兼容性是一项极其复杂的开发任务。

天哪,这么多设备!

除了处理浏览器不一致性之外,前端开发人员还负责为尽可能多的屏幕尺寸、屏幕方向、像素密度和输入类型进行开发。

不同屏幕、浏览器和功能的庞大格局带来的负担,主要落在前端开发人员身上。

框架、库、预处理、依赖项、插件……

过去,只需在 HTML 中链接一个样式表和一个 JavaScript 文件,就可以开始设计和构建网站。事实上,这仍然是基础。

如今的开发感觉大不相同。工具链变得更加复杂。我们需要选择构建流程、使用哪些库、用什么语言编写、想要投入多少精力到未来的语法中、想要依赖多少框架、哪些第三方工具有意义并且使用起来安全。

考虑这些选择不仅令人疲惫,而且越来越难以知道哪些是最佳选择,以及这些选择从长远来看是否明智。

前端开发中的选择与其他任何地方一样多,甚至更多。更不用说这个领域 变化速度极快

我们是视觉设计师、后端开发人员和其他学科之间的桥梁。

如今的许多框架和 CMS 都跨越了多个学科的界限。前端开发人员处于这一切的中心。我们最终负责设计——网站的外观。我们帮助内容人员确保他们拥有所需的内容,并从他们那里获得我们所需的内容。我们在模板中工作,提取我们所需的格式的数据。我们处理用户输入并确保将其引导到后端关注的其他位置。

我们不仅身处许多学科的交汇点,而且还被期望掌握足够的后台语言以发挥作用。如果你不懂 任何 PHP,那么你将是一个非常糟糕的 WordPress 开发人员。如果你完全不懂任何 Ruby 或 Rails 约定,那么在 Rails 项目中你也不会很有用。你懂的越多,你就能为团队提供越敏捷和自给自足的服务。

每个人都认为自己可以胜任前端开发。

前端开发的门槛相当低。每个人都听说过 HTML。他们“懂一些,但很危险”。由于门槛低,并且很容易涉足,所以人们认为不需要掌握太多知识,前端开发并不特别困难,这也很正常。

命名事物。而且我们必须命名很多事物。

我想你已经听说过关于命名事物是计算机科学中最难的问题之一的格言。我们前端开发者一直在命名事物。类名和 ID、数据属性、文件名、与团队沟通的模式。它永无止境。感觉平均每天都有数十个命名选择。

更不用说文案撰写任务通常也落到我们头上,这不算真正意义上的“命名”,但难度相似。

“正确的方法”和“错误的方法”不像后端开发那样明确。

在后端开发中,如果预期发生的事情确实发生了,那么你就成功了。当然,达成目标的方法有很多,有些比其他的更好。但在前端开发中,完成一项任务的路径似乎无穷无尽。即使你似乎已经成功了,也感觉像是迟早会发现你所做方法中的某个 bug。

CSS 很难测试。

后端语言(甚至 JavaScript)可以使用单元测试和集成测试来帮助确保代码按预期工作。CSS 没有这样的便利。当然,有人在尝试,并且有一些信息和工具可用。但这些都不太好,成功案例也很少。

Bug 可能是微妙的、令人困惑的和出乎意料的。更糟糕的是,一个看似微小的改动可能会在某个意想不到的地方产生负面影响,而你直到为时已晚才会注意到。

有一些 lint 工具,它们提供了一些帮助。也有一些样式指南强制执行工具,但它们并没有真正帮助强制执行更重要的事情,例如命名标准的遵守。

前端开发人员需要在脑海中牢牢掌握整个网站,以便能够以最有效率的方式工作。

JavaScript 与任何其他编程语言一样复杂。它很奇怪也很难。

JavaScript 是前端开发。JavaScript 是编程。编程是软件开发的一部分。软件开发很难。

性能 80% 依赖于我们。

经验法则是在网站加载等待时间中,20% 来自后端问题。一旦 HTML 文档到达,其余的加载时间就是前端开发人员需要关注的。加载了哪些资源,加载了多少资源,它们的优化程度如何,加载的方式以及感觉如何等等。

这是无障碍性实现的地方。

构建视觉上令人惊叹的网站是一回事,而它们的无障碍性则是另一回事。设计师非常关心用户如何与网站互动,而这可能并不总是视觉互动。为残疾人设计和开发网站本身就是一个学科,但它与前端开发最紧密地联系在一起。无障碍性有自己的一套规范,遗憾的是,这些规范通常不会与传统的前端开发培训一起教授。

招聘很难。

前端开发人员通常是最难填补的职位。

当然……

总结

你觉得呢?前端开发是“真正的”开发吗?我想是的,并且相信这里提供的反馈——特别是来自其他人的反馈——是确凿的证据。还有哪些因素让它变得困难?SEO?这场讨论值得进行吗?