はじめに
エンジニアとのコミュニケーションで気をつけるべき2つのこと
エンジニアの「できる・できない」を2種類に分けて考える
実際に仕事をしている現場では、「これってできますか?」というざっくばらんな質問をされることがよくあります。答え方にいつも苦労するのですが、私の場合は常に2つの返答を意識しています。
それは、
・「技術的にできる・できない」という観点からの返答
・「現実的に(事業として)できる・できない」という観点からの返答
の2つです。
前者について、よほど突拍子もないオーダーでなければ、エンジニアはだいたいのことを技術的に実現できます。
そのため、前者への回答は通常「できます」となるのですが、多くの非エンジニアの方は「技術的にできる」という返答を、後者の観点で受け取めがちです。実際のところ、非エンジニアとエンジニアにおけるミスコミュニケーションの発生源の多くが、ここにあります。
実際の仕事の現場では、後者の観点から「現実的に(事業として)できる・できない」というところが重要になりますよね?上記ではあえて「現実的に」という曖昧なことばを用いたのですが、実際の現場においては、
・ビジネスとして費用対効果があるかどうか、という意味での「できる・できない」
について、相互理解を握れていないと、仕事としては良い結果が生まれません。
そのため、エンジニアとの会話において、特定の機能ができるかできないか、をきちんと議論する際には、「ビジネスのゴールがどこにあるのか、そのためなぜそれが必要なのか」という観点をきちんとエンジニアに伝え、エンジニア側に「技術的なできる」ではなく「現実的に事業としてできる・できない」の視座に立って話せる前提条件を提供することが大切です。
多くの非エンジニアの人が、このあたりのビジネス的な目的の話を抜いてエンジニアに話をしてしまいがちです。また、日本の場合特にですが、エンジニア自身もそのあたりのヒアリングがあまり上手ではありません。
エンジニアの話が「現実的な事業としてできる・できない」の視座からの話となっているのか、を常に意識し、エンジニアが事業的観点から話すための充分な情報共有を行うことで、議論のレイヤーをあわせておくことが大切です。
エンジニアの「職人的エゴ」を理解しよう
また、エンジニアは「魔術師」というよりは「職人」という気質を持っていく職業であることを理解しておきましょう。
優秀なエンジニアほど、自身が作り上げるプロダクトの細部へのこだわりを捨てません。それはビール工場の職人や鍛冶屋の職人と同様なのです。
そして、職人気質が強いエンジニアは、優秀であるがゆえにこそある種の技術的なこだわりをきちんと持っています。ときには学術的な、哲学的な、歴史的な深みを持った思想を持って仕事をするようなエンジニアも居ます。
しかし、状況次第では、職人的なこだわりはビジネスの現場において非効率な余剰タスク・余剰コストとなることが充分にあり得ます。
たとえば、エンジニアの「職人的なエゴ」の事例をあげると、
・ユニットテストのテストカバレッジを○○%以上にキープしたい
・現状でユーザ観点ではシステムは動いているが、✗✗な理由でどうしてもリファクタリングを「今」しておきたい
・開発フローを、もっと理想的なTDD(Test Driven Development)で進めたい
などですが……専門用語ばかりでよくわからないですよね(苦笑)。ここではひとつひとつの意味を深く追求しなくても大丈夫です。
実際にエンジニアと仕事を行うと「そのこだわりは必要なの?」と思うシーンもあるでしょう。そして、一見ムダにも思えるエンジニアの職人的なこだわりは、長期的観点から有用になるが、短期的観点からはコストになる、という判断に難しいものであることがよくあります。
エンジニア自身が「職人的エゴに拘らない落とし所」を理解・提案できるように、エンジニアに対して「ビジネスとして現在満たしたいゴール」をきちんと伝えるようにして見て頂けると良いな、と思います。
他方で、エンジニア側にビジネスマインドが足りない場合には、ビジネスサイド側から少しエンジニアの言語を理解し、彼らのこだわりが何で、そこになぜこだわっているのかを聞いてあげることも大切です。
そうすることで、エンジニアサイドの考え方や世界観を知ることができますし、そこで生まれた「一歩踏み込んだコミュニケーション」が信頼関係を深め、次の仕事でのコミュニケーションをよりよいものにできるかと思います。