圧倒的なスピードでソフトウェアをつくる
ソフトウェアをいつまでも一人で作るのは限界があると,たまに言われますが,私がたどり着いた答えは,ソフトウェアは独りで全て作るのが一番です. もちろん会社として,もっともっと大規模なシステムを展開していくとすると,いずれ限界は来るかもしれませんが,弊社が作っているのは,金融システムでもなく,組み込みのリアルタイムシステムでもなく,業務用アプリケーションですので,ガチガチのソフトウェアエンジニアリングに則る必要はないと思うのです.
教科書的なソフトウェアエンジニアリングでは,要求仕様から始まって,外部設計,詳細設計,コーティング・・・とインプットのための設計を行い,次の工程のためのドキュメントを準備して,打ち合わせして,ようやくコーディングして・・・という流れとなりますが,結構この間接経費って無視できないです.そもそもドキュメントを整える意図としては,他の人に設計意図などを伝えるのが主です.しかし,全て独りで作るとなると,結局はアウトプットとして重要なものはソースコードですよね.どれだけ時間をかけて,完璧な仕様書を作ったとしても,不具合のない意図通りのソースコードができないと,意味がないです.それに,完璧だと思っている仕様書でもソースコードを作っていると,変更点が多々出てきます.そのたびに仕様書を修正していれば,時間がいくらあっても足りないです.
ただ,仕様書を一切残さずに作ったソフトウェアは,もちろん保守も独りでしないといけないです.なぜなら成果物としてあるのはソースコードだけなので,それを設計思想が共有できていない他の人が触れるはずがないです.修正したつもりが必ず考慮漏れの事項が出てきて不具合を埋め込まれてしまいます.それに保守って,大きく根本から機能を作り直すようなこともでてきます.そうすると保守といいながら,新規開発も行うので,やはり自分で構築していかないと品質が担保できないです.
これが,一人起業で圧倒的なスピード感でソフトウェアをリリースする方法だと思います.ただ,会社が大きくなってくるとそのうち限界がくるかもしれませんね.そもそもソフトウェアが一人の人間に依存しすぎているのはリスクが大きすぎますので.しかし,ひとまずはこのままで品質の高いソフトウェアを最速でリリースしていきます.
ちょうど,弊社ソフトウェアの不具合と機能追加を対応していて,土日昼夜関係なく作りこんでいて,ふと思いました.もう少しでソフトウェアの対応が完了しそうです.乞うご期待.