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

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

ソフトウェア製品開発販売を立ち上げられる人の資質

»

私はプログラミングの仕事を始めてから、20年以上になりますが、その間、基本的に「UNIX系OSでC言語を使ったプログラミング」をしてきました。とはいえ、その内容はかなり変わりました。

・CADシステム
・派遣・受託開発
・製品開発

CADシステムは、大学時代のアルバイトからでした。最初は楽しいと思っていたのですが、仕事になると楽しくない側面も多く(業界が閉鎖的、IT知識よりCAD業界知識が必要、など)、ビジネス的にもなかなか成功しなかったので、好きこのんでではなく、稼ぐために派遣に出されました。派遣もいくつか行きましたが、実につまらない仕事で、しかも、1つの仕事しかできないことが不満でした。受託開発は自社で開発できたので、複数の仕事を平行してこなせばかなりの稼ぎが可能でしたが、下請けならではのつまらなさも感じていました。とはいえ、この時期に様々な経験をした結果、自分自身はネットワークプログラミングが好きだということに気がつき、ネットワークプログラミングの仕事を積極的に選んで請けていたことが、良い勉強になったことは間違いありません。

その後、受託開発はこの先稼ぎにくくなると感じるとともに、自分自身も楽しく、また、他と差別化ができるような方向に向かわねばということで、製品開発販売へ切り替えてきました。ちょうどその頃から社長にもなっていたので、ますますお客さんに振り回されやすい下請け仕事は、できるだけ自分ではやらないようにしてきました。

こんな感じに、プログラマーとしての自分自身の仕事を、時代とともに変えてきたのですが、実は最後の難題がずっと私自身の頭の中で立ちはだかっています。

製品開発は基本的に私は技術的に目処をつけるくらいにし、メンバー達に仕上げや製品化・サポートを任せていくべきと考え、初期の製品はそうしてきました。しかし、私が一番好きで得意なネットワークの基幹に設置するような製品、たとえば「ProDHCP」や先日ソリトンさんからリリースされた「Smart BigCache」などのような製品は、メンバーに任せられていないのです。

メンバーの知識や腕が足りないわけではないのです。当社メンバーは非常にマニアックで私も全くかなわないほどの知識を持っている人も多いのですが、それでも任せられないのです。

ProDHCPやSmart BigCacheのような製品は、製品の不具合でシステムが止まってしまったりすると、非常に大きな問題になります。新聞に出てしまうくらいのレベルです。製品がしっかりしていることはもちろん、迅速なサポートも求められます。

私が思いつくポイントは以下のような点です。
・開発したソフトウェアに問題が限りなく少ないこと
・開発したソフトウェアの動作確認をしつこいくらいに行うこと
・ソフトウェアを動作させるOSやハードウェアまで含めた安定性・性能に気を配っていること
・ソースコードがメンテナンスしやすく、解析や対応が迅速に行えること
・投げ出さないこと
・常により良くしようと手をかけること
・客先にも積極的に駆けつけること
・パートナーさん、お客さんと良好な関係を築くこと
・製品に愛着を持つこと

注意しておきたいのは、これらは「プログラマーとしての資質」ではなく、「ソフトウェア製品開発販売事業を成功させるための資質」で、プログラマーの仕事は多岐にわたり、上記のポイントを満足していなくても大活躍しているプログラマーはたくさんいます。また、自らプログラミングをしない人でもソフトウェア製品開発販売を成功させている人もたくさんいますので、「自分でプログラミングもやるタイプでは」というかんじですね。

現状、これらをほぼ満足できるメンバーは種田君くらいしかいません。種田君はこれらの資質を持っているので、当社の重要な製品の1つであるゴルフ練習場向けシステムの責任者として活躍してくれていますので、さらに他の重たい製品も、というのはさすがに無理です。さらに、ゴルフ練習場向け製品は規模も大きいので、他のメンバーも種田君をサポートしていて忙しいのです。

ということで、結局「ProDHCP」や「Smart BigCache」は私が全部対応している状態なのです。まあ、仕方ありません。とはいえ、この先もずっとこの状態もどうかと考えているのです。。

実は上記のポイントのうち、技術的なところは本人の努力や周りからの指導で解決できるものがほとんどなのですが、「製品に愛着を持ち、投げ出さないこと」ができる人はなかなか難しいのです。

誰でも、自分が作った製品が世に出るのはうれしいものですから、開発している間はワクワクしながら積極的に取り組みます。ところが、世に出してみても、「評価されない」「批判ばかり」「使われない」という状態が続くと、簡単にやる気をなくして放り出してしまうのです。大きな会社ならそもそもそういう状態で製品開発にGOは出さないでしょうけれど。。

私は自分で何度も経験しているので良くわかるのですが、製品は、リリースしてもそう簡単に評価されるものではありません。特に日本では「実績が命」ということがあり、新製品は敬遠されます。それでも、自分で製品を愛し、売り込み、使ってもらって、批判を素直に聞いて対応し・・・ということを続けていると、本当に一人前の製品に育つのです。今でこそ国内でほぼ敵はない状態(?)のProDHCPですが、最初に特注品として開発してから、その案件以外で使われたのは実に2年くらい後です。その間、知り合いに「DHCPサーバを自作したよ」と自慢し続け、ようやくソリトンさんのNetAttestD3で使ってみようかというチャンスが得られ、ソリトンさんからの要求を組み込み、実績がなかったことから、金銭的にもほとんどこちらの利益は主張せずに、まずは使ってもらえるように交渉し、そのかわり、ソリトンさんの製品で採用されていると言わせてもらう許可をもらい、それをホームページなどで掲載してようやくProDHCPとしての問い合わせが少しずつ来るようになったのです。

それからも、案件があるたびに、改良を重ね、製品としてそこまでこまめに対応するか?と思われるほど、機能強化・性能向上を繰り返しました。構築現場にも足繁く通い、真夜中のリリースにも来て欲しいと言われれば可能な限り同行し、自分自身でも安心してリリースに立ち会えるようにしてきました。そして・・・いつの間にか競合製品にほとんど負けない製品になっていたのです。

冷たい意見もかなりありました。当時はまだWIDEプロジェクトに参加していて、WIDEの集まりで「DHCPサーバを自作したよ」と話しても、その真価を理解してもらえたのは亡くなってしまった萩野さん(itojun)くらいでした。

仕事でも製品でも同じなのですが、「愛着を持ってこだわり続けられるかどうか」が分かれ目だと思っていますが、なかなか難しいことです。少なくとも指示待ち型ではなかなか愛着を持てる仕事に出会える可能性が低いでしょうし、自発的でも、芽が出るまで辛抱強く続けられるかどうか・・・。だからこそ、その域を超えたものは本物になるのでしょうね。

Comment(0)