解决个人偏见的三个抽象层方法


重点以抽象层方式思考,能够清晰地解决问题并避免个人偏见。

我们有三个抽象层:自然层、中间层和人类层。

  • 自然层是为物理和化学定律设计的,包括塑料、横梁、轮胎、玻璃、灯泡、电线等。
  • 人类层是为人类设计的,人类可以毫不费力地使用按钮、旋钮、键盘、纸张和文字。
  • 中间层介于自然层和人类层之间,是技术人员处理水管、磨刀、家庭清洁、代码编写、铲雪等工作的地方。

通常我们并不清楚我们正在操作哪个抽象级别。(我们不知道自己处于哪个上下文,灯下黑)
如果我们知道的话,我们可能会以不同的方式处理眼前的任务。

例如,知道装洗碗机是在人类抽象层上进行的,这将鼓励我们不要过度在意摆放餐具的位置,不要在把餐具放入洗碗机之前过度清洁餐具。相反,我们只需将洗碗机装好,然后再和家人一起坐下来享受空闲时光。

作为一名计算机程序员,我无休止地面临着有关抽象的决策。一般来说,有 3 个合理的值需要优先考虑,每个值都对应于三个理想化的抽象层:

  • 使代码以计算效率运行(自然层),
  • 使其对我自己和我的团队可读(中间层),
  • 并使其有用和令人愉快的(人类层)。

考虑到这三个值和三个抽象层,我可以在代码库中做出正确的选择。

通过我们个人最熟悉的层的抽象来解决我们遇到的每个问题是很诱人的。这是一个陷阱(上下文 造成的灯下黑)——我们应该跳出自我,清楚地看到问题,并独立于我们的直接偏好来定义其抽象(以及解决方案)。

一个类似的陷阱是忽略我们不舒服的抽象层:
我们可能熟悉将洗碗机视为人类抽象,加载它并按下按钮,但是当它损坏时,可能需要通过呼叫技术人员或参考用户手册进入中间抽象层。如果我们试图在保留人类抽象层的同时修复洗碗机,我们一定会感到沮丧。

当然,所有抽象概念都会在层与层之间泄漏,例如由于物理原因,洗碗机洗碗以后,人类还是可能需要清洗餐具,因为洗碗机有时因为摆放位置未能清洗干净。

banq注:如果你认为洗碗机没洗干净碗,是洗碗机不对,那是完全认为洗碗机处于自然层,洗碗机的使用涉及人类层,使用方法不对也造成洗不干净,洗碗机维护涉及中间层,需要判断它是否坏了还是质量比较差?

无论洗碗机处于哪个层面,都不要忘记自己与洗碗机共同组成一个洗碗系统或洗碗上下文,在无法更换更好洗碗机,或无法判断是否坏了之前,自己参与洗碗机洗碗不干净的补救活动,也是必然的,不能将自己凌驾于这个系统,以上帝视角判断这个洗碗机不好,或者根本不应该买洗碗机,二分法等思维方式容易导致上帝思维,将自己置于系统外部。