ライブラリ化による再利用のために

ソフト開発の効率化は会計処理改革から(修正版) - プログラマーの脳みそ
経営者が自社ライブラリの開発に予算を割きたくない理由 - 売り切れました
SIerがソフトウェアの再利用ができない理由 - プログラマーの脳みそ
採算のとれないライブラリに客が金を払うのか? - 売り切れました
の一連の議論の続き。

ライブラリ化の価値は?

実際、SIをしながら共通利用できる部品ができあがっていき、最終的にそれが単体で製品となることはある。
しかしそれを計画的に行おうとすると、結局はパッケージソフト開発と同じようなリスクを背負うことになる。 しかもマーケットは「自社開発プロジェクト」にしかないとなると、そう簡単にGOが出せるものではない。
プログラマーにとっては当然、経営者にとってもハイリスクローリターンだ。

採算のとれないライブラリに客が金を払うのか? - 売り切れました

 ここは意見が衝突する部分だが、私は「ローリスクハイリターン」だと考えている。むしろ、通常のSIが「ハイリスクローリターン」だと評価している。

 いわゆる人月商売は、労働時間を基準として定額をピンハネする商売だが、旨味は少ない。リスクに大きく影響するのは品質なのだが、これがどうにも計測しにくいという事情があって、あまり顧みられていないのが実情だ。なんせそういった商売のもとで働く労働者としては労働の牛歩戦術が最適解なのだから、質の向上や生産性の向上に対する動機づけが弱い。むしろ手抜きしてサボるほうが儲かる契約なんだから。

 プロジェクト成功率が30%*1というSI業界がハイリスクなのは当然として、さらに労働の牛歩戦術と戦わなくてはならない。パッケージ売りはうまくすれば開発費を回収してその何倍もの利益があがる可能性があるが、SIではそんなのは夢幻だし、プロジェクトがどうにも行き詰まって、契約不履行となって賠償を迫られる可能性もある。だからと言って外注工費を払わないなんてこともできないし、失敗する時は大損だ。

 ミドルウェア的なものを作るというのは、初期に投入する開発資金を回収できない可能性があるという意味ではハイリスクだが、採用件数が増えればライセンス料が開発資金の何倍も入ってくる可能性があるという点でハイリターンだ。SIをやりながらパッケージソフトの開発と同じようなリターンを得ようというのである。

そのリスクは

 パッケージソフトの開発は、開発費を回収できないというリスクを常に背負う。損益分岐点として何本売れたら回収できるかを当然ながら考えることだろう。

 もし、あらかじめ予約が入っている状態でスタートできるなら、このリスクは大幅に軽減される。受注生産が可能なら、少なくともその本数分売れることが確定しているのだから、損益分岐点をクリアするハードルは下がる。

 2本のプロジェクトで同様の要求があったとして、その部分をライブラリ化することを考えよう。

 それぞれのプロジェクトからライセンス料1000万を得て、2000万の開発予算を与えられるとする。それぞれのプロジェクトは2000万相当の代物を1000万のライセンス料で得られるのだから、1000万円の得である。ライブラリ開発プロジェクトは2000万の開発費に2000万のライセンスでとんとん。会社としてはトータル2000万の得である。

 もともとプロジェクトごとにばらばらに2000万ずつかけて作ろうとしていたものが一本化されたら2000万の得。単純な話しだ。

 2本の開発で共通化できるところを共通化しただけでコレだ。リスクは小さい。作ったライブラリが以後も活用されれば利益はどんどん上がるのだからリターンも大きい。もちろん、ミドルウェア部分に大金をつっこんで、ライセンス料を大幅に引き下げればリスクは上がるが、その辺はうまくバランスしてねとしか言いようがない。

プログラマの嬉しいこと

経営者からすると「資産として管理し活用する」とはそういうことだ。
プログラマーにとって何かおいしいことでもあるのだろうか?

 凄く単純な話なのだが、経営者が「経営的に嬉しくないことをする社員を評価」するだろうか?

 人月商売の因果なところは、技術はカネにならないことである。顧客からの支払いが得られる前提があるのであれば、プロジェクトがデスマーチになれば儲かる。とくにSIの中間業者や下請けは顧客からの支払い拒否のリスクが軽減されるので、人月商売をやっている奴隷商人にしてみれば、プロジェクト燃えないかなーというのが本音だろう。そんな商習慣の業界なんだからブラック企業も多いし、人月の嵩上げのための頭数要員であるプログラム能力のないプログラマ(笑)とかSE(笑)が跋扈しているのだ。

 悲惨なのはそんな業界に発注する顧客である。

 プログラマがその待遇を改善したければ、プログラマとしての良い仕事が会社としての利益に結びつかなければならない。じゃぁ、技術をカネにするにはどうしたらいい?そういう視点でソフトウェアの再利用性を見てはどうかと私は提言するのである。

 プログラマってのは技術者のはしくれなのだから円滑にプロジェクトが進み、いいものを作ったと誇りたいことだろう。でも会社がそれを望んでいないのだとすれば、余計なことをするなだし、そんなやつを評価してボーナスをはずむこともしない。

 プログラマがいいものを作っていい待遇でいられるようにするには、プログラマの利益と会社の利益を一致させる必要がある。プログラマがいい仕事を気持ちよくでき、会社が利益を上げることができ、顧客がよいシステムを手に入れられる。そんな世界を私は望む。

*1:遅延せず、予算超過せずに終わるのが30%ということ。別に残りの70%は何も成果が上がらなかったというわけではない