造轮子这件事
「别造轮子」大概是这行里被念叨得最多的一句话。有现成的库就用现成的, 有成熟的服务就接成熟的,重复发明是浪费时间——道理我都懂,而且大部分时候我也照做。 可我电脑里还是躺着一串自己写的小东西:一个截图工具,一个在几套配置间切换的小开关, 一个把照片变成头像的小玩意。它们都有现成的替代品,我却偏偏自己又写了一遍。
辩护的话可以讲一堆:现成的太重,多了我用不上的功能;它的默认行为跟我的习惯拧着来; 它把我最在意的那一步藏得太深。这些都是真的。但更诚实的原因是—— 我就是想知道,这东西到底是怎么转起来的。
用别人的轮子,你会开车;自己造一遍,你才知道车为什么会跑。
造轮子最大的收获从来不是那个轮子。为了让截图工具截得准,我被迫去啃了一遍 屏幕坐标和多显示器的缩放;为了那个切换开关,我摸清了一个平台配置到底存在哪、 什么时候被谁读走。这些知识不会写进任何一个项目的 README,却在后来一次次 别的排错里悄悄帮了我——那些「咦我好像知道这是怎么回事」的瞬间, 多半都欠着某个当年白造的轮子一份人情。
所以我不打算戒掉这个习惯。工程上,我尊重「别重复造轮子」; 但作为一个还想保持手感的人,我给自己留了一条例外: 只要是为了真正搞懂一样东西,那这个轮子,就值得造。