業務システムとパッケージソフト開発の違い

ふと思ったので備忘録。


前職では業務システムの受託開発、現職では自社パッケージソフトの開発を経験して思うこと。

違いは色々ある。もちろんビジネスモデル自体が違うんだけど、
エンジニアにとっても結構違う。


業務システムの受託開発を行う場合、
ソフトウェア要件を決めるのは顧客。
たとえシステムのドメインに入らないと思われる機能でも
顧客要求があれば含める。
開発プロセスは顧客側の管理や契約がシンプルになるWaterfall。
基本は要件定義、設計までして開発委託している会社にコーディングを依頼、
できあがったものをテストするという流れ。
バグを出さないという意味での品質要求は非常に高いが、
ソフトウェアの設計、コード自体の品質には重きをおかない。
顧客ありきなので成果物としてコードや実行バイナリだけでなく、
ドキュメント自体にも重きをおかれることが多い。


一方自社でパッケージソフト開発を行う場合、
ソフトウェア要件を決めるのは自分達。
パッケージとして必要な機能のみに機能を絞り、
パッケージとして持つべきでない機能は排除する。
開発プロセスはインクリメンタル開発。
ひとまず技術の机上検証が終わったら速攻プロト作成。
2人でソースをいじりあい、指摘しあうXPライクなこともする。
要件を決めるところからコーディングまでを同じ人間が担当することが多い。
開発後初期では定期的にソフトウェアの拡張開発が
行われるため、設計、コード自体がきれいでないと、
後でひどいことになる。
もちろんバグもだめだが、と言ってもバグは出るものなので、
優先度が低ければ結構後回しにして放置しておくこともある。
開発、設計に関するドキュメントは情報シェアの目的のため、必要最小限の
もののみ作成。
逆に各種マニュアルは時間をかけて作りこむ。


うーむ。

双方楽しいところや伸びるスキルが違うので、エンジニアになったからには
どっちともできてよかったなと思う。