こんにちは、こやぷよ(@coyapuyo)です。
最近、「プログラミングは料理と似ている」という表現を風の噂で聞きました。
僕は料理は全く出来ないのですが、
一応ちょこっとはプログラミングをしていたこともある立場から思うに
「なるほど納得」といった感じです。
という訳で、僕個人が思う両者の似ている点について書いてみたいと思います。
似てる1)材料を組み合わせて最終形にする
料理は、材料を集めてきてそれを組み合わせて形にします。
いかに組み合わせるか、というところに、妙があって、
その過程でアレンジや加工をしていきますよね。
プログラミングも、用意されている命令は基本的なものばかりです。
それらの基本的なものを組み合わせると、究極的にはどんな複雑なことも出来ると、一応は言われています。
似てる2)同じ物を作るのでも作り方は一つではない
材料は同じでも、組み合わせ方や使い方の組み合わせは膨大で全然違うものが出来上がることもあります。
あるいは、ゴールとして同じ肉じゃがを目指して作っても、家庭ごとに味が違ってきたりもしますよね。
プログラミングも同じです。
同じような機能を持たシステムを作ったとしても、プロジェクト、メンバー、会社によって出来上がって来るものは違います。
似てる3)料理は手際、プログラムも手際
「料理は手際」なんて言葉を聞いたことがあります。
○○を火にかけている間に、××を切っておくとか。
色々と準備を無駄なく進めていく必要がありますよね。
プログラミングも同じで、
プログラマーはとにかく効率重視で手際よく作れるかが勝負です。
手際よく作れる、ということには、
似たような処理や役割は集約して使いまわす、とか
後から変更があっても直しやすい作りにしておく、とか
そんなことを含みます。
似てる4)どこからが料理で、どこからがプログラマーか
そして効率を追い求める結果、
料理界では「○○の素」的なものが登場します。
プログラミング界にも、「モジュール化」とか「ライブラリ」が登場してきます。
決まり切った部分については、最初から塊として作っておいて、似たようなことをするときに使いまわそう、という話ですね。
こういった「すでに作られたモノ」を使えば、完成させるのがとても簡単になります。
料理人、プログラマーと言ってもピンキリです。
「○○の素」でしか料理が出来ない人を料理人と言ってもいいのか、
ゼロから作れないといけないのか、
「○○の素」と「○○の素」を組み合わせてさらに凄いことが出来る人なら料理人と呼べるのか、
定義の難しいところですね。
最近は、「料理出来ます」というのも「どの程度?」ってなりますよね。
プログラマーも全く同じです。
用意されたライブラリをちょこっと使えるだけの人もいれば、
自由自在に使いこなす人もいますね。
このあたりになってくると、両者共に「センス」みたなものの差が露骨に表れてくる世界だと思います。
といった風に、ピンキリ具合が激しいのも似ている気がします。
似てる5)料理の立ち位置と、プログラミングの立ち位置
そんなピンキリな両者ですが、
なんとなくピンキリの分布具合が似ている気がします。
(全く統計を取らずに適当に言っています、気のせいかも?)
全くできない人
あるものを使えばちょっとだけ出来る人
それなりに出来る人
物凄く出来る人
そして、
料理は出来なくても外食やレトルトでも生きていけます。
プログラミングは出来なくてもサービスやシステムは使えます。
でも!
料理が出来ると、自分の好きなおいしいものが食べれて人生をちょっと豊かにします。
プログラミングが出来ると、自分で困ったことをプログラミングで解決したりして人生をちょっと豊かにします。
(現代日本では)なくても良いけど、あると豊かになり、そしてその差が激しい、という点においてなんだか似ているなぁと感じます。
最後に
似てる似ていないは、見方の主観がある程度入ってくるでしょう。
個人的に「なるほど似てるかも」と思って書き始めたんですが、
書いてるウチに「あれ?これ別に他の物事でも言える(似てる)んじゃないか?」と思ってきてしまいました。
手際が命のものなんて、他にも腐るほどあるような気がしますし。
何かまとまらなくなってしまいましたね。
さあ、皆さんが似ていると思うものは何かありますか?
ではでは。
コメント