こんなツイートを見かけました。
プログラミング的思考ってこれだよね?
— てとろでP (@beamtetrode350b) 2021年6月21日
ある妻がプログラマの夫に「買い物にいって牛乳を1つ買ってきてちょうだい。卵があったら6つお願い」と言った。
夫はしばらくして、牛乳を6パック買ってきた。
妻は聞いた「なんで牛乳を6パックも買ってきたのよ!」
夫いわく「だって、卵があったから……」
これ、実は10年ほども前に流行った海外のジョークらしい。
で、
例えば先ほどのツイートのリプライやこのジョークを扱ったIT系のサイトの記述などをつらつらと眺めてみたのだけれど、
・これは開発の要件定義に当たる作業を間違ったのだ。
・奥さんの指示の出し方が、記述として不完全だ。
・if~thenの構文構造から考えれば夫の行動は正しい
等々、いわゆる開発/プログラミング系のノウハウで評価しようとするものばかり。
でもね、これはITの話なんかじゃない。
言語には、大きく分けて2種類ある。
<以下Wikiから部分抜粋>
自然言語とは、人間が意思疎通のために日常的に用いる言語であり、文化的背景を持っておのずから発展してきた言語。
対義語は「人工言語」「形式言語」、すなわちプログラミング言語や論理式など。
奥さんは、日常会話であるから普通に「自然言語」で夫に話しかけた。
しかし夫は、それを「形式言語」であるプログラミング言語で解釈した。
問題点は、この一点のみ。
つまり
「夫が状況に合っていない言語を使ったから、間違った結果になった。」
という「言語の種類と適用状況のミスマッチ」だけです。
要件定義だのプログラミングだのの話になった時点で、
「夫と同じ」
であります。
プログラマーさん。
あなたが話してる相手はヒトであってコンピュータじゃない。
そしてヒトが日常生活で使うのは、自然言語です。
自然言語には曖昧さや揺らぎがあるわけで、だからこそ自分の理解と相手の理解が合ってるかどうかの確認が大事になる。
そこに形式言語的(プログラミング言語的)思考を持ち込んだらアカンのよ。
相手の日常言語に対して「それは構文エラーだ!」と指摘するのは
「私は状況判断能力ゼロです」と宣言するのに等しいのよ。
と言うことを職場で言うと喧嘩になるから言わないんだけどね(笑)
追記
「ジョークなんだからさー、マジレスとかしてんじゃねーよ。」
と言われる方がいるのは分かった上で書いてるんですが、
それは
「奥さんの言い方が論理的に不完全だからだ!」
とマジで言ってる方が(リアルなIT現場でも)多いと感じているからです。
ていうか、それくらい分かれな。