オルタナティブ・ブログ > プログラマー社長のブログ >

プログラミングでメシが食えるか!?

製品開発は「本番で使ってもらうことを最優先に!」

»

仕事でプログラムを作るとき、特に、受託開発ではなく、製品などを開発するとき、さらに言えば、ネットワークシステムの製品を開発するときに、私がとても大事だと考えていることを書いてみます。

それは、「本番で使ってもらうことを最優先に!」ということです。製品として開発するとなると、半分趣味みたいに、自己満足的に作る人も多い気がするのですが、製品として使われるようになるためには、「どれだけ実績があるか」を真っ先に見られるものです。

特にネットワークシステムでは、本番ネットワークと同じようなトラフィックを作り出すことが事実上不可能ですので、「どれだけ本番で使われたか」という点はとても重要視されます。

問題は、「どうすれば本番で使ってもらえるのか」です。

・お客さんが困っていてそれを解決できるような製品を作れる場合
・親しいお客さんに頼み込んで評価してもらう
・代理店・販売店・パートナーなどの伝を頼る
・すでに実績があると強引にでっち上げて、使ってもらう

使ってもらう機会を得るだけでも、とても大変なのです。日頃から自分が取り組んでいることなどをしっかり発信し、信頼できる人脈があるかどうかが全てと言えるでしょう。

さて、使ってもらうチャンスが見つかったとなると、次のポイントは・・・

・すぐにみてもらうこと
 お客さんはいろいろな製品や情報を集めていますし、時間が経つと困っていることのポイントが変わってしまうこともあります。スピードはとても重要です。

・信頼してもらうこと
 完成して実績のある製品を使ってもらうわけではありませんから、お客さんの不安を取り除かないとなりません。なぜ心配しなくて良いかを、技術的にも、人間的にもきちんと説明し、納得してもらうことが大事です。

・万が一の時の対応も説明
 万が一システムが止まってしまったりしても、自動で復旧する仕組みや、あるいは、最悪の場合の手順をきちんと用意して説明します。さらに、なぜ問題になったのかを完全に解析できるように、ログなどの解析手段もしっかりしておきます。

このような配慮をしっかりした上で使ってもらわないと、かえって自分の評価を下げるだけになってしまいます。

当たり前のことばかり、と思うかもしれませんが、もう少し具体的に書いてみましょう。

・完璧な機能・性能・パッケージを実現してからではなく、まずは確実に動かす
 製品は自己満足で作るのではなく、お客さんの問題を解決するために作るものです。自分で完璧だと思っても、お客さんの求めているものと食い違っていることはしょっちゅうです。お客さんの求めているものは、お客さんに使ってもらわなければ分かりません。そのためには、「確実に動かす」ことが最優先です。「ここまでなら完璧に動く」という状態が理想です。「たぶん大丈夫」では、お客さんが新しいことを試す度にシステムが止まってしまったりして、触りたくなくなってしまいます。仕様面で未対応があるのは分かっていれば良いのですが、バグで死んだりするのは駄目です。

・正直に
 頑張って隠したり、嘘をついたりしても、システムは正直なもので、ボロが必ず出てしまうものです。最初からお客さんの胸を借りるくらいの気持ちで、状況を素直に説明する方が後々うまくいくものなのです。人間関係の信頼度を上げることはとても大切です。

・すぐに対応する
 動きがおかしいなどの連絡が来たら、当たり前ですが、すぐに対応しなければなりません。すぐに対応できるような準備が大事です。ネットワークシステムは再現が非常に難しいことが多いので、確実に調査できるログはとても重要です。プログラムの読みやすさももちろん大事です。

このように、とてもたくさんの気配りをしながら、本番で動かした実績を積み上げることで、胸を張って世の中に売ることができる製品に育つのです。

プログラマーなら、自分独自の製品やサービスを作って世に問いたい、と思う人も多いことでしょう。そして多くの人たちが、考えたり作り始めたりするものです。ところが、多くのものが世の中に出てこないのは、自分(たち)だけで製品のレベルを決め、「まだ不十分だから見せられない」とかやっているうちに時間ばかり過ぎてしまったり、ようやく仕上がったと思っても、お客さんに見てもらったら「そうじゃなくて、こういうものが欲しい」と言われたり、「そんなものはもう既にある」と言われたりするのです。そこまで頑張ってしまってから方針転換するのは気分的にもソースコード的にも辛いのです。基本部分ができたら、とっととお客さんに見てもらう方がはるかに確実に「求められる製品」に近づくことができるのです。

一番大事なことは「プライドを棄て、お客さんの胸に飛び込む気持ち」だと思います。どれだけ自分で完璧を目指したと思っていても、実績が少ないプログラムは多少なりとも問題が出るものです。それを恐れていては、いつまでも実績はできません。人間関係作りに最大限配慮しながら・・・それでも叱られることもあるでしょう。でも叱ってくれるうちは大丈夫です。育てる気持ちがあるから叱ってくれているのです。本当に嫌になったら無視されます。

その次に大事なことは「スピード」。その次が「信頼性の高いプログラムを心がける」ことでしょう。製品によりますが、ネットワークシステムの製品などでは「機能や見栄え」はずっと優先順位は低いのです。それよりも「解決できるか」「実績はあるか」「信頼できるか」なのです。「かっこいいソースコード」はそもそもユーザには何も分からないものなので、論外!?

私が、家族旅行にも仕事環境を持ち歩き、いつでも可能な限りすぐに対応することや、国内の遠方でも客先の現場にも通ったり、徹夜で立ち会ったり、バンコクにも頻繁に行く理由は「製品を本番で使ってもらう」時に、何か問題が起きてもすぐに対応するためであり、顔を合わせることで関係者やお客さんとの信頼関係を築きたいからなのです。製品は使われることで育つのです!

Comment(0)