システム開発ベンダーの選定について
今回もクライアント様の悩みの種である内容です。
よつば情報システムの提供するサービスと密接に関係する内容となるため「どうせ大手批判なんでしょ」と受け取られるかも知れません。
そこは皆様の主観にお任せ致しますが、ここで書いた内容とご自身の経験とを照らし合わせて最終的に判断して頂きたいと思います。
まず結論から書きますがシステム構築において会社の大小は「ほぼ」関係ないと思います。
差が出るとすると「会社の倒産を含め何かあった場合の保障を担保する」部分だと私は考えます。
では何故開発フェーズで差が出ないのでしょうか、端的に言ってしまうと「どのSEにあたるかは会社の大小に関わらず運任せである」からです。
業務系システムを開発する場合ほとんど設計は個人が行い、作成された仕様書に従い1人以上のプログラマーが制作を行います。
そして出来上がったものをまた設計したSEがテストし不具合や仕様と違う場合は直してもらうのが一般的です。
従って良いシステムになるかどうかはプログラマーの質ではなくSEの質に左右されます。
そしてこのSEのチェンジは余程(致命的なミスなど)の事が無い限り難しいです。
更に腕の立つSEは大型案件に投入されるのが普通です。
という理屈で「運任せである」と結論付けました。
ではクライアント様としてどう目利きしたらいいのかですが。
良いSEの条件は色々ありますが私は下記の要素と考えます
・誠実であること
・業務をちゃんと理解していること
・クライアント様が気が付かなかった問題点・改善点を提案できること
・自身のエゴや想像を押し付けない、利益を優先しないこと
・極力平易な言葉で説明しようとすること
僭越ながら逆にクライアント様側も良いシステムを作り上げるため下記の努力をされる事をお勧め致します。
・問題になっているなど改善したい点を正確に情報共有する
・システム化したい業務だけでなく周辺の関連する業務についても情報共有する
・不都合な事実を隠さない
・理想を語る
・わからない事は「わかりません」と訊く
最後に「会社の倒産を含め何かあった場合の保障を担保する」についてですが。
全てのベンダーがそうとは言い切れませんが、私の知る限り大手と呼ばれるベンダーであってもドキュメントが残っていなかったり担当者が辞めた後に継承されていなかったりというケースは多いです
何故でしょうか
それはそもそも開発スタッフを自社で抱えていない事が多いからです、多くのケースで下請け会社に委託しています。
SEやプログラマーは「腕で食べていく職種」なため非常に流動性が高く、会社で抱える事自体リスクと考えられているようで、丸ごと下請け会社に投げる方がビジネスリスクが少ないですよね。
そういう意味で自社内にノウハウの蓄積がなく「ベンダーが商社化している」と揶揄される理由となっています。
ちなみにスクラッチ開発などの契約をする場合、開発の請負契約を「準委任契約」で提示してくるベンダーは要注意です。
準委任契約は瑕疵担保責任もなく期間契約のため、悪質な場合完成しないで期間が過ぎた時「契約期間外です」と打ち切られたり、意図したものと違う物が完成して修正を依頼しても「瑕疵担保責任は契約上ありません」と言われる可能性が出てきます。
以前別の記事で触れましたがシステム開発契約はベンダーに不利な判決が出ている事もあり、ベンダー側としてはリスクを軽減したい気持ちは理解できなくもないですが、これは準委任というものの濫用だと私は思います。
また準委任はベンダーが下請け会社を使おうとした場合クライアント様側の承諾が必要になります。
悪気があるかどうかは別にしてこれを知らないベンダー営業は多いです、お気を付けください
参考までに正しい契約と流れはこうなるはずです(2までは無償にする場合もあります)
1.システム要件定義 – 準委任契約
2.お見積り
3.システム開発契約 – 開発請負契約
4.完成後瑕疵担保期間
今回は以上となります、皆様にとって納得いく選択ができるご参考になればと思います
【今回の補足】
・SE : システムエンジニアの略語、ここではシステムの上流工程を担う人として書いています
・上流工程 : システムを開発するにあたり「どんなシステムにするか」を設計すること、それを下流(プログラム開発)工程に渡します
・スクラッチ開発 : システムを1から作り上げる事
・準委任契約 : 「いついつまで」という期間内に指定の業務を行うという契約、瑕疵担保責任はなく下請けも依頼主からの承諾がないとできません
・請負契約 : 目的物の完成を目的とした契約、瑕疵担保もあり、ベンダー側は下請を任意に使えます
・瑕疵担保 : 完成したシステムに不具合がある、ベンダー側のミスで意図していた物と違う場合に直してもらうための保障