#アジャイルな開発
1.アジャイルな開発とは
主流であるウォーターフォール型の開発方法は、
要件定義、設計、実装、テストの流れを一回だけ行うのに対して、
アジャイル開発は、一度で全部を作ろうとはせず当初は最低限プログラムが動く程度の
機能を持ったものの完成を目指して各工程のチームが迅速に動きます。
とりあえず動くくらいのプログラムをもとに開発チーム同士やあるいは顧客と要件を
練りながら何度も各工程を反復する形になる。
<アジャイル開発が向いている状況>
アジャイル開発は例えるならプラモデルの骨組みだけ作っておいて、後でどのパーツを付けて
組み立てようかなという感じです。
ですので要望の変化することの多いインターネット関連の分野のプロジェクトや
要件が定まりにくいプログラムの開発には向いています。
例:モバイルアプリなど常に変化が激しいもの
<アジャイル開発が向いていない状況>
開発している途中だが、要件が固まっていて変わることのないプロジェクトや
大人数や大規模なプロジェクトには適していないとされています。
2.アジャイル開発のメリットデメリット
<アジャイル開発のメリット>
アジャイル開発のメリットはずばり不具合が発生した際の手戻りが少なく済むという点です。
従来のウォーターフォール型の開発方法は設計に忠実に開発を進めていき、設計がぶれることがないので
不具合が発生した場合の手戻りはとても多きいものでした。
トラブルの発生した箇所によっては戻る工数も多く、時間やコストも多大にかかります。
しかし、アジャイル開発の場合は細かく計画や設計、実装、テストを繰り返しているため
イテレーションを一つ戻るだけですみます。
→手戻りのダメージが少ない
また、計画時点で仕様をこれ!と決めないのでユーザーの意見から修正したり確認をしながら
開発を進めることができるのでうまくアジャイル開発を使うことができれば
ユーザーの満足度が高いプログラムを作ることができます。
<アジャイル開発のデメリット>
計画時点で厳密な仕様を決めていないので、開発の方向性がぶれやすいのがデメリットの一つです。
さらに良くしようとテストやユーザーのフィードバックから当初予定していた計画からずれてしまいます。
あらかじめウォーターフォール型のようにタスクの開発スケジュールを決めていないので各チームの
進捗具合の把握が難しく遅れが出ることが多々あります。
3.アジャイル開発とウォーターフォール型開発
アジャイル開発とウォーターフォール型開発について、メリットなどは2で述べた通りなのですが
結局どっちがええねん、となる方もいるでしょう。
筆者の経験を踏まえて両方の開発方法でよかったことや悪いことをまとめて比較したいと思います。
<アジャイル開発>
アジャイル開発は筆者はテスターとして参画経験がありました。
良い点としては自分たちのチームの工程に集中して仕事ができる点と、割と新規で参画した人でも
要件を見ることができるようなところです。
悪い点は、やはりアジャイル開発は変更が多発する開発方法なので想定外の仕事を割り振りなどが
発生することですね。
アジャイル開発で長年働かれているエンジニアさんからしたらそんなの当たり前だろうと
いわれるかもしれませんが、自分のタスクが終わって定時が来て帰ろうものなら容赦なくタスクが
その日期限で渡されました。
変更が多い、という特徴だけで定時に帰れている人は少ないわ、有給休暇がめちゃくちゃたまっている人
が多いわといった環境でしたので、筆者個人的にはあまり好きな開発方法ではありませんでしたね・・・
<ウォーターフォール型開発>
ウォーターフォール型開発は筆者はテスト、基本設計、処理設計、製造などの参画経験があります。
良い点としては、一つ一つの工程をしっかりして進む感じなのでバグがあまりでなく快適に感じます。
(実力者ぞろいなのも少しあるとは思いますが)
やはり悪い点は変更があった際の全チームが大ダメージを受けてしまうことですね。
設計や計画はがちがちに決まってしまっているからプログラム内部をリファクタリングしたりして
変更して対応したりしなければいけないのでてんぱってしまいますよね。
両者を比較すると筆者個人的にはウォーターフォール型開発のほうが良いなと感じます。
本当に筆者個人の感想ですが、アジャイル開発は絶対に終わらないリセマラ、リセットマラソンを
やらされているイメージでした。
私自身同じ工程だけを一生したい年ごろでもないのも原因の一つだとは思いますが・・・
全然アジャイル開発方法の良い現場も無数に存在するとは思います!
自分に運がなかっただけのようですね。