わかるブログ

人生の後半に向かっていくにあたり、自分の引き出しの中身を色々書いて一旦空にし、新たに学びを深めていかざるを得ない環境を作ろうと思って始めたブログ

大企業は文句を言わずウォーターフォール型開発をやってくれ

社内にエンジニアを抱えない大企業でも「アジャイル開発を行いたい」といった声が強くなっているが、余計なことを考えず、これまで通りウォーターフォール型開発をやってください、と強く思う

 

特に、ディープラーニングが登場し、AI革命が叫ばれるようになって以来、社内にエンジニアを抱えない非IT企業の担当者からも「より現場のニーズを反映したいいシステムを開発したいので、アジャイルに開発を行いたい」という声をよく聞くようになっている。しかし、ベンチャー規模の会社ならまだしも、大企業が外部ベンダーを使ってアジャイル開発を行うのは至難の業というか「ほぼ不可能」だと思っており、従来通りウォーターフォール型開発をやるべきと、いつも思う。

 

そもそもアジャイル開発とは何なのか。アジャイル開発という言葉もバズワードになってしまっていて、顧客は「柔軟に、仕様変更を受け入れながら開発していくこと」とか、「まずはMVPを作ってそれを進化させながら開発を進める事」と、何となくのイメージしか持っていない事が多いが、その本質は、リソース配分にあると理解している。つまり、御幣を恐れず言い切ると、

という事だ。アジャイル開発は、例えばエンジニア3人ならその3人ができることをやっていくのであって、納期に間に合わないから、とか、仕様が追加されたから、といった理由でリソースを足したりしない。

 

別の言い方をすれば、アジャイル開発とは「納品」という概念がそもそもない開発手法(もちろん各タスクの工数は見積もるし、ローンチ日も決めるのだが、いわゆる納品という考えはしない)、と言えるかもしれない。納品がないが故に、納品がもたらす様々な問題(例えば、人月で管理を行わなければいけないとか、バッファが入って高くなる、とか、先に要件定義を完璧にして見積もりを出さなければいけないとか)を回避しやすくなるわけである。

 

しかしながら、このアジャイル開発は大企業とは水と油であることが多い。なぜならば、一般的に大企業の組織構造・意思決定機構自体が「納品」という概念を必要としているからである。仮に担当者がアジャイル開発に非常に理解がある人でも、必ずボトルネックになるのが予算だ。予算という概念がそもそも、「何かを実行するために必要な費用」であって、システム開発の場合、その「何か(=どういったシステムを作るか)」を定義しなければ予算は取れない仕組みになってしまっている。例えば担当者が「経理システム作るんですが、アジャイル開発なので、どこまでできるかはわかりません。が、とりあえずリソース張るのに1億円下さい」といっても通るはずはない。具体的に何を、どういった期間で作るのかを決めろ、と突っ込まれるわけだが、それは要するにウォーターフォール型に開発しろと言われているようなものだ。

 

したがって、エンジニアを社内で抱えていない伝統的大企業は、おとなしくウォーターフォール型開発をやるべきと思う。その方がコストがはるかに低くなるし、中途半端にアジャイル開発をやるよりはよっぽど満足のいくシステムができる事が多いと思う。