编程的书有几个非常经典的系列,个人而言很钟爱O'REILLY出版社的“动物书”,Apress出版社的黑皮书,但这些书通常会偏向于对知识点的深入讲解,入门阶段读起来会略感无趣。刚接触一个新的领域时,如果能够照着讲解逐步完成一个小的项目进而串联起主要的知识点,就要有意思多了,市面上的这类书名字里通常以cookbook,recipe结尾,也就是菜谱,让大家能像学做饭一样学编程。既然很多作者认为学编程可以类比学做饭,二者必有相通之处,逆向思考下那么经常下厨会不会从某方面提升程序员的素养,进而成为一个更好的程序员呢?
最近,自己一直在思考这个问题,根据自己做饭的经历,认为经常下厨可以提高以下几个和编程有相同之处的能力,供大家参考。
即时执行并乐于不断完善
做饭和编程一样,都需要动手来检验你的想法,但做饭会更有助于你提高执行力。因为看菜谱多数是有了食材确不会做,动因强烈,再加上菜都买了,不做的话难道扔了?所以无形中给了你更多的动力去执行。但试问我们看过的编程书,有多少次是以为自己理解了却嫌麻烦而没有敲过一行代码,结果过段时间回顾还是不会呢。而且学习编程时,即使按照代码敲一遍,有时也会因为各种原因运行不成功,需要在不断地排错中掌握。按菜谱炒菜也会遇到同样的情况,为什么炒出来的菜不好吃呢?为什么色泽或者品相不好呢?作为一个吃货,我曾经按照不同的菜谱连续做过很多次肉沫茄子,一直做到了自己满意为止,并乐此不疲。有了不断完善的执念后,自己在写代码时也会乐于不断重构直到写出优雅的代码。
加强处理信息的能力
朋友知道了你会做饭,想要尝下你的手艺,于是需要你张罗出一桌好菜,这时你一定不能像自己平时做菜一样只做一个菜咯,如何荤素搭配,并在短时间内陆续做好,其实是非常考验处理信息的能力的。
首先,你需要回顾一下自己的拿手菜,选出一个组合,同时确认家里食材和配料是否足够。
其次,在开火之前,你需要做好准备工作,菜要洗净切好,肉要切片或切丝,并用料酒和酱油味上,备好葱花蒜末等等。
最后,也是最考验处理信息能力的是如何安排炒菜的顺序。是否有些菜需要预处理一下?比如豆角是需要先用热水抄一下的。哪些菜步骤多难熟需要先下锅?哪些菜是可以用同一个锅炒且不会串味?哪两个菜可以用两个锅同时炒而不会让自己手忙脚乱?合理的安排调度顺序,适时并行和并发,才能在有限的时间里保证吞吐量,也就是时间一到,三四个菜陆续好啦。
相信我,在这样的情景下,你是要处理大量信息的。久而久之,在做饭过程中建立起的思考习惯,会让你在面对工作中大量纷杂的信息时受益,合理安排工作计划在有限的时间里获得最大的产出和在有限的时间里做出一桌好菜是何其相似呀。
培养创造力
会做饭的人在平时生活中常碰到这样的场景,打开冰箱,清点下的食材,咦,辣椒一个,胡萝卜半个,黄瓜一个,还有一片豆干,问晚上吃什么?答,配着剩饭做个五彩什锦炒饭,嘻嘻。
上述的例子或许有偷懒之嫌,那再举个例子吧。上个周末,我在做晚饭时开始翻腾冰箱,发现上次做炸酱面还有没用完的肉糜,再不吃快坏了,早上买了些茄子,心想要不再来个肉沫茄子?这时恰巧看到中午吃火锅还剩下一扎粉丝,一丝灵感闪过,肉沫茄子粉丝煲怎么样?貌似也叫蚂蚁上树。然后就是先查下菜谱,吸取下别人的经验,注意到应该先把茄子蒸熟后再下锅。话说那顿饭做的是非常成功的,可惜吃的太快木有图。
看到这,你也许会想这和编程有什么关系?上面示例是为了说明在掌握了一些食材的特性后,如何根据现实情况解决吃什么这一世纪难题。而作为一名程序员,我们会乐于学习别人优秀的代码设计思想,或者是经典的设计模式,但是如何写出高质量的代码,就需要深入理解这些知识再根据情况来创造出自己的解决方案啦。二者的相似的本质在于理解概念后,如何在应用场景中发挥创造。这其中的美妙,真的需要一些积累才能体会到。
提高品味和审美能力
程序员里男生居多,在程序里面又讲究严谨的逻辑和确定性,于是很容易养成直男的性格。加上男生又大都不爱打扮,各种因素结合起来程序员给人的印象大多是没有品味和缺乏审美。
而美食讲究的是色香味俱全,下厨多了,一方面是要在味道上精进,另一方面就是要追求品相了。以茼蒿炒鸡蛋为例,先将鸡蛋摊成饼,切成条后再和茼蒿一起炒,这时虽然鸡蛋还是那个鸡蛋,但品相明显有所不同,吃起来的感觉也会有所不同。
接下去,你可以进而追求摆盘,颜色搭配之类,逐步提高品相的过程其实也是在提高审美能力。审美能力的提高不仅可以改善生活品质,在工作中也可以体会和捕捉代码的美感。高质量的代码和优秀的软件设计是绝对具有美感的。身边有些同事一直没办法区分什么样的代码是高內聚低耦合的代码,也一直没法写出高质量的代码,估计是不具备代码的审美能力吧。
后记
我一直相信某些能力在各种场景中是通用的,身为码农的自己同时也热爱下厨,深感做饭和编程有相通之处,不知各位看官读后感觉如何,欢迎讨论交流哈。
实践-如何从零开始
不知道有多少看官读后想要尝试做饭的,如果你不知从何开始,请试想达芬奇当年学画是从画鸡蛋开始成为一代画家的,那么你可以从煎鸡蛋开始成为一名厨子滴,别笑,我是认真的。因为炒菜的第一步就是控制油温,煎鸡蛋则是最好的练习方式,如果你能熟练的煎出从五分熟到全熟的成品,相信你已经对油温的控制已经非常熟练了。有一种煎鸡蛋的方式叫sunny side up,我家喜欢叫它糖心煎蛋,网上还有专门的教程,感兴趣的读者可以尝试一下。接下来可以尝试不同的形状和摆盘,比如煎一个心形的鸡蛋,或者用番茄酱点缀画个笑脸等。通过练习煎鸡蛋入门以后,接下来的路,就任你发挥啦。