為什么程序員要愛下廚

編程的書有幾個非常經(jīng)典的系列,個人而言很鐘愛O'REILLY出版社的“動物書”,Apress出版社的黑皮書,但這些書通常會偏向于對知識點的深入講解,入門階段讀起來會略感無趣。剛接觸一個新的領(lǐng)域時,如果能夠照著講解逐步完成一個小的項目進而串聯(lián)起主要的知識點,就要有意思多了,市面上的這類書名字里通常以cookbook,recipe結(jié)尾,也就是菜譜,讓大家能像學(xué)做飯一樣學(xué)編程。既然很多作者認為學(xué)編程可以類比學(xué)做飯,二者必有相通之處,逆向思考下那么經(jīng)常下廚會不會從某方面提升程序員的素養(yǎng),進而成為一個更好的程序員呢?

好吃的土豆絲玉米面餅

最近,自己一直在思考這個問題,根據(jù)自己做飯的經(jīng)歷,認為經(jīng)常下廚可以提高以下幾個和編程有相同之處的能力,供大家參考。

即時執(zhí)行并樂于不斷完善

做飯和編程一樣,都需要動手來檢驗?zāi)愕南敕ǎ鲲垥兄谀闾岣邎?zhí)行力。因為看菜譜多數(shù)是有了食材確不會做,動因強烈,再加上菜都買了,不做的話難道扔了?所以無形中給了你更多的動力去執(zhí)行。但試問我們看過的編程書,有多少次是以為自己理解了卻嫌麻煩而沒有敲過一行代碼,結(jié)果過段時間回顧還是不會呢。而且學(xué)習(xí)編程時,即使按照代碼敲一遍,有時也會因為各種原因運行不成功,需要在不斷地排錯中掌握。按菜譜炒菜也會遇到同樣的情況,為什么炒出來的菜不好吃呢?為什么色澤或者品相不好呢?作為一個吃貨,我曾經(jīng)按照不同的菜譜連續(xù)做過很多次肉沫茄子,一直做到了自己滿意為止,并樂此不疲。有了不斷完善的執(zhí)念后,自己在寫代碼時也會樂于不斷重構(gòu)直到寫出優(yōu)雅的代碼。

我的大成之作

加強處理信息的能力

朋友知道了你會做飯,想要嘗下你的手藝,于是需要你張羅出一桌好菜,這時你一定不能像自己平時做菜一樣只做一個菜咯,如何葷素搭配,并在短時間內(nèi)陸續(xù)做好,其實是非常考驗處理信息的能力的。

首先,你需要回顧一下自己的拿手菜,選出一個組合,同時確認家里食材和配料是否足夠。

其次,在開火之前,你需要做好準備工作,菜要洗凈切好,肉要切片或切絲,并用料酒和醬油味上,備好蔥花蒜末等等。

最后,也是最考驗處理信息能力的是如何安排炒菜的順序。是否有些菜需要預(yù)處理一下?比如豆角是需要先用熱水抄一下的。哪些菜步驟多難熟需要先下鍋?哪些菜是可以用同一個鍋炒且不會串味?哪兩個菜可以用兩個鍋同時炒而不會讓自己手忙腳亂?合理的安排調(diào)度順序,適時并行和并發(fā),才能在有限的時間里保證吞吐量,也就是時間一到,三四個菜陸續(xù)好啦。

相信我,在這樣的情景下,你是要處理大量信息的。久而久之,在做飯過程中建立起的思考習(xí)慣,會讓你在面對工作中大量紛雜的信息時受益,合理安排工作計劃在有限的時間里獲得最大的產(chǎn)出和在有限的時間里做出一桌好菜是何其相似呀。

培養(yǎng)創(chuàng)造力

會做飯的人在平時生活中常碰到這樣的場景,打開冰箱,清點下的食材,咦,辣椒一個,胡蘿卜半個,黃瓜一個,還有一片豆干,問晚上吃什么?答,配著剩飯做個五彩什錦炒飯,嘻嘻。

