【コラム】エンジニアと非エンジニアのコミュニケーションは難しい




こんにちは、普段はサーバーサイド、フロントサイド、データ分析、機械学習を扱っております。最近、社内から新しい相談を受けることがありまして、非エンジニアのマネージャーなどと話す機会があったのですが、あらためてエンジニアと非エンジニアのコミュニケーションは難しいなと思ったという話です。

今回は、主にデータ分析・機械学習のプロジェクトに関する話をしていきます。

ひとりで思考する時間は重要だ

他の部署の方からデータ分析やウェブツールについて相談を受けるときは、対面で課題をヒアリングすることが多いかと思いますが、その場でプロジェクトの進め方を詳細まで答えるのはなかなか難しいです。

経験豊富なエンジニアであれば、これまで経験したパターンと照らし合わせてある程度の見通しが立つとは思いますが、僕のように若手であり頭を使ってゼロから考えなければいけない場合は、情報収集をしながら、ひとりで考える時間が必要になるからです。

非エンジニアの方とスムーズにコミュニケーションするには、まず自分の考えをまとめなければいけません。その後に適切な言語化が必要になります。

そこで実践しているのが、課題のヒアリングが一通り終わったら、プロジェクトの進め方や分析の方法について、ひとりで考える時間をもらうというものです。もちろん、せっかく対面で会っているのだからなるべく分かることはその場で答えますが、細かいところまで考えるにはひとりの時間を使う必要があります

あくまで「提案」という姿勢でコミュニケーションをとる

プロジェクトの進め方などの段取りがおおよそ決まってきたら、「提案」という姿勢でコミュニケーションを取るのが大切です。当然ですが、現場にいないエンジニアが考えたプロジェクトの進め方は、現場に適していないものである可能性が含まれているのです。

また、現場に対するリスペクトを大切にすることで、お互いに気持ちよく働けるようになります。結局マネージャーやエンジニアがいくらがんばったところで、現場の人が動いてくれないと何も変えることはできないのです。現場を大事にする意識は、エンジニア内の組織ももちろん、会社など組織全体で持つべきだと考えています。

そのリスペクトを伝えるためにも、相手に質問を投げかけることが重要で「〜が良いと思いますが、どう思われますか?」といったようにオープンクエスチョンで聞くことが大切です。ちょっとこぼれでた情報が、実はプロジェクトにとって重要なポイントになるということも十分にありえるからです。

「〜が良いと思いますが、これでいいですか?」というクローズドクエスチョンだと、イエスかノーという二者択一の返事になってしまいますし、脳内にある情報を発散してもらえません。そのため、営業を行っているという意識で「提案する」ということが重要になってきます。

専門用語の扱いはやはり難しい

エンジニアは専門職ですので、専門用語が大量にでてきます。PHP、Python、UI、フレームワーク、機械学習、決定係数、インタラクティブ、ニューラルネットワーク、勾配降下法…そういった専門用語は、知らないという前提ですすめるのが良いのです。

そこでとる一つの選択肢は「専門用語を使わない」というものなんですが、そのさじ加減にいつも悩んでいます。専門用語を使わずに簡略化した表現をしてしまうと、思わぬ認識の違いが生まれることが多々あるのです。

特に、データ分析/データサイエンスは、この認識の違いについて強く警戒しなければいけません。分析結果が事業としてのの意思決定に影響を及ぼすからです。

例えば「過去のデータからモデルを作って予測した結果、誤差が5%に減った」という際に、

  • どのデータと比較して?
  • サンプル数は?
  • 信頼性は?
  • 再現性は?

など補足すべき情報はたくさんあります。しかし、これらの情報をすべて伝えたとすると、分析結果や予測モデルをどのように活用すれば良いのかわからないというジレンマが発生します。

意思決定の材料とするには、なるべくシンプルにレポーティングするのが良いのですが、シンプルにしすぎてしまうと、まだ不確定要因がある分析結果を過信してしまうことにもつながりかねません。

伝えるべき情報と、それをどのような言葉で伝えるかは繊細な問題です。そのため、十分にひとりで考える時間を確保してからミーティングに臨まなければいけません。

データビジュアライゼーションを活用できるか

そこで非エンジニアとコミュニケーションする上でデータビジュアライゼーションというものがひとつ使えそうです。ようするにグラフを作るなど、データそのものやデータ分析結果をビジュアルにして表現するというものです。

数値の羅列を見ても人間の脳は解釈しきれないので、グラフなどのビジュアルで相手に伝えるというのが大切になってくるのです。実はデータ分析エンジニアといっても、中小企業で働いているなど分業があまりされていないと、デザインを活用してコミュニケーションを取れるかどうかが、人材としての価値に直結してきます。

分業が進んでいる場合は、

  1. 機械学習・数学をやる人
  2. データ収集基盤をつくるIT担当の人
  3. アナリティクス+レポーティング+コンサル

というようにある程度分業化されているのですが、そうでない場合はすべてのフェーズのスキルが大切になってきます。

さいわい、Pythonで機械学習を行う場合はそのままmatplotlibやseabornといったビジュアライズのライブラリが存在するので、自分で0からデザインをする必要はありません。とはいえ、どのようなデータを、どのような配色で、どんな目的でビジュアルにするのかは、ひとつひとつ考えていかなければいけないのです。

まとめ

非エンジニアの方とコミュニケーションを取るのはやはり難しいです。専門用語を使うと混乱されるけど、使わないと勘違いされる…そんなジレンマに苦しんでいる人は多いはず。

しかしだからこそ、ここに他の人との差別化ポイントがありそうだなと思いました。データ分析とデザインは、一見するとサイエンスとデザインという違う領域のものにみえますが、組み合わせることで事業の意思決定に対する強力なパワーを発揮します。

あらゆるものがライブラリ化されてひとりで出来る領域が増えていく時代だからこそ、一人あたりの担当領域は広がっていきます。だから、さまざまな領域に挑戦することが大切であると思うのです。