「ウォーターフォール開発の経験しかない。アジャイル開発を採用する企業への転職は可能?」「実務にはどんな違いがあるのか」と疑問をもつエンジニアは少なくありません。
この記事では、各開発手法の違い、メリット・デメリットなどを詳しく解説します。転職のイメージを描いたり、準備をしたりする際の参考にしてください。
ウィルオブテックでは4人に3人が年収アップに成功しています。転職サポートの進行満足度90.7%を誇るウィルオブテックが、あなたのモヤモヤを解決します!経験を活かして年収アップを目指すなら、ウィルオブテックにおまかせください!
無料のキャリア相談を予約するTOPICS
アジャイル開発・ウォーターフォール開発とは?
アジャイル開発およびウォーターフォール開発とは、ソフトウェアやシステムを開発するときの手法です。それぞれの手法についてどのようなものか確認しましょう。
ウォーターフォール開発
ウォーターフォール開発は、何を作るか要件定義し、要件や設計などをドキュメントに詳細に書きあげて、上流工程から下流工程まで順を追って開発する手法です。
工程は時系列に並んでいて、前工程へ後戻りすることはほぼないため、手順をがっちりと決めてから開発が行われます。すべての工程の最後にテストが行われて完成品ができあがるので、開発前に利用者のニーズを把握し、スケジュールをたてることが大切です。
アジャイル開発
アジャイル開発は、短く区切られた期間(スプリント)ごとに計画からテストを行い、PDCAサイクルを回して開発を進める手法です。利用者のニーズは言語化できない潜在的なものが多く、ソフトウェアを実際に使ってから気づきがあるケースが少なくありません。
アジャイル開発では、短い期間で素早く開発し、利用者に使ってもらい動向を確認して修正していきます。シンプルな機能を搭載したソフトウェアを一旦リリースした後で、機能の追加や修正をしてビジネス価値を向上させることも可能です。
また昨今では、ハイブリッド開発も登場しています。ウォーターフォール開発のスタートからゴールの全体の見通しがきく点と、アジャイル開発の段階的に改善を図ることができる点を組み合わせ、両者のメリットを取り入れた手法です。
「福祉業界からIT業界にキャリアチェンジ。モダンな開発経験を積めて、チーム単位でのアジャイル開発がかなう環境に転職を成功できた理由とは?」
ぜひ本記事とあわせてご覧ください!
ウォーターフォール開発のメリット・デメリット
ウォーターフォール開発は、全体像を明確にしてから、スケジュールに沿って開発を進めます。
ここからは、後戻りしない開発手法であるウォーターフォール開発のメリット・デメリットをそれぞれ解説します。
メリット:全体のスケジュール管理が容易
ウォーターフォール開発の大きなメリットは、プロジェクト全体のスケジュールを管理するのが容易であることです。要件定義からリリースまでの計画を綿密に行うため、各工程の納期、必要な予算、プログラマーなどの人員も全体を通して事前に決定しやすくなります。
各工程でできあがる成果物(要件定義書、詳細設計書など)で明確な進捗状況を確かめることも可能です。
さらに、詳細な設計書がある開発手法なため、プロジェクトメンバー間のスキルに差が出づらい点も特徴です。一つひとつ計画的に安定してプロジェクトがすすむため、品質の担保がしやすいでしょう。
これらの点から、全体のスケジュール管理が必要な大規模なプロジェクトや、すでにリリース日やリソースが決定しているプロジェクト、綿密な計画に基づく品質保証が必要なプロジェクトなどにウォーターフォール開発は向いています。
デメリット:仕様変更時の負担が大きい
ウォーターフォール型で開発する際のデメリットは、仕様変更などがあった場合、開発メンバーの負担が大きくなる点です。ウォーターフォール開発では、前工程への後戻りがない前提で開発を進めます。そのため、途中で仕様を見直すことになった、もしくは抜け落ちなどが見つかった、などのアクシデントがあった場合、想定外の後戻りをすることになります。
想定していない後戻りによりコストがかさみ、納期も守れなくなる恐れがあるでしょう。後工程の期間が圧縮されるなど、開発メンバーにしわ寄せがくることも考えられます。
とはいえ、開発前に完全に要件定義をすることは難しく、完成品を実際に動かしてみないと発見できない不具合もあります。実際にリリース後に使用されない機能が出てきたり、利用者から不満の声が上がったりするケースも少なくありません。
何度も手直しが必要な自社プロダクト開発や、実装後に機能を追加予定の小規模開発には不向きの手法です。そこで、手戻りのリスクを考慮し、途中段階でプロトタイプを作成する方法や、ハイブリッド開発を採用するケースもあります。
アジャイル開発のメリット・デメリット
アジャイル開発は、短い期間でリリースし発注者のフィードバックを受けて開発を繰り返します。そのため、変化が早い現在のビジネス環境と相性がよく、採用する企業も数多くあります。
ここでは、アジャイル開発のメリットとデメリットを解説します。
メリット:仕様変更にも柔軟な対応が可能
アジャイル型は、計画・設計・実装・テストを短いサイクル(スプリント)でまわしていく開発手法のため、仕様変更があってもスプリント内を戻るだけで柔軟に対応できる点が最大のメリットです。
要件定義や設計が不確実な状態からでも開発をスタートできるだけでなく、スプリントごとに必要最低限で動くソフトウェアをリリースして試運転することも可能です。早い段階で発注者のニーズとのずれや利用者の行動パターンとのギャップなどが判明するため、ブラッシュアップしながら製品をつくりあげられます。
エンジニアにとっても、要件定義や設計書づくりに時間を割くことなく、自分たちで作業の配分を決めて開発作業に入れることはメリットといえるでしょう。さらに、すぐにテストができるため、開発工程をすすめていくうえで安心感へとつながります。
アジャイル開発は、要件がまだ定まっていない自社プロダクト開発や、少しずつ分割して開発していきたい小規模なプロジェクトの開発に向いています。たとえば、ECサイトやゲームアプリなど、ユーザーの反応をみながらUIやUXに改善を加えていきたい場合に適した開発手法です。
デメリット:高い管理スキルが求められる
アジャイル開発のデメリットには、スケジュール管理の難しさが挙げられます。フィードバックを受けて機能を追加・修正していく開発手法はメリットも大きいですが、想定していないタスクが計画に割り込む可能性もあります。途中でタスクが追加になる可能性を視野にいれてスケジュール管理をしたり、調整を随時したりするなどの管理スキルが求められるでしょう。
また、要件の変更やテスト結果による修正に対応するためには、スプリントごとのチーム内、およびチーム同士でのコミュニケーションが不可欠です。アジャイル開発は、ウォーターフォール開発に比べるとコミュニケーションが複雑になりやすい傾向があります。開発を円滑にすすめるためには、スケジュール管理能力に加え、高いコミュニケーションスキルを要求される点には、注意しなければなりません。
さらに、アジャイル開発では、エンジニアにも、技術だけではなく管理スキルが必要です。つまり、「エンジニアのスキルが偏っている」「経験やスキルが不足しているのでフェーズごとに専門のエンジニアを配置したい」などの場合、アジャイル型は向いていません。
開発規模にもよりますが、「要件が細部まで確定していて仕様変更がない」「既存システムのリニューアルのみ」などの場合は、ウォーターフォール型やハイブリッド型を検討しましょう。
アジャイル開発とウォーターフォール開発の5つの違い
アジャイル型とウォーターフォール型の開発手法の違いについて、以下の5つの点を確認していきましょう。
- 開発業務の種類
- 開発期間とその工程
- 作業範囲と必要スキル
- ドキュメントの品質
- エンジニアの給与水準
開発業務の種類
アジャイル開発は手戻りの多い小規模案件、実装後に機能追加や削除をしていく自社プロダクト開発に向いています。小規模で成果物の納品がないSaaSなどの開発に用いられるケースが多く、発注者から依頼を受ける場合は準委任契約を結ぶのが一般的です。準委任契約であれば完成義務が生じず、業務に対して報酬が支払われます。
一方で、ウォーターフォール開発はシステムの受託開発やSIなど、開発前に合意形成が必要なプロダクト開発に向いています。成果物の納品が必要な請負契約を結ぶのが一般的です。報酬額が決まっているため、コストを下げた分だけ利益につながります。
開発期間とその工程
アジャイル型の開発期間は、2週間から3カ月程度の場合が多いです。各スプリントの工程は実装・テストまで1~4週間など早く、開発スピードが重視されています。
スピード重視の理由は、「まずは必要な機能のみでもよいからリリースして顧客を確保したい」「ユーザーのフィードバックを得たい」などビジネス環境の変化への対応が挙げられます。ただし、テストの実行頻度が高く、細かな手戻りが多く発生します。
他方で、ウォーターフォール開発は最初に要件定義や設計を行い、しっかりと道筋を立ててから開発を進めて実装するので、機能数が増えるほど開発期間が長くなります。
リリースまでに数カ月から年単位までかかることも珍しくありません。各工程でテストを実行し次の工程へと進むので、基本的に前工程のテストは後で行われず実行頻度は少ないのが特徴です。
作業範囲と必要スキル
アジャイル開発でのエンジニアの作業範囲と必要なスキルは、プロジェクトの規模によって異なります。小規模なプロジェクトでは、担当となったスプリント内の工程すべてが作業範囲です。設計から保守までの技術的なスキルのほか、各スプリント間でのコミュニケーションをはかるスキルなど、さまざまなスキルが求められます。
中規模以上のプロジェクトであれば、複数のエンジニアで作業を分担することがあります。いずれにしてもプロジェクトメンバーには、これまでの経験を活かすなど、臨機応変に対応できるスキルが必須です。
その反面ウォーターフォール開発は、各工程で作業が分かれており、役割分担されているケースが一般的です。作業範囲は限定的で、作業に必要な開発スキルやコミュニケーション能力があれば、問題なくプロダクトを開発できます。
ドキュメントの品質
アジャイル開発でも要件定義書や設計書などのドキュメントを作成しますが、スピード感をもって開発がすすむため、詳細なドキュメントは作成されないことがほとんどです。言い換えれば、「実際の製品がすべてを物語る」とも言えます。
一方でウォーターフォール開発は要件定義や設計を綿密に行って、チームや発注者と合意形成を図ってから開発を進めます。ソフトウェアの開発が成功するための根拠が求められるので、丁寧な設計書が必要です。
エンジニアの給与水準
アジャイル開発のエンジニアの給与水準は、比較的高い傾向にあります。というのも、アジャイル開発は上流工程から下流工程の境界線が曖昧であり、必然的に一人ひとりの作業負担が大きくなる可能性があるためです。
さらに、経験に基づいた高いスキルに加えて、コミュニケーション能力なども求められます。それらを備えた人材を確保したい企業は、高い給与を保証するのです。
それに対して、ウォーターフォール開発のエンジニアの給与水準は、作りこむ必要のある要件定義・設計などのフェーズを担当した場合は高く、下流工程を担当した場合は低くなる傾向にあります。決められた設計書に基づいて開発を行うため負担が少ないと判断され、給与水準が低めに設定されています。
エンジニアとして通用する? 転職時に知っておきたい注意点
ウォーターフォール開発のエンジニアから、アジャイル開発のエンジニアへの転向を考える人も少なくありません。
その場合、エンジニアとして通用するかどうかは不安なところです。下記では、転職の際に注意しておくべきポイントを解説します。
市場の主流はアジャイル開発に移行
近年はデジタル・ビジネスの状況の変化が早く、ソフトウェア開発ではリリース後の利用者の反応を即座に反映させるのが一般的です。
長期間の開発時間を要するウォーターフォール型を採用する開発案件が減り、短期間で開発し、どんどんブラッシュアップできるアジャイル開発が主流になりつつあります。
上流から下流までの幅広いスキルが必要
ウォーターフォール開発のエンジニアからアジャイル開発のエンジニアへの転向を考えているなら、詳細な設計書がなくとも上流から下流工程まで対応できる高いスキルが必要になることを覚えておきましょう。
プロジェクトを正しく理解し、チームメンバーと意思疎通を図りながら役割を果たすことが求められます。
仕様の見直しが頻繁に起こる
ウォーターフォール開発に慣れていると、アジャイル型では仕様が頻繁に見直されるため、精神的な負荷がかかりやすくなります。これまでの「期日までにシステムを完成させ納品する」というマインドから、「いかに工夫や改善を施し、よりよいプロダクトにしていくか」という考え方へシフトしていくことが重要です。
このような開発手法の違いをよく理解し、適切にこれまで磨いてきたスキルや経験を活かせることができれば、転職は成功します。自身が求められることへの理解を深めていきましょう。
まとめ
アジャイル開発とウォーターフォール開発は開発期間や工程が大きく異なります。小規模な開発ならフィードバックと改善をこまめに繰り返すアジャイル開発、大規模な開発なら順序だてて作りこんでいくウォーターフォール開発が選ばれています。
ウォーターフォール開発からアジャイル開発を手掛けるエンジニアへと転職するなら、エンジニアとしての技術力のほか、タスク管理できるスキルや、コミュニケーション能力も磨くことが求められます。開発手法ごとに求められるスキルを把握し、身につけることが重要です。
ウィルオブテックでは4人に3人が年収アップに成功しています。転職サポートの進行満足度90.7%を誇るウィルオブテックが、あなたのモヤモヤを解決します!経験を活かして年収アップを目指すなら、ウィルオブテックにおまかせください!
無料のキャリア相談を予約するよくある質問
ウォーターフォール開発とアジャイル開発の使い分けは?
ウォーターフォール開発は、発注者と開発者の合意形成を図り開発を進めるので、スケジュール通りに進みやすく、品質も担保しやすいことから規模の大きな開発に向いています。一方で、アジャイル開発は、反復的に開発とフィードバックを繰り返して開発が進むので、最小限の機能でまずはリリースしたいなどの小規模開発向きです。
ウォーターフォール開発とアジャイル開発の割合は?
Digital.aiのレポートによると、海外市場でのアジャイル開発採用率は、2020年の37%から2021年の86%に一気に増加しています。また、ガートナージャパンの調べでは国内の採用率は2018年5月時点で17%でしたが、拡大傾向が強く、アジャイル開発を採用するj割合が大きく上昇しています。
国内のエンジニア求人に関しても、数値にあらわれています。ウィルオブテックが公表している求人データによると、ウォーターフォール開発とアジャイル開発のエンジニアの求人割合は、約1対4でした(ウォーターフォール開発が約90件、アジャイル開発が約390件)。アジャイル開発の方が4倍も求人数が多く、新たな人材が求められているということがわかる結果となりました。
※参照元:Digital.ai「State of Agile Report」(2021)
※参照元:ガートナージャパン「アプリケーション開発 (AD) に関する調査結果」(2019)
ウォーターフォール開発はもう時代遅れ?
アジャイル開発が主流になりつつありますが、ウォーターフォール開発が有効な場面もあり、決して時代遅れではありません。小規模な開発であれば、詳細な設計書がなくとも、実際の製品を前にプロジェクトをすすめられるので、アジャイル開発が有効です。
しかし、要件定義を明確にし、その後の計画をきちんとする必要がある大規模な開発などでは、まだまだウォーターフォール開発が選択されています。また、双方のいいと取りのハイブリッド開発も存在しており、ウォーターフォール開発が現役でなくなることは考えにくいです。