こんにちは。Milkです。
今回は、ちょっとした笑い話のなぞなぞ。
私の大好きなお話で、以下のようなものがあります。
ある妻がプログラマの夫に「買い物にいって牛乳を1つ買ってきてちょうだい。卵があったら6つお願い」と言った。
夫はしばらくして、牛乳を6パック買ってきた。
妻は聞いた「なんで牛乳を6パックも買ってきたのよ!」
夫いわく「だって、卵があったから……」
参照:「プログラマにお使いを頼んだら……」ジョークが海外の掲示板で人気 - DNA
なぜ、夫は牛乳を6パックも買ってきてしまったのでしょう?!
プログラマの思考

もし、こんな買い物をしてきたら、奥さんはカンカンに怒りますよね(笑)
なんで牛乳を6パックも買ってくるのよ!
これは、プログラマの悲しき職業病なのです。
コーディングは条件が大事
システムを作る上で、必要なこと。
それは、条件。
つまりですね。
「こういう時は、このような動きをする。」という条件が大事になってくるのです。
例えば、皆さんがソフト(アプリ)を使う時にもこのようなものは多く存在しています。
- このボタンを押すと、次の画面に進む。
- このキーを押すと、文字が表示される。
などなど、システムはほぼこの「こういう時は、このような動きをする」の集まりなのです。
それを順番につなぎ合わせていっても同様です。
- Aと言う計算が終わったら、Bと言う計算を行う。
- Bと言う計算が終わったら、画面に結果を表示する。
この観点から、もう一度最初の問題を見てみましょう。
条件は卵
奥さんはあくまでも、「卵があったら6つお願い=卵があったら卵を6つ買ってきて。」という意味で話をしています。
しかし、夫はその場で違う解釈を始めます。
最初に「牛乳パックを1つ買ってくる。」と言われています。
次に、「卵があったら6つお願い。」と言われました。
つまり、夫は頭の中で「牛乳パックは1つ買ってくる。しかし、卵があったら、牛乳パックを6つ買ってくる。」と理解しました。
「卵がある時は、牛乳パックを6つ買ってくる」
だから、それを忠実に実行したのです。
あぁ・・・なんて悲しき職業病・・・(笑)
現実にこれは発生する
これはジョークなので、「あははww なんてバカなことをしてるんだww」で終わるんです。
しかしながら、現実で起きるので怖い・・・
私達、システムエンジニア(SE)は設計書を書きます。
この時はこのように動作する。そして、この計算を行う。
そんなことをつらつらと書き連ねていくのです。
ですが、時に「これは常識だろう」って思って、文章がいかようにもとれる内容になってしまうことがあるのです。
先程の、「卵条件」と同じです。
牛乳パックなんて6つも必要ない。だから理解できるだろう。
そんなことをすると、プログラマは「これは・・・卵は条件なのか?」と理解が出来なくなる時が出てきます。
それにより、牛乳をたくさん購入するようなシステムが出来上がるのです。
ですから、設計者は面倒なのですが、「牛乳パックは1つ買ってくる。卵は存在すれば卵を6つ買ってくる。」と書かなければなりません。
プログラマがどのように認識してコーディングしてしまうかは分からず、思ってもない形に出来上がることがあるからです。
図解をしてみたり、文章に条件を書き連ねたり、様々な手法をとりながら「設計とコーディングの齟齬」が発生しないように調整を重ねます。
最後に

これね。日本人同士ならまだなんとかなるんですよ(笑)
外国人を相手にすると、更に大変なことになります。
時々、「なんだこりゃ!全然おもってたのとちゃうやんけ!」ってのがあるんだなぁ・・・(遠い目
本当に細かい内容まで、相手と詰めていかないと、牛乳だらけになりますww
いやいや。笑い事じゃないんだって!
コーディングの工程は順調?
とメールをして、大概は
外国人「OK。問題なし。」
と返答が来ます。
信じて、こっちはこっちで別の作業をしていて、いざプログラムとご対面!となると・・・
なにこれww
モウナニモ、シンジラレナイ。
ってことになったりするんすよ。
だから、定期的にコミュニケーションをとり、密な関係を維持するのが大事。
ジョークがジョークで終わらなくなるときがあるんだよなぁ・・・いやはや・・・
そんな世界もあるのです(;・∀・)
さて、今回はこの辺で。
adios!!