译:你好啊,Web 开发者们:一种日益增长的断层

原文:https://rakhim.exotext.com/web-developers-a-growing-disconnect
作者:Rakhim Davletkaliyev
译者:ChatGPT 4 Turbo

编者注:这篇文章探讨了现代 Web 开发中出现的代际断层现象。作者通过个人经历和观察,指出了年轻开发者与传统开发者在技术认知上的差异:1) 有些年轻开发者可能不了解传统的网页加载方式,只熟悉 SPA 应用 2) "计算机科学"在某些场合被简化为 JavaScript 相关知识 3) 开发工具和框架的层层抽象导致对底层技术的理解不足。文章并非批评现状,而是以人类学般的视角,观察和思考这种技术认知的代际差异,以及如何在不同技术观念之间找到平衡。

2024 年 12 月 19 日

有一次我经历了一个"哇哦"的时刻,当时一位程序员对于网站如何"清除" Chrome DevTools 网络面板中的请求历史感到困惑不已。他想知道用了什么神奇的方法来隐藏这些通信记录。他没有意识到这个应用并不是单页面 JS 应用(SPA),而且他甚至不知道还有其他方式来构 Web 应用。对他来说,每次点击实际上会让浏览器获取一个全新的页面,而且不需要任何 JS 参与,这个概念对他来说十分陌生。

我感觉到我对编程的认知和年轻 Web 开发者们的认知之间存在着越来越大的断层。我保证,这不是一篇"你们这些年轻人给我离开我的草坪"的文章。

我其实并不老(对吧?…),现在 36 岁,从 11 岁就开始编程。我的第一行代码是在 80286 16 位机器上写的(当时我们小镇上没有太多现代计算机)。所以,现在有一些全职开发者是在我已经有几年编程经验之后才开始他们的编程之旅的。有些年轻的开发者出生的时候,我已经 18 岁并且已经做过几份兼职工作了。

关于现代程序员不了解计算机速度的讨论已经很多了(你知道你的计算机一秒钟能做多少事情吗?,[Jon Blow 的抱怨]( Muratori:一个未优化的终端应该多快?]( Web 公司开发产品功能的人的无知辩护。今天我不谈这个,但我确实想谈谈抽象层。我这种日益增长的断层感主要来自于一些概念的"转移"。我听到的一些例子包括有人在谈论 Node 时说"原生 JS",或者在谈论 React 时说"不用框架的 JS"。第一段中提到的"哇哦"时刻就是另一个例子。

今天我看了 Leet Heat 的试播集,这是一个面向开发者的游戏节目。很酷!我很享受观看的过程,但同时它又加剧了这种断层感。首先,它是面向所有开发者的,不仅仅是 Web 开发者。但是类别包括:

  • Web 标准
  • TypeScript
  • 框架
  • 数据库
  • 计算机科学

你可以猜到,框架类只涉及前端 Web 框架如 React 和 Vue,数据库则是关于某些未指定的 SQL 格式以及 MongoDB。然后是计算机科学。其中一个问题是:

Array.map()Array.foreach() 的主要区别是什么?
a) Map 返回新数组,foreach 不返回
b) Foreach 比 map 更快
c) Map 只能用于数值
d) 没有区别

这感觉很像一个 JavaScript 的问题… 当然,map 是一种通用操作,但 foreach 和这些答案选项都在假定 JS 环境。

计算机科学类别中的另一个问题是"这段代码的输出是什么?":

const p = new Promise(
    (resolve, reject): void => {
        resolve(1);
        resolve(2);
        reject(3);
    }
);

p.then(console.log).catch(console.log);

但这怎么算是计算机科学呢?也许这就是我所说的概念转移的例子。“纯 JS”,以及 TypeScript 中非平凡 Promise 解析的抽象逻辑,这样的特定领域概念,居然被当作计算科学来对待。

这个问题在屏幕上以 JetBrains IDE 的截图形式呈现:

注意灰色框中的提示:这些不是代码的一部分,而是 IDE 的功能。所以我们看到的甚至不是代码,而是它的增强表示。

有人可能会说任何编程都是计算机科学,是的,当然,但按照这个逻辑,这个主题甚至不应该出现在类别中。Web 标准也是计算机科学。这是一个面向 Web 开发者的开发者计算机科学家的游戏节目。

另一个计算机科学问题是:

哪个方法可以移除并返回数组的最后一个元素?

我的意思是,当然,这是一个有趣的游戏节目,人们为了娱乐吃辣食物。它可能并不能代表工作面试或人们思考编程的方式。但是我不知道,也许它确实代表了?再说一次,我不是在批评他们制作这个节目,也不是想做那个"嗯,其实吧"的人。如果你愿意,这些都是人类学观。

我一直在编程中感到安全感。它是一个舒适的逻辑性的、确定性的、美妙一致的避难所,让我远离模糊和含糊不清的现实世界。我也感受到与其他程序员的某种亲近感,这是我的部落。所以我有点担心这种断层感。我不想变成一个对着云大喊大叫的老人。更让我担心的是,当我在评论(HN、Reddit 等)和博客中看到类似的观点时,它们经常走向极端,我对那一方面也感到断层。有人会愤怒地抨击"愚蠢的 JS 框架"和"训练营出来的开发者",同时狂热地宣称每个人都应该只使用 bash 和 vim 之类的。

这一切都很有趣。