为什么软件工程师喜欢木工 [译]
Nick Scialli
空气中弥漫着新鲜松木锯末的气味,随着我打磨凳子最后一个粗糙的角落,更多的锯末飘散而出。我的孩子也快乐地在旁边打磨着她自己的小木块。
木工成了我新近发现的爱好。我的旧爱好——编程、阅读、写作——总是让我与笔记本电脑为伍,独自躲在屋子里,这对于小孩来说并不友好。
一个意外的礼物让我想到了一个点子。记得小时候,和爸爸一起把废旧木头变成鸟屋、飞机,乃至鲁布·戈德堡装置的日子,总是那么美好。是时候重燃那份热情了。
在观看了几个 YouTube 视频并光顾了一趟 HomeDepot 之后,我决定暂时搁置我的编程项目,探索一个新世界。
但这个新世界和旧世界没那么不同!
木工给我的感觉异常熟悉,它的多巴胺激发点仿佛和编程时相同。
事实证明,木工的精髓与软件工程并无太大差异:
在软件工程中最美妙的时刻莫过于构建你自己的工具,这是一种充满目的的工作。
木工也是如此。他们将这类工具称为“夹具”。有些夹具是为了满足特殊需求而制作的(比如钻直孔),而有些则仅仅为了省钱。
如同往常,你需要权衡你的工程时间的价值。
市面上有着各式各样的木工工具,每种都针对特定情况进行了优化。你可能需要顺着木纹锯木,或是逆着木纹;可能需要快速但粗糙的切割,或是追求平滑的切割却不介意花费更多时间;又或是需要进行曲线切割。而这只是锯子的用途之一!
每种工具都为特定的需求而设计,但除非你的预算无限,否则你必须选择那些真正符合你需求的工具。
任何曾经在 AWS 上挑选存储方案的人都会明白,理解你的工具,识别它们最擅长
什么,以及哪个最符合你需求的重要性。
3. 有限的(非货币)预算
金钱并非你唯一的预算。
任何有限的资源都需要被谨慎分配。在软件领域,预算可能覆盖硬件限制(CPU/内存)、网络带宽、延迟目标、工程人力等。
在木工中,有一个不可回避的限制:物理空间。
我的车库空间有限(即便我已经清理过)。我必须在这有限的空间内安置我的工具和工作台。因此,我得非常挑剔地使用我的存储预算,有些心爱的工具,如一台锋利的台锯,就成了奢望。
4. 设计优先,后施工
无论是在哪个领域,事先规划设计都能带来巨大的好处。它能让你对将要制作的物品有一个清晰的认识,并理解各个部分如何相互作用。
否则,你可能因为一个小小的错误方向而不得不放弃几天的工作成果。
5. 等待
不过,在木工中,你可能会喊出:“胶水正在干!”
这样的好处是,你可以同时进行多个项目。
6. 你有用户!
当我妻子知道了我的计划后,对定制作品的请求就源源不断。知道我所制作的每一件物品都有一个期待它的接收者,这对我是极大的动力。
而且,由于是我妻子提出的请求,为我“需要”的工具辩解就变得更加容易了。
一个显著的不同
在木工中,你可以实际拿到并感受你的创作成果。
感兴趣吗?
木工带来的成就感与软件工程相似(如果你在胶水周围待得足够长,可能还会有更多)。
你将体验到相同的快速反馈循环和与用户的紧密互动,同时避免软件工程中一些更加枯燥的部分。而且,你永远不需要待命。
尽管这并非我的选择——编程对我太重要了,而且我的日常工作让我能做的远不止编码。
但这的确帮我解答了一个长久以来的疑问:
如果我生在一百年前,电脑还未被发明,我会做什么?
现在,答案显而易见了:
找些东西去创造。