我不喜欢魔法

我不喜欢魔法

Hacker News 摘要

原标题:I Don't Like Magic

对技术“魔法”的反思

作者 Jeremy Keith 在这篇文章中表达了他对技术营销中所谓的魔法的厌恶。他所指的魔法是指那些号称“就是好用”、“不需要思考”的技术。虽然无缝设计常被视为用户体验的终极目标,但作者认为这是有代价的,即降低了人的自主权

前端开发中的控制欲

在前端开发领域,作者自认是一个控制狂。他不排斥所有的工具,但非常反感使用自己不理解的代码。

• 他偶尔会使用 JavaScript 库,例如在 The Session 网站中用于显示地图和乐谱的库。

• 即便这些依赖项很好用,他依然不喜欢这种依赖于自己无法完全掌控的东西的感觉。

对 npm 和框架的警惕

作者对现代前端开发的通用做法表示担忧:

关于 npm:他无法接受使用 npm 来安装客户端 JavaScript。这种行为通常会导致安装更多的依赖项,形成复杂的依赖链,让他感到不安。他惊讶于大多数前端开发者已经习惯了这种对代码库的盲目信任。

库与框架的区别:作者对库和框架做了明确区分。是他在自己的代码中调用的他人代码;而框架则是他人的代码在调用他的代码。

关于 React:他极力避免在客户端使用 React。除了因为它会导致网站臃肿、加载缓慢从而伤害用户外,他还讨厌 React 在开发者与浏览器之间增加的抽象层。

抽象层的界线

面对“计算机系统本身就是一层层抽象”的论调,作者承认这一点,但他有自己的界线。在前端开发中,他的底线是尽可能贴近原始的 HTMLCSSJavaScript。因为这才是用户浏览器最终接收到的内容。

这种不妥协的态度在商业环境下可能并不高效。作者坦言,他已经不再为客户项目做前端开发,部分原因是他速度较慢,另一部分原因是他拒绝使用 React。他将自己的网站和一些特定活动网站视为手工艺品,宁愿用又慢又笨的方式亲手打造。

AI 与大语言模型编程

作者将 AI 编程工具视为一种加强版的 npm

1. npm 是直接引入他人的代码。

2. 大语言模型则是吞噬了整个万维网的代码,经过复杂的处理后,在开发者需要时给出片段。

3. 这增加了更多的抽象层,虽然在追求商业效益的环境下可行,但作者对此保持距离。

他引用了 Alice 的观点:编织是编程的未来。未来人们亲手编写代码不再是因为这样更快或更便宜,而是因为热爱这门手艺。

维护成本与理解力

代码库中经常会出现一些没人敢碰的神秘部分(例如 Webpack 配置),作者将其比作咒语祈祷

理解力是核心问题。如果代码的逻辑只存在于某个已离职开发者的脑子里,这段代码就会变成维护噩梦。

抽象的代价:抽象确实能加快生产速度,但代价是后续的维护难度。要理解代码,必须先理解代码之上的抽象层。

对于像作者个人网站这样打算运行数十年的长线项目,可维护性是最高优先级。大语言模型和过度抽象虽然神奇,但这种魔法并不适合追求长久与掌控的开发者。


原文:https://adactio.com/journal/22399

评论:https://news.ycombinator.com/item?id=47059147

Report Page