お客さんがエンジニアに求めているのは技術力ではなく「実現力」
昨日、徹夜で現場作業・健康ランドなどでご一緒した方と、車で都内に戻る際に話していた内容なのですが、「プログラマーって、技術力が高い人、あるいは、知識が豊富な人ってたくさんいる気がするけど、本当に作り上げてくれる人がすくないよね」という話になりました。
その方とは、昨年から一緒にある製品の開発を進めてきて、全国を回りながらお客さんに評価していただき、また改良して、という感じに仕事をご一緒してきました。その方の勤務先にも、ソフト開発チームがありますし、私もよく知っていますが、レベルが高い方もたくさんいます。でも、社外の私に、「一緒に開発しませんか?」と声をかけてくださったのです。その理由は、社内のプログラマーに「こんなものを作れないかなぁ?」と相談しても、「仕様を決めてくれたら作ります」「プロジェクトとして立ち上げてくれたら・・・」というような返事がくるという感じでした。
製品開発では、最初から仕様がきっちり決まっていることは希ですし、そもそも作ってみて、ある程度目処がついた状態になってみなければ、製品化して本当にビジネスになるかどうかもわからない場合がほとんどです。それは製品開発ではなく製品企画の段階だ、ということかもしれませんが、いずれにしてもプロトタイプを作ったりして、お客さん(ユーザさん)に使ってみてもらって意見・感想をいただいたりしながら、「これならいける!」という方向に仕上げていかねばならないのです。
ところが、多くのプログラマーは、業務形態としての下請けかどうかは別としても、受け身の仕事をやらされすぎてしまい、自ら自発的に製品化にチャレンジするよりも、こなし仕事の癖がついてしまっているのです。こなし仕事では難題が立ちはだかることは「悪」ですから、「問題なく作ることができる目処がついてから相談して」となってしまうのです。本来は「難題こそ差別化のポイント」と考えるべきものなのですが。
さらに、そのような受け身の姿勢かどうかという基準以外でも問題だと感じているのが、「頭でっかち」問題です。もう少しわかりやすくいうと「批評家になってしまっている人が多い」のです。たとえば、誰かが製品化のアイディアをプロトタイプとして動かしてみせたとしましょう。そのプロトタイプにはビジネスチャンスにつながるような素敵なポイントが隠されていたりするかもしれないのですが、批評家はそういうところに目をつけるのではなく、「このコーディングスタイルはありえない」「技術的にありきたりだ・新規性がない」「異常系の配慮ができていない」などと重箱の隅を突っつくような批評をするのです。それならと思って「では、そういうことが言えるレベルの高い君がもっとすばらしいものを作ってくれ、あるいは仕上げてくれ」と話を振ると、「検討する時間を1ヶ月欲しい」などと言い出すのです。そして本当に1ヶ月与えたとしても「検討した結果、これこれこういう課題があり、それがクリアーできないので着手できていない」などと、「できない理由」を報告してくることになるのが大抵のパターンなのです。
同じように、「自分たちも製品化をプロジェクトとして取り組みたい」と言い出す人たちは、「まずは毎週定例ミーティングを開催し、製品のアイディア出しなどの議論を続ける」と言い、大体は数回開催した後に自然消滅するのです。
先日、大木さんが「社長になりたくて独立しました、という創業」という記事を書かれていましたが、まさに製品化プロジェクトも同じことになってしまっているわけです。本来は、「こんなアイディアを具体化したいから製品化させて欲しい」とあるべきですが、「製品開発プロジェクトを立ち上げれば良い製品が生まれるはず」となってしまっているわけです。まあ、このあたりはWIDEプロジェクトなどのアカデミック系に参加したときにも感じたことですので、どこでも同じような課題を抱えているのだと思いますが。
長くなってしまいましたが、そんな背景で、その方は社内プログラマーではなく私に声をかけてくださったわけなのです。もっとも、もともとはその方の上司が「その分野なら、小俣さんなら興味を示して取り組んでくれると思うよ」とその方に助言してくださったそうなのですが。相談いただいた瞬間に「それは面白い!私はこういうものを作ってきたので、これとこれを流用すればすぐにプロトタイプが作れます。すぐやってみましょう!」と答え、その方と一緒に、とってもスリリングな開発をご一緒できているわけです。
はっきり言って私のプログラミング技術は大したものではありません。当社メンバーからも「小俣さんのコーディングスタイルは今風ではない」などと馬鹿にされています。でも私には長年ネットワークプログラミングの現場を多くのお客さんとこなした経験があり、ノウハウがたっぷりたまっています。さらに、ブツブツ言いながら考えているより、とっとと作る方が好き、という性格のおかげで、荒削りでも動くものはすぐに作ってしまうので、一緒にやる方にとっては、アイディアがすぐに具体化してもらえて、進行がスピーディという大きなメリットがあるのです。
私が「とにかくすぐに具体化する」というスタイルになったのは、実はもともとの性格ではありません。私はプログラマーを始めた頃から販促も任されてきたので、お客さん・ユーザとのコミュニケーションが最初からあったのです。相手が何を望んでいるのかをコミュニケーションから得て、それに対応してきただけのことです。お客さんは「技術的に立派なもの」を望んでいるのではなく、「今、目の前にある課題を解決してくれること」を望んでいるのです。「今」ということと「解決」という点がポイントです。早くなんとかしたいと思っているということと、解決するまでやって欲しい、ということです。つまり、とっとと具体化してやってみて、評価して、ということを繰り返し、本当に解決できるという安心を早く欲しいのです。
昨日ご一緒した方も言っていましたが、多くのプログラマーというかエンジニアは、「出不精で、自分の殻に籠もりがち」です。しかし、それでは相手が何を期待しているのかがわからないのです。私はそうなって欲しくないので、当社メンバーにはお客さん対応や出張など、とにかくお客さんとのコミュニケーション機会を増やすように言ってきたので、「技術系の会社にしてはコミュニケーションが上手」とご評価いただくことも多いのですが、まだまだなかなか難しいものだと感じています。私がお客さんと話をしてきて「こういうものがあればすぐに評価したいと言っている。すぐにできない?」と声をかけても、なかなかすぐにできあがってこなかったりして、結局私が自分で作ってしまうことが多く、そうすると私が対応しなければならない製品がどんどん増えていってしまうという状況になってしまうのがジレンマです。まあ、エンジニアとは出不精な傾向があり、それを踏まえた上で有効に仕事をしてもらうという方が近道なのかもしれませんが、やっぱりお客さんと一緒に試行錯誤しながら製品を具体化していく仕事の楽しさは格別なので、そういう仕事の仕方も楽しんで欲しいのですよねぇ・・・。
「お客さんがエンジニアに求めているのは技術力ではなく実現力!」そして、上司がエンジニアに求めているのも同じ・・・私はそう考えています。