工具不重要,完成工作更重要?
Etsy 的 CTO 在接受 The New Stack 采访中讨论到工作流程时,说了一句在 Hacker News 引起了很多人共鸣的话 —「我们想要招聘的是那种对造什么样的房子非常狂热的工程师,而不是对所要使用的工具非常狂热的那种。你知道,比如新款的『乔恩迪尔牌钉枪 3000 XT』」。
John Allspaw: We want to hire engineers who are psyched about the house that they’re going to build, not psyched that they’re going to use, you know, the new “John Deere Nail Gun 3000 XT”.
这种功利主义的论述在各种开发者社区中也能遇到类似的变种,比如「只要能实现功能就行,用什么语言并不重要」。
我在这里并没要挑起语言或什么编译器才是最好的争论的意思(那当然是 VSCode 啦!),只是……用什么工具真的不重要吗?
举个例子,由于 Ruby 里的 convention over configuration,active record,state machine 之类,都是尽可能帮助抽象。用起来就非常接近自然语言,以至于非著名后端开发者 Dili Yaer 的评价是:「Ruby 写起来的感觉不像是写代码,而是在写诗」。由于 Ruby 的这种抽象思维的锻炼,熟悉它的开发者往往也能将其运用到其他的语言开发过程中。如果不是由于 Yaer 在编程语言上的「百无禁忌」,我想他现在对业务的抽象能力也不会有如此深刻的理解。
「我们所用的写作工具参与了我们思想的形成过程。」
饱受病痛折磨的尼采,在收到朋友赠送帮助写作的打字机后表示,其写作文风及思考方式都因此产生了极大的变化后,说过这样一句话。
工具影响思维并非个人主观感受而已,如果上述例子无法说服你去拥抱各种工具,那现代科学也能给出解刨学上的证明:人类的行为会在神经组织上留下痕迹。
著名的例子便是伦敦出租车司机的海马体后部,经过常年对城市街道的记忆之后,强化得更大了。同时大脑在被改变后也是会不断加强当前行为,换句话说如果一个人长期使用某种行为方式,那么大脑也会鼓励他继续使用这样的方式生活。如果你刷 Youtube 或是抖音,你肯定还能记住当初深陷其中,又无法自拔的感觉。
在使用能够帮助养成好习惯的工具时,同时也在加深你对于「最佳实践」的理解。软件工程师大多都知道 JetBrains,一家提供软件开发工具的捷克公司。旗下的产品往往在软件重构上提供了大量别出心裁的支持。为的就是能够让开发者可以尽可能低成本地关注代码质量。当你在使用这种工具时,很难说它不会对你的工作习惯产生影响。
这也是为什么我觉得热爱工具并没有什么问题,这并不和完成工作产生冲突。相反热爱工具更能够帮助你做好工作。