48-いろいろな言葉を学ぶ

プログラマが知るべき97のこと」の48個目のエピソードは、コミュニケーションに関する話です。エピソードのタイトルになっている「言葉」にはプログラミング言語も含みます。プログラマはコンピュータと対話する職業である以上は、コンピュータと対話するための言語、つまりプログラミング言語を習得することは大切なことです。そして、1つの言語ではなく幾つかの言語を習得し、よりコンピュータと密なコミュニケーションが取れることはより望ましいことです。複数の言語を習得した方が良いという話題は、43-プログラミング言語は複数習得すべきなどでも語られている重要な事です。このエピソードでは、プログラミング言語を習得する事に加えてプログラマが習得すべきコミュニケーション能力について記述されています。
1つ目は、プログラマ間のコミュニケーションに関してです。ほとんどのプログラマは1人ではなく複数のメンバーでプログラムを行います。したがって、チーム内でコミュニケーションが発生しないことはまずありません。例えば、設計の話、使用に関する認識の話、テスト方針の話、不具合の話などチーム内で意識を合わせていく事はソフトウェア開発では最も重要で最も難しい部分です。そこにはプログラミングのスキルだけでなくUMLデザインパターンなどの特有の「言葉」があり、抽象的概念をコミュケーションを成り立たせています。
2つ目は、QA・セールス・マーケティングといったプログラマとは違うレイヤーの開発者とのコミュニケーションです。彼らはプログラマではありませんので、プログラマの「言葉」をそのまま使ってしまっては会話が成り立たないでしょう。彼らの立場に立ち、可能な限り彼らの「言葉」を使ってコミュニケーションをする必要があります。勿論、共に開発を行っているのですから、彼らもまたプログラマの「言葉」を使えるような努力は必要でしょう。
最後は、顧客などドメインの違う相手とのコミュニケーションです。彼らは開発者ですらありませんから、彼らのドメインの「言葉」をどれだけ知っているかはコミュニケーションを行う為に必要不可欠な要素です。プロジェクトの全員が専門家になる事は難しいでしょうが、何人かは顧客の言葉を聞き話す事ができる必要があります。ただ、顧客のドメインに詳しい開発者はそれが強みである一方で、他のドメインの仕事につくことが難しくなる事もあるのが難しい所です。
ここ1−2年の間で、このエピソードに関係する事について多くのことを学びました。プログラマ以外の人と話すときの「言葉」が重要な事は何回も実感しています。例えば、セールスやマーケティングの立場の人との会話では、プログラマの視点だけでは論点がずれてしまいます。少しでもお互いに「言葉」を理解する事で、ずっとコミュニケーションがやりやすくなることを知りました。また、プログラマ間のコミュニケーションについて、よくコミュニケーション能力不足が原因と言われます。しかし、自分は疑問を感じていました。そもそもソフトウェア開発のチーム内コミュニケーションは難しいものです。自分で理解できる事と、それを表現できることでは求められる理解度に大きな差があります。さらに問題なのは、どれだけ伝えたとしても、理解しようとしない人には永遠に理解して貰えないのです。つまり、チーム内でのコミュニケーションが円滑に行えるためには、チームのメンバーが一定のレベルでスキルを有している事が前提となっているのです。そこにコミュニケーション能力という不可解な能力などは存在せず、存在するのは理解力と表現力というスキルです。
幸いな事にこれらの「言葉」は努力すれば習得する事ができます。努力しようとすれば、かならずあなたの仲間の誰かはしっかりとあなたに教えてくれる師匠になるはずです。コミュニケーション能力とかいうインチキ能力に惑わされず、地に足を付けて地道に「言葉」を学びましょう。

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

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