68-「人間」を知る

プログラマが知るべき97のこと」の68個目のエピソードは、コミュニケーションに関する話です。きのこ本に書かれていることのほとんどは「当たり前」の事です。「あたり前」の事なのですが、すべてを実践できているプログラマは中々いないでしょう。きのこ本を読む事で、そのような「当たり前」の事を再認識し、自分で実践していないような箇所を見つめ直すことができます。このエピソードに関しても同様に「当たり前」の事が書かれているのですが、具体的に実践するアプローチについて強く学ぶ事が書かれていました*1
このエピソードで書かれているのはコミュニケーションです。コミュニケーションと言っても「上司と酒を飲みに行く」とか「空気を読んで先に帰らない」とか「くだらないギャグを言うのが得意」いった話ではありません。コミュニケーションとは、人と人との意識の伝達手段です。

つまり、人は、人とともに、そして人の為にソフトウェアを書くというわけです。

ソフトウェア開発では少なくとも2つのコミュニケーションが存在します。1つはチームメンバーであり、もう1つはユーザです*2。それぞれ全く異なる性質の人なので、同じようにコミュニケーションはとれません。プログラマ同士のコミュニケーションは同じような人が相手ですので比較的に簡単に行う事ができます。問題となるのはお互いのスキルが自分の考えを十分に表現できるレベルにあることでしょう。しかし、このエピソードでは、ユーザとのコミュニケーションでは、特にプログラマは論理的にカテゴライズしながら整理していく方法を自然に行う方法(カテゴライズ)が原因で失敗するという説が紹介されています。

私たちの思想、世界観には、いまだにアリストテレスの影響が強く残っています。アリストテレスのように物事を分類して考える習慣がいまだに残っているのです。
(中略)
人間は、「例」に基づいて物事を理解します。
(中略)
アリストテレス的」な答えを求めている限り、私たちはユーザに対して、妥当な問を発することができないのです。ユーザの物の捉え方と相容れないからです。そのため、共通理解を得るのに大変な苦労を強いられることになります。

この考え方はちょっと意外でしたが、人間は論理的なカテゴライズではなく経験による共通認識(ナチュラルカテゴリ−)をベースに物事を理解しているという主張を読んで納得しました。本文にも書かれているように、「プロトタイプ」や「モック」を使ってのユーザとのコミュニケーションは非常に重要です。この点は自分も強く認識していましたが、それでもモックを提示した上でカテゴライズしようという思考で設計をしていました。勿論、ソフトウェアとして構成していくにはどこかでカテゴライズは必須ですが、ユーザとのコミュニケーションを行う時に頭を切り換えるようなアプローチをすれば、より「プロトタイプ」や「モック」の効果が高まるのでしょう。今後、実践していきたい方法です。

プログラマが知るべき97のこと

プログラマが知るべき97のこと

*1:人によっては「当たり前」かと思います

*2:その上にチーム外の上司とか元請けの人とかまで必要になるケースがありますが…