プログラマのためのコミュニケーション入門

社内LTで話したネタ。

プログラマはコミュニケーションが苦手という人が割と多いと思いますが、仕事を円滑に進めていく上で必要となるコミュニケーションのポイントをまとめました。

Level.0 知らないことを知らないと言う

知らないことを知らないと言うことは仕事を進める上で非常に大事なことなのですが、特に未熟なプログラマほどこれが出来ないケースが多いです。プログラマであっても専門分野のすべてを知っているわけではないので、知らないことがあるのは恥ずかしいことでもなんでもないんですけどね…。

Level.1 "自分が知っていること"を知らない人間を馬鹿にしない

これやられると知らないことを知らないと言えない文化が出来上がるので、こういう行為は全力で排除しないといけない。特に非プログラマのIT知識はプログラマが思うよりずっと低いのでつい馬鹿にしがち。非プログラマのステークホルダーに知ったかぶられるときのダメージは計り知れないので絶対にやってはいけない。

Level.2 相手の言葉を使う

Scala の勉強会とかでよく、「これはHaskellで言うところのxxx」的な説明をする人がいますが、その説明は最悪だよねってことです。(Scala界隈の人がネタとしてやってるのはわかってます念のためw)
(相手がHaskellerの場合はもちろん問題ないです)

非プログラマにとってはHTTPサーバもアプリケーションサーバも物理サーバも仮想サーバも等しく「サーバ」です。つまり apache をリスタートするのも電源落として入れ直すのも「サーバ再起動」です。専門用語を使いまくると「難しいこと言って煙に巻こうとしている」としか思われないので相手にわかる言葉を喋りましょう。

Level.3 厳密さより伝わることを大事にする

これはある程度技術力のあるプログラマに多い印象。 きちんと相手に説明しようとして、非常に論理的で且つ正確に説明しているんですが、扱っている問題が難しすぎて相手の理解が追いつかないケースです。

プログラマ同士であっても専門分野が違えば詳細を完全に理解するのは困難ですし、相手が非プログラマになればなおさらです。全てを理解してもらうのではなく、相手に知っておいてほしいことをまず伝えましょう。

Level.4 ポジティブにできないと言う

プログラマであれば日々無理なことを要求されていると思いますが、無理なことを無理と言うだけだと「あいつはやる気がない」というレッテルを貼られて非常に仕事しづらい状況になります。 とはいえ無理なものは無理なので、無理なときは妥協案を提案するのが良いです。

ちなみに体育会系相手であれば、「がんばります」が汎用性高くて良いです。彼らはやる前から無理って言う人間は大嫌いですが、がんばった結果無理だったら責めないので。

Level.5 なるべく相手の近くで話す

コミュニケーションの基本はやはり対面です。プログラマはみんなチャットツールやメールが大好きだと思いますが、特に自分が何かしらの失敗をしたときは対面でコミュニケーションした方がいいです。物理的に対面が無理なら電話や音声チャットを使いましょう。

仕事がうまくいってるときはチャットでさらっとで問題ないですが、下手こいたときは対面で何が起こっているのかをきちんと共有しましょう。人間は弱みを見せる人を信頼するので、失敗したときに対面コミュニケーションをとっていると自然と信頼が集まります。信頼されていると自分の意見が通りやすかったり、いろいろと仕事が進めやすくなります。

「今対面コミュニケーションはハードル高いな」と思ったときが対面コミュニケーションのタイミングです。チャットに逃げちゃダメ。

さいごに

一番大事なことは敬意を払うことです。コンピュータは100%自分の言うことを聞いてくれますが、人間はほとんど言うことを聞いてくれません。僕らプログラマはコンピュータ相手に慣れきっているので、人間相手のコミュニケーションを忘れがちになります。相手への敬意を忘れないようにしましょう。