簡單快速還好吃

上述的例子或許有偷懶之嫌,那再舉個例子吧。上個周末,我在做晚飯時開始翻騰冰箱,發(fā)現(xiàn)上次做炸醬面還有沒用完的肉糜,再不吃快壞了,早上買了些茄子,心想要不再來個肉沫茄子?這時恰巧看到中午吃火鍋還剩下一扎粉絲,一絲靈感閃過,肉沫茄子粉絲煲怎么樣?貌似也叫螞蟻上樹。然后就是先查下菜譜,吸取下別人的經(jīng)驗,注意到應(yīng)該先把茄子蒸熟后再下鍋。話說那頓飯做的是非常成功的,可惜吃的太快木有圖。

看到這,你也許會想這和編程有什么關(guān)系?上面示例是為了說明在掌握了一些食材的特性后,如何根據(jù)現(xiàn)實情況解決吃什么這一世紀難題。而作為一名程序員,我們會樂于學(xué)習(xí)別人優(yōu)秀的代碼設(shè)計思想,或者是經(jīng)典的設(shè)計模式,但是如何寫出高質(zhì)量的代碼,就需要深入理解這些知識再根據(jù)情況來創(chuàng)造出自己的解決方案啦。二者的相似的本質(zhì)在于理解概念后,如何在應(yīng)用場景中發(fā)揮創(chuàng)造。這其中的美妙,真的需要一些積累才能體會到。

提高品味和審美能力

程序員里男生居多,在程序里面又講究嚴謹?shù)倪壿嫼痛_定性,于是很容易養(yǎng)成直男的性格。加上男生又大都不愛打扮,各種因素結(jié)合起來程序員給人的印象大多是沒有品味和缺乏審美。

而美食講究的是色香味俱全,下廚多了,一方面是要在味道上精進,另一方面就是要追求品相了。以茼蒿炒雞蛋為例,先將雞蛋攤成餅,切成條后再和茼蒿一起炒,這時雖然雞蛋還是那個雞蛋,但品相明顯有所不同,吃起來的感覺也會有所不同。

茼蒿炒雞蛋

接下去,你可以進而追求擺盤,顏色搭配之類,逐步提高品相的過程其實也是在提高審美能力。審美能力的提高不僅可以改善生活品質(zhì),在工作中也可以體會和捕捉代碼的美感。高質(zhì)量的代碼和優(yōu)秀的軟件設(shè)計是絕對具有美感的。身邊有些同事一直沒辦法區(qū)分什么樣的代碼是高內(nèi)聚低耦合的代碼,也一直沒法寫出高質(zhì)量的代碼,估計是不具備代碼的審美能力吧。


后記

我一直相信某些能力在各種場景中是通用的,身為碼農(nóng)的自己同時也熱愛下廚,深感做飯和編程有相通之處,不知各位看官讀后感覺如何,歡迎討論交流哈。

實踐-如何從零開始

不知道有多少看官讀后想要嘗試做飯的,如果你不知從何開始,請試想達芬奇當年學(xué)畫是從畫雞蛋開始成為一代畫家的,那么你可以從煎雞蛋開始成為一名廚子滴,別笑,我是認真的。因為炒菜的第一步就是控制油溫,煎雞蛋則是最好的練習(xí)方式,如果你能熟練的煎出從五分熟到全熟的成品,相信你已經(jīng)對油溫的控制已經(jīng)非常熟練了。有一種煎雞蛋的方式叫sunny side up,我家喜歡叫它糖心煎蛋,網(wǎng)上還有專門的教程,感興趣的讀者可以嘗試一下。接下來可以嘗試不同的形狀和擺盤,比如煎一個心形的雞蛋,或者用番茄醬點綴畫個笑臉等。通過練習(xí)煎雞蛋入門以后,接下來的路,就任你發(fā)揮啦。

我的大愛,黑椒牛肉
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容