エンジニア(ここではウェブ開発エンジニアを指します)といえば、パソコンと向き合っている時間が多く、あまりコミュ力が必要ではないと思われがちです。しかし他のサイトにも書かれていますが、仕事内容によってはコミュニュケーションの重要度が高いものもあります。
そこでこの記事では、エンジニアがどのような仕事をするときに、どのようなコミュ力が必要になるのかを現役エンジニアとして書き下していこうと思います。
目次
ウェブ開発の流れ
ウェブ開発は、おおまかに3つの段階を踏みます。段階ごとに発生するコミュニケーションの性質が異なるので、それぞれ見ていきます。
上記では目安としてUI/UXデザイン、SE、エンジニアの担当範囲を書きました。しかし、現場によって誰がどこまで担当するかは異なっているのが現状です。僕のチームは少人数のため、全行程をひとりで担当しています。
仕事内容ごとのコミュニケーション
要件定義
要件定義フェーズでは、顧客とのコミュニケーションが主になってきます。
この段階では、
- 解決すべき課題はなにか
- そのためには何が実現できればいいか
を顧客と開発側で意志共有します。
例えば、「営業の進捗共有を対面で行っているため、コミュニケーションコストがかかりすぎている」という課題に対して、「進捗ツールを開発するとともに、進捗情報をウェブシステム上で更新していく業務フローに変更する」ことを実現しよう、などと決めていく訳です。
この段階で行うコミュニケーションは、営業と似た性質を持ち難易度が高めです。
必要なコミュニケーション能力
- 顧客に対する好奇心
- 地頭(会話のレスポンスの早さ)
- 分かりやすく言い換える能力
相手に対する好奇心について。この段階では顧客の本質的な課題を発見することが、最も重要になります。実は顧客が課題だと思っていたことが、本質的な課題では無いということはよくあることです。
それに、課題を解決するためには、ウェブなどのITを使うよりも、業務プロセスを少し変更することで十分だということも起こりえます。そのため、顧客がどのような背景で何に困っているのか、最終的にゴールにしていることはなにかということを理解するための好奇心が必要になります。
次に地頭について。顧客の課題を理解するためにはヒアリングがとても重要になりますが、そのときに会話のテンポがずれると気持ちよく話してもらえません。そのため、相手の質問や言動に対してすばやくレスポンスが出来る地頭の良さは一定程度求められます。
もちろん、すべての質問に対して的確に答えられないこともあるでしょう。そのようなときは「すぐに答えられないので、後ほど回答いたします」とでも言えば良いのです。コミュニケーション能力ではないので書きませんでしたが、レスの早さには「正直さ」も重要なファクターになります。
つまり、分からないことを分からないとすぐに言えるかどうか。見栄をはってその場で考えようとすると、テンポが落ちます。その場ですぐに答えられないのであれば、「すぐにはわからないので時間をください」と正直に言うことで会話のスピードが上がるし、実は顧客からの信頼が得られます。
最後に分かりやすく言い換える能力について。ITは専門職ですから、専門用語のオンパレードです。クラウド、データベース、アジャイル、JavaScript、といった言葉を顧客に分かりやすく伝える能力は重要なポイントになります。
システム設計・画面開発
この段階では、開発チーム内のコミュニケーションが多くなってきます。
システム設計・画面開発では、
- どのようなシステム仕様にするか
- どのような画面にするか
といった具体的な話に進んでいきます。システム仕様とは、どのDBを使うか(MySQ?LpostgreSQL?NoSQL?)、ウェブサーバのスペックはどうするか、といったシステムの構成について決めていきます。
どのような画面にするかでは、ウェブサイトのカラーパターン(ベースカラー、サブカラー、アクセントカラー)や画面遷移の仕方などを決めていきます。
どちらも開発チーム内で共有して確認したあとに、顧客に説明して意思決定を行います。顧客への説明はUI/UXデザイン担当や営業が行うことが多いですが、設計者も会議に同席することがあります。
必要なコミュニケーション能力
- システム構造を分かりやすく表現する能力
- 進捗状況をこまめに報告する能力
システム設計・画面設計のフェーズでは、当然ながらモノ自体は出来ていません。そのため、プロトタイプを作成したり、あるいは表や図などを活用してシステムや画面の設計を分かりやすく伝える能力が必要になります。
また、要件定義フェーズが終わって設計がはじまった段階で、プロジェクトのスケジュールが決まっていることが多いです。そのため、ここからは進捗状況を細かく開発チーム内で共有する必要が出てきます。
実装
この段階では、いわゆる「プログラミング」を行います。前の段階「システム設計・画面設計」で決まった構成やアルゴリズムを実際のプログラミング言語に変換していきます。
このプログラミング、コミュ力は必要ない!と思われがちですが、そんなことはありません。最近流行りのアジャイル開発では特にコミュニケーションの頻度が重視されます。
必要なコミュニケーション能力
- 進捗状況を、的確に頻度高く報告する能力
- 自分の意見を主張する能力
進捗状況の報告をしっかりと行うことは前にも述べたとおりです。そしてまた、プログラミングの実装段階になると、設計時には想定していなかったことが発生する場合もあります。
例えば「暗号化はしなくていいんだっけ?」といったシステム設計の見落としや、「PHPだと計算に時間がかかりすぎる」といった実装して初めて気がつく問題点です。
意識が低いエンジニアの人は「とりあえず要件通りにつくっておけばお金はいるからこのままでいいか」と言われたままに作るのですが、そのような人は顧客から信頼を得ることが出来ないですし、次の発注は無いでしょう。
もちろん、提供した価値の分のリターン(=お金)を得ることは前提ですが、実装段階ではじめて気がついたことをこまめに報告し、自分の意見(こういう実装にしたほうがパフォーマンスが上がるなど)を発信する力は重要です。
また、プログラミング段階ではフロントエンドエンジニア(画面設計)とサーバサイドエンジニア(システム設計・ビジネスロジック)の担当に分かれることが多いです。これらは役割分担されているものの、サーバーサイドで計算した結果をフロントエンドに送信して利用するといったように、深く連携しておりもはや不可分となっています。
そのため、プログラミングしかしないという場合であっても、コミュニケーションを行う必要は出てきます。システム開発とは、サッカーでチーム内のフォーメーションが臨機応変に変えるような動きが求められるのです。
価値のあるエンジニアとは?
すでに何年か前から言われ始めていることですが、エンジニアの仕事は下流の方からAIやプラットフォームに吸収されていきます。つまり結論から言えば、エンジニアはなるべく上流から関わったほうが良いということです。
例えばブログを書くためにWordpressというCMS(Contents Management System)が有名ですが、テンプレートを購入すれば、自分でプログラミングを行うこと無くブログを運用することができます。
プログラミングというのはルールが決まっていますから、プラットフォームにしやすく、他にも「ぺらいち」と言われるサービスや「Wix」などのCMSが浸透し始めています。
そして、上流に行くと「顧客の課題はなにか」「それを解決するために最善の方法はなにか」といったデザイナーの仕事と同じ部分が非常に多くなってきます。
そう、エンジニアはテクノロジーの発展によってデザイナーとの区別がつかなくなってきているのです。そのため、顧客の行動を観察し、本当の課題を抽出して、それを解決するためのプロダクトをデザインできるエンジニア、ましてやそれを自分で実装できるエンジニアは高い価値を持つことになります。
コミュニケーションの難易度で言えば、たしかにプログラミングをするだけのエンジニアは比較的低くても大丈夫かもしれませんが、人材としての価値はどうかといえば、やはりコミュニケーション能力はあるに越したことはありません。
ここで求められるコミュニケーション能力とは、酒を飲んでバカみたいに騒いでうわべの”オトモダチ”や”ジンミャク”を作ることではなく、本質を見極めるために適切な質問をすることや、正直さを言葉に乗せるということです。
これらは内向的な正確であっても十分発揮できる力であると思います。コミュニケーションが苦手なエンジニアも多い(僕も含めて)と思いますが、場数を踏むことで慣れてくる側面もあるので、上流に関われる環境やチャンスは思う存分活かしたいと思っています。