要件定義・設計・実装の全部が必要です

結論

  • 上流工程がプログラミングよりも価値がある時代は終わった
  • 要件定義・設計・実装を全て出来るようにならないといけない

アジャイルが主流に

tech.nikkeibp.co.jp

上の記事にもあるようにアジャイル開発が大手SIerでも採用されるようになってきた。これは大きなパラダイムシフトが起きようとしている。なぜならウォータフォールからアジャイルに開発手法が変わったというプロセスだけの問題ではない。エンジニアの能力として価値が変わることを意味する。
実際にアジャイルで開発したことがある人ならば分かるが、ウォータフォールとの大きな違いとしてアジャイルでは要件定義・設計・実装を一人でこなす必要がある。もちろん苦手なところに関しては誰かに手伝ってもらうことは可能だが前提として一人で全て出来ることが望ましい。反対に今までのウォータフォールでは要件定義・設計・実装が企業もしくは別々の担当者であっても分業が可能であった。そうなると顧客に一番近いところである上流工程がお金を一番生みやすくなり、上流工程にいくことが価値があることだと考えられてきた。そのため、プログラミング自体に大した価値はなく軽視されてきた。
しかし、アジャイルになると要件定義・設計・実装の作業は密結合するため分業するよりも各人が一気通貫で開発するほうが効率が良くなる。

ウォーターフォールがリスクに

また別の記事がある

this.kiji.is

要するに外部環境が急激に変化する可能性があるため中止したという内容だ。ビッグバンでシステムを入れ替えすることがリスクになることを示唆する重要な記事である。ただ、今までユーザー企業にもウォーターフォールで開発するメリットが大きかった。それはユーザー企業が解雇規制があるためエンジニアを常時持つことにリスクがあったのだ。そこで、ベンダーがエンジニアを一定期間貸し出すことでそのリスクを回避することが出来た。しかし、上記の記事にもあるように外部環境の変化によってシステムが使い物にならないリスクよりもアジャイルで開発していく方がリスクが低い時代になる。

また、解雇規制も緩和されるのではないかと考えている。
news.tv-asahi.co.jp

今後、賃金は高いが解雇しやすい正社員が増えれば上記の問題も解決する。それは派遣や業務委託と何が違うのというのもあるが。。

上流工程だけでは危険

以上のようなことを考えていくと特定の会社・業界の業務知識に特化するというのはかなりハイリスクな選択となる。また、プログラミングは東南アジアなどの賃金が安いエンジニアと競合するという反論もあるが今いちピンとこない。これは、明らかに要件定義・設計・実装を疎結合に考えている発想だ。実際、その仮説が正しいのであればシリコンバレーで賃金の高いエンジニアを雇うのではなく、インドのエンジニアに外注した方が安いのにそうはなっていない。つまり、同じ英語圏であっても外注してスピードを保ったまま開発するのは難しいことがわかる。

まとめ

正直、アジャイルウォーターフォールのどちらが優れているという議論にあまり興味はない。*1
ただ、どちらの開発手法が主流になってどのように変化するというのは気をつけた方が良い。上流工程がプログラミングよりも大事だと力説する人は大抵おっさんだし、それを信じてしまうとやばくなるよという記事でした。

*1:実際にアジャイルも万能ではなく、週2日と週4日しか働けないメンバーがいた場合はアジャイルでスプリントを回すのが大変になってくる。その場合は、ある一定のタスクを渡してウォーターフォールで進めていく方が互いに楽だったりする。