調査期間・担当
調査期間:2020年11月
担当者 :H.I
目的
システム開発において、知見のない開発(知見のない言語等の技術スタックでの開発)を行う際の心構えについて何が必要か調査を行った。
調査内容
知見のない開発を行うか否か
システム開発を行う上で、知見のない技術での開発に迫られる場合がある。
その際に、その開発を行うか否かの判断が必要となる。判断の基準は以下のとおりと考える。
- システム開発を行うべき条件
◦システム開発チームにとって、将来的に必要となるであろう技術である
◦システム開発を行うことで、継続的な開発や案件が獲得できると想定される
◦システム開発を行うことで、チームが保有する技術に対しても相乗効果がもたらされると想定される
◦リスクを含めたコストで実施できる場合
- システム開発を見送るべき条件
◦システム開発チームにとって、将来的に不要な技術である
◦単発的な開発で、継続開発や案件獲得が見込まれない
◦リスクが高く、コスト的に見合わないと想定される
しかしながら、見送る条件に合致する案件でもシステム開発を実施しなければならない場面が多々あるのも事実である。
知見のない開発に対する不安
知見のない技術でのシステム開発を行う際の不安内容として以下にあげられる。
- そもそもグループにノウハウがないため、設計・コーディング等ができるのか?
- 作業工数見積りができない(ノウハウがないため、生産性の実績がない)
- 品質を確保できるか?
上記の不安要素を解消する取り組みやリスクヘッジが必要となる。
不安への取り組み
不安解消への取り組みとして、以下の対策が考えられる。
- ノウハウに関する不安
◦知見のあるメンバーの投入(外部パートナーの投入)
◦事前に技術的な学習による知識習得
- 工数見積りの不安
◦新技術での生産性を調査し、ノウハウがある技術の生産性と比較して工数を算定する
◦リスク等を考慮し、バッファ工数を想定しておく
- 品質確保の不安
◦テスト設計の重要性を知る
また、システム開発が開始されてからは実戦でしか得ることのできないノウハウが多々あるので、ノウハウの収集→改善を繰り返し、走りながら学んでいくことでチームの技術力が向上する。
リスク&コスト
知見のないシステム開発を行うには、不安解消の取り組みやリスクヘッジが必要となることから、ノウハウがある技術でのシステム開発より工数が多くなる。
したがって、知見のない分コストがかかることを認識すべきである。また、事前に不安解消の取り組みを行ったにもかかわらず、工程が進むにつれ、想定外の壁が出現する可能性もあるため、常にリスクへの対処方法を想定しておくべきである。
まとめ
知見のない技術でのシステム開発は、理想論を言えばメリットがある場合のみ実施すべきと考えるが、現実は政治的なしがらみ等から実施せざるを得ない場合がある。
上述の「システム開発を行うべき条件」に合致した案件であればメンバーのモチベーションも維持できるが、「システム開発を見送るべき条件」に合致するにもかかわらず、開発を行わざるを得ない場合は、メンバーへの今回の開発の必要性などの動機付けが必要となる。
知見のないシステム開発では、いかに不安要素の除去とリスクヘッジができるかがポイントであるため、できるだけリスクを減らす対処をすべきと考える。