プロジェクトを超えて資産に残すもの

以下一連の話題を通して、

ソフト開発の効率化は会計処理改革から(修正版) - プログラマーの脳みそ

経営者が自社ライブラリの開発に予算を割きたくない理由 - 売り切れました

SIerがソフトウェアの再利用ができない理由 - プログラマーの脳みそ

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

ライブラリ化による再利用のために - プログラマーの脳みそ

ちょっと実体験を元に提言。

一番おいしいところをいただく

 ソフトウェア部品の再利用に当たって問題点をいくつか挙げてきたが、これらを回避できる資産がある。
 それは「開発プロセス」。

 開発のための環境構築から、開発者同士の連携方法、クライアントとのコミュニケーション方法、テストの進め方、バージョン管理方法、等のこと。
 もっと直接的に言うと「ソースコードを書いていない時間の使い方」だ。

 ほとんどのエンジニアは、この部分にかかっているコストを把握できていない。

 おそらくソースコードを書くこと以外は不得意だからだろう。*1
 ならばこそ、不得意なところをサポートする「開発プロセス」は資産としての価値はライブラリに比べより大きいと言えるのではないだろうか?

ライブラリに比べての利点

1.陳腐化が遅い
 若干のペースダウンはあるとはいえ、やはり技術の世界は進歩が速い。
 たとえば一昔前であれば、携帯向けサイトの開発を行っていた会社では絵文字関連のライブラリを自社資産としていたのではないだろうか? それは今でも優位性が保てているのだろうか?

2.再利用性が高い
 ライブラリはほぼ確実に言語依存する上、下手をすると要件にまで依存してしまう。
 開発プロセスは、要件依存は小さく、うまく作れば言語依存もある程度回避可能だろう。

3.作成コストが低い
 ソフトウェアに比べて「テスト」と「デバッグ」が簡単。
 論理的構築物としてみるなら、プログラムにくらべてはるかに単純な構造。
 しかも、開発プロセスに齟齬があってもクライアントへ影響が出る前にワンクッションある。

4.ライセンスとか納品とか考えなくていい
 というか納品されても困る。

5.保守、運用が楽
 どの客にどのバージョンで納品してたっけ?
 バグがあるけど仕様化しちゃって直せない。
 このソースって勝手にいじっていいんだっけ?
 どこにおいてあるのが最新だっけ?
 こら! かってに持って出るな!

 ってな悩みとは無縁でいられる。

欠点

1.売りにくい

具体例

は、後のエントリーとする。

*1:偏見です。