工具
人类之所以能超越其他物种成为地球的主宰,核心在于创造和使用工具的能力。有个经典的观察:单论跑步,人类的能量效率远不如其他动物;但一旦骑上自行车,其能量效率便瞬间超越了任何生物。这直观地揭示了一个道理:工具即效率。在时间和精力都有限的前提下,如何善用工具,直接决定了我们能达到的上限。
工具种类繁多,但设计初衷始终围绕“人”这一操作者。因此,对工具的认知至关重要。以饮食为例,不同文化背景下,有人用筷子勺子,有人用刀叉,也有人直接用手。这说明了双手不仅是交互世界的核心工具,也是此刻写下这段文字的工具。
作为软件开发者,我们面临的选择更是令人眼花缭乱:Vim、Emacs、VSCode 等编辑器;Java、Python、JavaScript 等语言;以及无数的框架、算法、编码规范和测试指标。每个项目都是一系列选择的结果,完成后我们常会反思:这些真的是最优解吗?
我个人倾向于学习那些基础且通用的工具,试图用最小的集合覆盖最多的开发场景。筷子是个绝佳的隐喻:原理简单,却极具实用性。除了夹取食物,它还能拨弄、切割,甚至处理一些看似不适合的任务,体现了工具设计的巧思。当然,再好的工具也需要正确的技巧才能发挥效能。这符合“一次投入,长期受益”的逻辑——一双筷子能应对东亚饮食的绝大多数场景。但不可否认,面对牛排时,叉子和牛排刀显然更合适。
面对日益膨胀的编程语言、框架和工具库,选择困难症的根源在于我们难以消化海量信息。但作为个体,我们真的需要精通所有工具吗?没有它们,就无法写出优秀的软件吗?我认为并非如此。很多时候,一台电脑加上一个顺手的编辑器(如 VSCode)就足够了。其余技能,按需学习即可。
这种做法或许有些短视。快速上手和适应之后,我们可能会后悔没有更早选择更优的架构——我的个人网站就因此重构了三次。但我从中学到了什么?这些经历真的有价值吗?这些问题我常反思,而思考本身,或许就是一种心智锻炼。
在有限的时间和生命里,快速迭代产品,以螺旋式的方式持续向上,这或许才是通往更高境界的正确路径。