2017年3月6日

【コンサルタント散歩】

~スクラッチ開発において、どの機能から開発を行いますか?~

皆さんは開発工程を進めて行くにあたり、どのような機能から開発を行いますか?大雑把に機能を以下の3つに分けてみました。

① 難易度が高い機能

② 難易度が低い機能

③ 外部連携機能

筆者が経験した中で、「②難易度の低い機能」から開発を行っているプロジェクトは遅延していることが多いように見受けられます。では、何故「②難易度が低い機能」から開発を行うのか?それは「開発初期のオーバーヘッドがある中で進捗を上げることができる」ことが一番大きいのではないかと考えられます。しかし、序盤は進捗が順調ですが、開発工程の中盤に差し掛かった際にスケジュールを確認すると、「①難易度が高い機能」や「③外部連携機能」しか残っていません。ここで問題がボロボロ出てくると目も当てられなくなります。

例えば、「業務要求の抜け」や「外部インターフェースの齟齬」等の問題が起きるとその機能はほぼ遅延します。どちらも仕様を確定するためには時間を要するからです。この後は皆さんもお察しの通り、「問題を解決したいが時間がない!時間がないなら徹夜しよう!そうしよう!二交代制にしよう!そうしよう!」とよく分からないハイテンションになり、デスマーチとなります。

そうなるリスクを少しでも減らすために 「①難易度が高い機能」→「③外部連携機能」→「②難易度が低い機能」の順に開発する必要があります。

最初に難易度の高い機能を選んだのは、ファイルの入出力やDBの参照や更新、帳票出力等を網羅していることが多いため、他機能の開発においてプロトタイプとなります。これにより、三者三様の作りにならず、品質の高い開発が行えます。また、障害が発生した際にも序盤に開発を行っているため、リカバリが行える時間の猶予ができます。次に外部連携機能ですが、何か問題があった場合に自領域内で解決することはできません。解決するには連携先の担当者と日程調整を行った上で打合せを行い、仕様を詰めなければなりません。また、Q&A表でのやり取りを行った場合は、回答期限として約1週間後に設定する等、どちらの方法も時間を要します。

「①難易度が高い機能」、「③外部連携機能」を開発工程の序盤に開発することにより、内部スケジュールでは遅延しますが、全体スケジュールとしては遅延しない可能性が出てきます。繰り返しになりますが、「①難易度が高い機能」と「③外部連携機能」を後回しにして、問題が中盤以降に発覚した場合には、全体スケジュールが遅延する危険性があるということです。是非、皆さんも目先の進捗にとらわれるのではなく、今後を見据えて開発機能を選定して頂ければと思います。

2017年3月